From 298507d4d2cff2248e84afcf646b697301294442 Mon Sep 17 00:00:00 2001 From: Vasiliy Kulikov Date: Wed, 3 Aug 2011 22:28:26 +0400 Subject: shm: optimize exit_shm() We may optimistically check .in_use == 0 without holding the rw_mutex: it's the common case, and if it's zero, there certainly won't be any segments associated with us. After taking the lock, the idr_for_each() will do the right thing, so we could now drop the re-check inside the lock without any real cost. But it won't hurt. Signed-off-by: Vasiliy Kulikov Signed-off-by: Linus Torvalds --- ipc/shm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ipc/shm.c b/ipc/shm.c index 7efff043ffb..b5bae9d945b 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -304,6 +304,9 @@ void exit_shm(struct task_struct *task) { struct ipc_namespace *ns = task->nsproxy->ipc_ns; + if (shm_ids(ns).in_use == 0) + return; + /* Destroy all already created segments, but not mapped yet */ down_write(&shm_ids(ns).rw_mutex); if (shm_ids(ns).in_use) -- cgit v1.2.3-18-g5258