Messages in this thread | | | Date | Fri, 6 Apr 2012 16:33:20 +0800 | Subject | Re: [PATCH] pid: remove redundant condition | From | Liu ping fan <> |
| |
On Fri, Apr 6, 2012 at 2:26 PM, Linus Torvalds <torvalds@linux-foundation.org> wrote: > On Thu, Apr 5, 2012 at 11:16 PM, Liu Ping Fan <kernelfans@gmail.com> wrote: >> From: Liu Ping Fan <pingfank@linux.vnet.ibm.com> >> >> Signed-off-by: Liu Ping Fan <pingfank@linux.vnet.ibm.com> >> --- >> kernel/pid.c | 3 +-- >> 1 files changed, 1 insertions(+), 2 deletions(-) >> >> diff --git a/kernel/pid.c b/kernel/pid.c >> index 9f08dfa..e4ca244 100644 >> --- a/kernel/pid.c >> +++ b/kernel/pid.c >> @@ -248,8 +248,7 @@ void put_pid(struct pid *pid) >> return; >> >> ns = pid->numbers[pid->level].ns; >> - if ((atomic_read(&pid->count) == 1) || >> - atomic_dec_and_test(&pid->count)) { >> + if (atomic_dec_and_test(&pid->count) { >> kmem_cache_free(ns->pid_cachep, pid); >> put_pid_ns(ns); >> } > > No, this isn't necessarily redundant. > > The atomic_dec_and_test() instruction can be very expensive. So if Oh, got it, thanks.
Regards, pingfan > count was 1 before, we're the last user, and we can free it without > the expensive atomic_dec_and_test(). > > However, if we are *not* the last user, then we can race with another > user decrementing the count, so now we need to use the expensive > version. > > Now, whether that special case is really worth it or not, I don't > know. But it's not redundant. > > Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |