projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
816aa30
)
f2fs: fix to avoid out-of-boundary access in devs.path
author
Chao Yu
<chao@kernel.org>
Fri, 11 Jul 2025 07:14:50 +0000
(15:14 +0800)
committer
Jaegeuk Kim
<jaegeuk@kernel.org>
Tue, 22 Jul 2025 15:58:13 +0000
(15:58 +0000)
- touch /mnt/f2fs/
012345678901234567890123456789012345678901234567890123
- truncate -s $((1024*1024*1024)) \
/mnt/f2fs/
012345678901234567890123456789012345678901234567890123
- touch /mnt/f2fs/file
- truncate -s $((1024*1024*1024)) /mnt/f2fs/file
- mkfs.f2fs /mnt/f2fs/
012345678901234567890123456789012345678901234567890123
\
-c /mnt/f2fs/file
- mount /mnt/f2fs/
012345678901234567890123456789012345678901234567890123
\
/mnt/f2fs/loop
[16937.192225] F2FS-fs (loop0): Mount Device [ 0]: /mnt/f2fs/
012345678901234567890123456789012345678901234567890123
\xff\x01, 511, 0 - 3ffff
[16937.192268] F2FS-fs (loop0): Failed to find devices
If device path length equals to MAX_PATH_LEN, sbi->devs.path[] may
not end up w/ null character due to path array is fully filled, So
accidently, fields locate after path[] may be treated as part of
device path, result in parsing wrong device path.
struct f2fs_dev_info {
...
char path[MAX_PATH_LEN];
...
};
Let's add one byte space for sbi->devs.path[] to store null
character of device path string.
Fixes:
3c62be17d4f5
("f2fs: support multiple devices")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h
patch
|
blob
|
blame
|
history
diff --git
a/fs/f2fs/f2fs.h
b/fs/f2fs/f2fs.h
index b2cc22b29d6a9d0dd0308dbb544dee1fd8eb2641..dfddb66910b3f1ecc305d8241cf9ba2f28431ccf 100644
(file)
--- a/
fs/f2fs/f2fs.h
+++ b/
fs/f2fs/f2fs.h
@@
-1289,7
+1289,7
@@
struct f2fs_bio_info {
struct f2fs_dev_info {
struct file *bdev_file;
struct block_device *bdev;
- char path[MAX_PATH_LEN];
+ char path[MAX_PATH_LEN
+ 1
];
unsigned int total_segments;
block_t start_blk;
block_t end_blk;