- hv: hypervvssd: call endmntent before call setmntent again

OBS-URL: https://build.opensuse.org/package/show/Virtualization/hyper-v?expand=0&rev=112
This commit is contained in:
Olaf Hering 2015-04-30 11:26:11 +00:00 committed by Git OBS Bridge
parent a4562a9fe2
commit 7259a4ff7b
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Thu Apr 30 11:25:47 UTC 2015 - ohering@suse.de
- hv: hypervvssd: call endmntent before call setmntent again
-------------------------------------------------------------------
Thu Apr 16 15:23:18 UTC 2015 - ohering@suse.de

View File

@ -82,6 +82,7 @@ static int vss_operate(int operation)
char match[] = "/dev/";
FILE *mounts;
struct mntent *ent;
char errdir[1024] = {0};
unsigned int cmd;
int error = 0, root_seen = 0, save_errno = 0;
@ -116,6 +117,8 @@ static int vss_operate(int operation)
goto err;
}
endmntent(mounts);
if (root_seen) {
error |= vss_do_freeze("/", cmd);
if (error && operation == VSS_OP_FREEZE)
@ -125,16 +128,19 @@ static int vss_operate(int operation)
goto out;
err:
save_errno = errno;
if (ent) {
strncpy(errdir, ent->mnt_dir, sizeof(errdir)-1);
endmntent(mounts);
}
vss_operate(VSS_OP_THAW);
/* Call syslog after we thaw all filesystems */
if (ent)
syslog(LOG_ERR, "FREEZE of %s failed; error:%d %s",
ent->mnt_dir, save_errno, strerror(save_errno));
errdir, save_errno, strerror(save_errno));
else
syslog(LOG_ERR, "FREEZE of / failed; error:%d %s", save_errno,
strerror(save_errno));
out:
endmntent(mounts);
return error;
}