Hi David, David Woodhouse <dw...@infradead.org> writes:
> [[S/MIME Signed Part:Undecided]] > On Sat, 2023-11-11 at 11:01 +0000, David Woodhouse wrote: >> >> > --- a/hw/xen/xen-operations.c >> > +++ b/hw/xen/xen-operations.c >> > @@ -300,6 +300,18 @@ static bool libxenstore_create(struct qemu_xs_handle >> > *h, xs_transaction_t t, >> > return false; >> > } >> > >> > + if (owner == XS_PRESERVE_OWNER) { >> > + struct xs_permissions *tmp; >> > + unsigned int num; >> > + >> > + tmp = xs_get_permissions(h->xsh, 0, path, &num); >> > + if (tmp == NULL) { >> > + return false; >> > + } >> > + perms_list[0].id = tmp[0].id; >> > + free(tmp); >> > + } >> > + >> >> Don't see what saves you from someone else changing it at this point on >> true Xen though. Which is why I'd prefer XenStore to do it natively. > > I suppose maybe you could do it in a transaction *if* the transaction_t > you're passed in isn't already XBT_NULL? Yes, I need to pass "t" to xs_get_permissions(), of course. > One might argue that the mkdir+set_perms in libxenstore_create() ought > to have been within the same transaction *anyway*? Yes, all operations should be performed inside one transaction. -- WBR, Volodymyr