]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
fs: use fput_close() in filp_close()
authorMateusz Guzik <mjguzik@gmail.com>
Wed, 5 Mar 2025 12:36:43 +0000 (13:36 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 5 Mar 2025 17:31:23 +0000 (18:31 +0100)
When tracing a kernel build over refcounts seen this is a wash:
@[kprobe:filp_close]:
[0]                32195 |@@@@@@@@@@                                          |
[1]               164567 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|

I verified vast majority of the skew comes from do_close_on_exec() which
could be changed to use a different variant instead.

Even without changing that, the 19.5% of calls which got here still can
save the extra atomic. Calls here are borderline non-existent compared
to fput (over 3.2 mln!), so they should not negatively affect
scalability.

Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
Link: https://lore.kernel.org/r/20250305123644.554845-4-mjguzik@gmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/open.c

index 47615d0e1d9c722226d4f5dd05b4f1fde57eb84d..39a89df7c37eee75f5700d96f7dd72d01ee33ff7 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -1550,7 +1550,7 @@ int filp_close(struct file *filp, fl_owner_t id)
        int retval;
 
        retval = filp_flush(filp, id);
-       fput(filp);
+       fput_close(filp);
 
        return retval;
 }