* [PATCH] pid: remove redundant condition @ 2012-04-06 6:16 Liu Ping Fan 2012-04-06 6:26 ` Linus Torvalds 0 siblings, 1 reply; 3+ messages in thread From: Liu Ping Fan @ 2012-04-06 6:16 UTC (permalink / raw) To: linux-kernel, Linus Torvalds 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); } -- 1.7.4.4 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] pid: remove redundant condition 2012-04-06 6:16 [PATCH] pid: remove redundant condition Liu Ping Fan @ 2012-04-06 6:26 ` Linus Torvalds 2012-04-06 8:33 ` Liu ping fan 0 siblings, 1 reply; 3+ messages in thread From: Linus Torvalds @ 2012-04-06 6:26 UTC (permalink / raw) To: Liu Ping Fan; +Cc: linux-kernel 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 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 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] pid: remove redundant condition 2012-04-06 6:26 ` Linus Torvalds @ 2012-04-06 8:33 ` Liu ping fan 0 siblings, 0 replies; 3+ messages in thread From: Liu ping fan @ 2012-04-06 8:33 UTC (permalink / raw) To: Linus Torvalds; +Cc: linux-kernel 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 ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-04-06 8:33 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-04-06 6:16 [PATCH] pid: remove redundant condition Liu Ping Fan 2012-04-06 6:26 ` Linus Torvalds 2012-04-06 8:33 ` Liu ping fan
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.