On Fri, Jul 01, 2016 at 03:33:07PM +0100, Daniel P. Berrange wrote:
On Fri, Jul 01, 2016 at 04:30:44PM +0200, Andrea Bolognani wrote:
> audit is using cap-ng itself since version 2.6.1, and it gets
> to initialize the internal state of the cap-ng library before
> we call fork(). Because of that, our own use of cap-ng in the
> child process ends up attempting to change the capabilities of
> the parent process instead of the child process, which fails.
>
> Calling capng_setpid() before using any other cap-ng API
> ensures we're altering the capabilities of the right process.
I really don't want to do any hack workaround in libvirt until we've
got feedback from the cap-ng maintainers, as I think it is really
their bug to fix.
FYI, I attached a patch for libcap-ng whic uses pthread_atfork to
reset their global state
https://bugzilla.redhat.com/show_bug.cgi?id=1352064
It works with my demo program, but haven't tested with libvirt yet
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|