summaryrefslogtreecommitdiff
path: root/fs/f2fs
diff options
context:
space:
mode:
authorYongpeng Yang <yangyongpeng@xiaomi.com>2026-04-10 23:05:37 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2026-04-13 22:52:57 +0000
commitb8b902fd57fbaec70eb5ae2f0ec12a650ae62d96 (patch)
tree2dc72b8d53113d46d148648b8fc4326003ed78d4 /fs/f2fs
parented78aeebef05212ef7dca93bd931e4eff67c113f (diff)
f2fs: disallow setting an extension to both cold and hot
An extension should not exist in both the cold and hot extension lists simultaneously. When adding a hot extension, check whether it already exists in the cold list, and vice versa. Reject the operation with -EINVAL if a conflict is found. Signed-off-by: Yongpeng Yang <yangyongpeng@xiaomi.com> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/namei.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index 6ef21deeef1c..2e9c6be56518 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -83,6 +83,21 @@ int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name,
if (set) {
if (total_count == F2FS_MAX_EXTENSION)
return -EINVAL;
+
+ if (hot) {
+ start = 0;
+ count = cold_count;
+ } else {
+ start = cold_count;
+ count = total_count;
+ }
+ for (i = start; i < count; i++) {
+ if (!strcmp(name, extlist[i])) {
+ f2fs_warn(sbi, "extension '%s' already exists in %s list",
+ name, hot ? "cold" : "hot");
+ return -EINVAL;
+ }
+ }
} else {
if (!hot && !cold_count)
return -EINVAL;