Re: namespaces?: bug at mm/slub.c:2750

From: Serge E. Hallyn
Date: Wed Feb 11 2009 - 12:31:00 EST


Quoting David Howells (dhowells@xxxxxxxxxx):
> Serge E. Hallyn <serue@xxxxxxxxxx> wrote:
>
> > static void uid_hash_remove(struct user_struct *up)
> > {
> > + put_user_ns(up->user_ns);
> > hlist_del_init(&up->uidhash_node);
> > }
>
> Don't you need to do the hlist_del_init() first? Otherwise, mightn't the
> put_user_ns() cause the namespace to be freed before hlist_del_init() removes
> the user_struct from it?

It's called under uidhash_lock spinlock so should be ok, but in
principle you're right so it's probably a good idea.

The main point is that without this patch, put_user_ns is done before
the hlist_del_init and *not* atomically under uidhash_lock.

thanks,
-serge
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/