diff options
author | Kees Cook <keescook@chromium.org> | 2023-12-05 10:26:14 -0800 |
---|---|---|
committer | Kees Cook <keescook@chromium.org> | 2023-12-08 14:15:44 -0800 |
commit | 6ba6ee8a59a8ac673d9a9415bdf1d0a27990dc45 (patch) | |
tree | 4b816d7202e3d26d49fbcb387b8baeecac064958 | |
parent | 86222a8fc16ec517de8da2604d904c9df3a08e5d (diff) | |
download | linux-6ba6ee8a59a8ac673d9a9415bdf1d0a27990dc45.tar.gz linux-6ba6ee8a59a8ac673d9a9415bdf1d0a27990dc45.tar.bz2 linux-6ba6ee8a59a8ac673d9a9415bdf1d0a27990dc45.zip |
pstore: inode: Convert kfree() usage to __free(kfree)
Mostly as an example to myself, replace a simple allocation pattern with
the automatic kfree cleanup features now exposed by cleanup.h.
Cc: Guilherme G. Piccoli <gpiccoli@igalia.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: <linux-hardening@vger.kernel.org>
Link: https://lore.kernel.org/r/20231205182622.1329923-1-keescook@chromium.org
Signed-off-by: Kees Cook <keescook@chromium.org>
-rw-r--r-- | fs/pstore/inode.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c index d41c20d1b5e8..20f3452c8196 100644 --- a/fs/pstore/inode.c +++ b/fs/pstore/inode.c @@ -23,6 +23,7 @@ #include <linux/pstore.h> #include <linux/slab.h> #include <linux/uaccess.h> +#include <linux/cleanup.h> #include "internal.h" @@ -64,7 +65,7 @@ static void free_pstore_private(struct pstore_private *private) static void *pstore_ftrace_seq_start(struct seq_file *s, loff_t *pos) { struct pstore_private *ps = s->private; - struct pstore_ftrace_seq_data *data; + struct pstore_ftrace_seq_data *data __free(kfree) = NULL; data = kzalloc(sizeof(*data), GFP_KERNEL); if (!data) @@ -72,13 +73,10 @@ static void *pstore_ftrace_seq_start(struct seq_file *s, loff_t *pos) data->off = ps->total_size % REC_SIZE; data->off += *pos * REC_SIZE; - if (data->off + REC_SIZE > ps->total_size) { - kfree(data); + if (data->off + REC_SIZE > ps->total_size) return NULL; - } - - return data; + return_ptr(data); } static void pstore_ftrace_seq_stop(struct seq_file *s, void *v) |