summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Elfring <elfring@users.sourceforge.net>2024-10-23 16:54:59 +0200
committerJoel Granados <joel.granados@kernel.org>2024-10-31 11:39:55 +0100
commit9c738dae9534fbdf77c250132cba04e0822983b3 (patch)
tree7531f36d7f5d2929964b7bddc7647d2140361d50
parentsysctl: Reorganize kerneldoc parameter names (diff)
downloadlinux-9c738dae9534fbdf77c250132cba04e0822983b3.tar.xz
linux-9c738dae9534fbdf77c250132cba04e0822983b3.zip
sysctl: Reduce dput(child) calls in proc_sys_fill_cache()
Replace two dput(child) calls with one that occurs immediately before the IS_ERR evaluation. This transformation can be performed because dput() gets called regardless of the value returned by IS_ERR(res). This issue was transformed by using a script for the semantic patch language like the following. <SmPL> @extended_adjustment@ expression e, f != { mutex_unlock }, x, y; @@ +f(e); if (...) { <+... when != \( e = x \| y(..., &e, ...) \) - f(e); ...+> } -f(e); </SmPL> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Reviewed-by: Joel Granados <joel.granados@kernel.org> Signed-off-by: Joel Granados <joel.granados@kernel.org>
-rw-r--r--fs/proc/proc_sysctl.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index fac566065ed5..27a283d85a6e 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -704,11 +704,11 @@ static bool proc_sys_fill_cache(struct file *file,
res = d_splice_alias(inode, child);
d_lookup_done(child);
if (unlikely(res)) {
- if (IS_ERR(res)) {
- dput(child);
- return false;
- }
dput(child);
+
+ if (IS_ERR(res))
+ return false;
+
child = res;
}
}