[Devel] Re: [PATCH 2/2] Add support for the per-task sem_undo list (v2)

Dan Smith danms at us.ibm.com
Wed Aug 4 13:17:12 PDT 2010


>> +static void put_undo_list(struct sem_undo_list *ulp);

OL> nit: to me it makes more sense to move
OL> grab/drop/checkpoint/restart code, as well sem_init(), to the end
OL> of the file (and avoid those statics...).

Okay, was trying to avoid chopping the file up too much.

OL> Can get rid of ..._users() since we don't collect them.

Oops :)

OL> semadj is short, so:
OL> s/__u16/__s16/

Gah, yeah, I always want everything to be unsigned for some reason :D

>> -		sma = sem_lock_check(tsk->nsproxy->ipc_ns, un->semid);
>> +		sma = sem_lock_check(ulp->ipc_ns, un->semid);

OL> This hunk belongs to previous patch, no ?

It could, but it seems more relevant when converting the function from
using a task to using just the undo_list itself...

>> +	atomic_inc(&ulp->refcnt);

OL> I suspect there is a leak here: atomic_inc is needed only for
OL> tasks other than the first task; The first task already gets the
OL> refcount deep inside find_alloc_undo(), and the hash-table gets
OL> its ref via the obj->grab method.

But then it drops that ref right after it inserts it, thus we need
another one, right?.  I think the confusion may come from the fact
that the hash assumes the first refcount is its own and the caller of
restore_obj() will grab another (for the task, in this case).  Since
we don't do that, we need to grab both early on.  I hit this in
another place in the network stuff, IIRC, which generated a similar
review comment ;)

-- 
Dan Smith
IBM Linux Technology Center
email: danms at us.ibm.com
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list