On 2024/6/12 7:39, jtp.p...@samsung.com wrote:
From: Jeongtae Park <jtp.p...@samsung.com>
This patch adds a new scope based f2fs_putname() cleanup to reduce
the chances of forgetting a f2fs_putname(). And doing so removes
Actually, f2fs_trace_rw_file_path() won't change frequently, so the risk
of forgetting f2fs_putname() here is very low.
a goto statement for error handling.
The code logic is fine to me, but not sure whether we should apply this.
Jaegeuk, any comments?
Thanks,
Signed-off-by: Jeongtae Park <jtp.p...@samsung.com>
---
fs/f2fs/f2fs.h | 2 ++
fs/f2fs/file.c | 8 +++-----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 1974b6aff397..284024c12ee5 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -3402,6 +3402,8 @@ static inline void f2fs_putname(char *buf)
__putname(buf);
}
+DEFINE_FREE(f2fs_putname, void *, if (_T) f2fs_putname(_T))
+
static inline void *f2fs_kzalloc(struct f2fs_sb_info *sbi,
size_t size, gfp_t flags)
{
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 5c0b281a70f3..c783d017ed28 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -4511,22 +4511,20 @@ static void f2fs_trace_rw_file_path(struct file *file,
loff_t pos, size_t count,
int rw)
{
struct inode *inode = file_inode(file);
- char *buf, *path;
+ char *buf __free(f2fs_putname) = f2fs_getname(F2FS_I_SB(inode));
+ char *path;
- buf = f2fs_getname(F2FS_I_SB(inode));
if (!buf)
return;
path = dentry_path_raw(file_dentry(file), buf, PATH_MAX);
if (IS_ERR(path))
- goto free_buf;
+ return;
if (rw == WRITE)
trace_f2fs_datawrite_start(inode, pos, count,
current->pid, path, current->comm);
else
trace_f2fs_dataread_start(inode, pos, count,
current->pid, path, current->comm);
-free_buf:
- f2fs_putname(buf);
}
static ssize_t f2fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel