|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 08/11] libxl: Kill QEMU by uid when possible
George Dunlap writes ("[PATCH v3 08/11] libxl: Kill QEMU by uid when possible"):
> The privcmd fd that a dm_restrict'ed QEMU has gives it permission to
> one specific domain ID. This domain ID will probably eventually be
> used again. It is therefore necessary to make absolutely sure that a
> rogue QEMU process cannot hang around after its domain has exited.
...
> +static int kill_device_model_uid_child(libxl__destroy_devicemodel_state
> *ddms,
> + /*
> + * And kill everyone but me.
> + *
> + * NB that it's not clear from either POSIX or the Linux man page
> + * that ESRCH would be returned with a pid value of -1, but it
> + * doesn't hurt to check.
> + */
> + r = kill(-1, 9);
> + if (r && errno != ESRCH) {
> + LOGED(ERROR, domid, "kill(-1,9)");
> + rc = ERROR_FAIL;
> + }
Missing `goto out', there.
> +
> + rc = 0;
> +
> +out:
> + return rc;
> +}
> +static void kill_device_model_uid_cb(libxl__egc *egc,
> + libxl__ev_child *destroyer,
> + pid_t pid, int status)
> +{
> + libxl__destroy_devicemodel_state *ddms = CONTAINER_OF(destroyer, *ddms,
> destroyer);
> + STATE_AO_GC(ddms->ao);
> +
> + if (status) {
> + int rc = ERROR_FAIL;
> +
> + if (WIFEXITED(status))
> + rc = -WEXITSTATUS(status);
But WEXITSTATUS might be something weird. See my mail about possible
system-invented exit statuses. I suggest you tolerate only the status
values you intend to generate, 1..125. (And 0 for success.)
> +/*
> + * A macro to help retain the first failure in "do as much as you can"
> + * situations. Note the hard-coded use of the variable name `rc`.
> + */
> +#define ACCUMULATE_RC(rc_acc) ((rc_acc) = (rc_acc) ?: rc)
> +
Good, although you have trailing whitespace in the new blank line.
Everything else LGTM.
Thanks,
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |