Re: [PATCH 5/7] pid: Implement pid_nr
From: Eric W. Biederman
Date: Wed Aug 16 2006 - 12:16:25 EST
Oleg Nesterov <oleg@xxxxxxxxxx> writes:
> On 08/15, Eric W. Biederman wrote:
>> +static inline pid_t pid_nr(struct pid *pid)
>> + pid_t nr = 0;
>> + if (pid)
>> + nr = pid->nr;
>> + return nr;
> I think this is not safe, you need rcu locks here or the caller should
> do some locking.
> Let's look at f_getown() (PATCH 7/7). What if original task which was
> pointed by ->f_owner.pid has gone, another thread does fcntl(F_SETOWN),
> and pid_nr() takes a preemtion after 'if (pid)'? In this case 'pid->nr'
> may follow a freed memory.
This isn't an rcu reference. I hold a hard reference count on
the pid entry. So this should be safe.
What is an rcu reference is going from struct pid to the task
it points to.
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/