[libvirt] [PATCH v3 2/2] selinux: Only create the selabel_handle once.
Daniel P. Berrange
berrange at redhat.com
Thu Jan 24 10:19:10 UTC 2013
On Thu, Jan 24, 2013 at 10:10:58AM +0000, Richard W.M. Jones wrote:
> From: "Richard W.M. Jones" <rjones at redhat.com>
>
> According to Eric Paris this is slightly more efficient because it
> only loads the regular expressions in libselinux once.
> ---
> src/security/security_selinux.c | 129 ++++++++++++++++++++++++++--------------
> 1 file changed, 83 insertions(+), 46 deletions(-)
>
> diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
> index a3ef728..d1f80b2 100644
> --- a/src/security/security_selinux.c
> +++ b/src/security/security_selinux.c
> @@ -63,6 +63,9 @@ struct _virSecuritySELinuxData {
> char *content_context;
> virHashTablePtr mcs;
> bool skipAllLabel;
> +#if HAVE_SELINUX_LABEL_H
> + struct selabel_handle *label_handle;
> +#endif
> };
>
> struct _virSecuritySELinuxCallbackData {
> @@ -367,12 +370,21 @@ virSecuritySELinuxLXCInitialize(virSecurityManagerPtr mgr)
>
> data->skipAllLabel = true;
>
> +#if HAVE_SELINUX_LABEL_H
> + data->label_handle = selabel_open(SELABEL_CTX_FILE, NULL, 0);
> + if (!data->label_handle) {
> + virReportSystemError(errno,
> + _("cannot open SELinux label_handle"));
This is missing "%s",
> + return -1;
> + }
> +#endif
> +
> selinux_conf = virConfReadFile(selinux_lxc_contexts_path(), 0);
> if (!selinux_conf) {
> virReportSystemError(errno,
> _("cannot open SELinux lxc contexts file '%s'"),
> selinux_lxc_contexts_path());
> - return -1;
> + goto error;
> }
>
> scon = virConfGetValue(selinux_conf, "process");
> @@ -418,6 +430,9 @@ virSecuritySELinuxLXCInitialize(virSecurityManagerPtr mgr)
> return 0;
>
> error:
> +#if HAVE_SELINUX_LABEL_H
> + selabel_close(data->label_handle);
> +#endif
> virConfFree(selinux_conf);
> VIR_FREE(data->domain_context);
> VIR_FREE(data->file_context);
> @@ -444,6 +459,15 @@ virSecuritySELinuxQEMUInitialize(virSecurityManagerPtr mgr)
>
> data->skipAllLabel = false;
>
> +#if HAVE_SELINUX_LABEL_H
> + data->label_handle = selabel_open(SELABEL_CTX_FILE, NULL, 0);
> + if (!data->label_handle) {
> + virReportSystemError(errno,
> + _("cannot open SELinux label_handle"));
This is missing "%s",
Rest of the patch looks fine though.
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 :|
More information about the libvir-list
mailing list