[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20190417213150.GA26474@avx2>
Date: Thu, 18 Apr 2019 00:31:50 +0300
From: Alexey Dobriyan <adobriyan@...il.com>
To: akpm@...ux-foundation.org
Cc: linux-kernel@...r.kernel.org
Subject: [PATCH] exec: move ->recursion_depth out of critical sections
->recursion_depth is changed only by current, therefore decrementing can be
done without taking any locks.
Signed-off-by: Alexey Dobriyan <adobriyan@...il.com>
---
fs/exec.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1652,11 +1652,13 @@ int search_binary_handler(struct linux_binprm *bprm)
if (!try_module_get(fmt->module))
continue;
read_unlock(&binfmt_lock);
+
bprm->recursion_depth++;
retval = fmt->load_binary(bprm);
+ bprm->recursion_depth--;
+
read_lock(&binfmt_lock);
put_binfmt(fmt);
- bprm->recursion_depth--;
if (retval < 0 && !bprm->mm) {
/* we got to flush_old_exec() and failed after it */
read_unlock(&binfmt_lock);
Powered by blists - more mailing lists