mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
util: correct retry path in virFileOperation
In virFileOperation, the parent does a fallback to a non-fork attempt if it detects that the child returned EACCES. However, the child was calling _exit(-EACCES), which does _not_ appear as EACCES in the parent. * src/util/util.c (virFileOperation): Correctly pass EACCES from child to parent.
This commit is contained in:
parent
e5f3b90e97
commit
d152f64760
@ -1559,6 +1559,15 @@ parenterror:
|
||||
goto childerror;
|
||||
}
|
||||
childerror:
|
||||
/* ret tracks -errno on failure, but exit value must be positive.
|
||||
* If the child exits with EACCES, then the parent tries again. */
|
||||
/* XXX This makes assumptions about errno being < 255, which is
|
||||
* not true on Hurd. */
|
||||
ret = -ret;
|
||||
if ((ret & 0xff) != ret) {
|
||||
VIR_WARN("unable to pass desired return value %d", ret);
|
||||
ret = 0xff;
|
||||
}
|
||||
_exit(ret);
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user