Re: [f2fs-dev] [PATCH] f2fs: fix error handling on device alias check in rename and unlink
From: Chao Yu
Date: Sat Aug 22 2026 - 03:10:14 EST
On 8/22/26 08:12, Jaegeuk Kim wrote:
On 08/22, Chao Yu wrote:
On 8/21/26 23:26, Jaegeuk Kim via Linux-f2fs-devel wrote:
On 08/21, Daeho Jeong wrote:
From: Daeho Jeong <daehojeong@xxxxxxxxxx>
In f2fs_rename() and f2fs_unlink(), directly returning -EPERM when
encountering a device aliasing file bypasses the cleanup path.
Fix this by setting err to -EPERM and jumping to the proper cleanup
labels (out_dir and out) instead of returning immediately.
Fixes: a737e409a3d6 ("f2fs: support dynamic reserve/release for device aliasing")
Cc: stable@xxxxxxxxxx
Applied without Fixes and stable, since the original patch has not been
upstreamed.
Jaegeuk, if we don't plan to merge them, we'd better keep the Fixes and stable
line, otherwise, once the two patches be upstreamed, we may missed to backport
the fix one due to the missing lines?
My concern is the never existing hash in upstream. And, I don't think this will
go into any LTS.
Oh, I see, actually, my concern is developers may potentially miss this fix when
backporting related feature.
Thanks,
Thanks,
Reported-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
Signed-off-by: Daeho Jeong <daehojeong@xxxxxxxxxx>
Reviewed-by: Chao Yu <chao@xxxxxxxxxx>
---
fs/f2fs/namei.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index 784f636244e1..b9b15c5d28de 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -571,8 +571,10 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
trace_f2fs_unlink_enter(dir, dentry);
- if (IS_DEVICE_ALIASING(inode))
- return -EPERM;
+ if (IS_DEVICE_ALIASING(inode)) {
+ err = -EPERM;
+ goto out;
+ }
if (unlikely(f2fs_cp_error(sbi))) {
err = -EIO;
@@ -1025,8 +1027,10 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
}
if (new_inode) {
- if (IS_DEVICE_ALIASING(new_inode))
- return -EPERM;
+ if (IS_DEVICE_ALIASING(new_inode)) {
+ err = -EPERM;
+ goto out_dir;
+ }
err = -ENOTEMPTY;
if (old_is_dir && !f2fs_empty_dir(new_inode))
--
2.55.0.766.g2966f0265a-goog
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel