Commit 098927a
ext4: fix out-of-bound read in ext4_xattr_inode_dec_ref_all()
[ Upstream commit 5701875 ]
There's issue as follows:
BUG: KASAN: use-after-free in ext4_xattr_inode_dec_ref_all+0x6ff/0x790
Read of size 4 at addr ffff88807b003000 by task syz-executor.0/15172
CPU: 3 PID: 15172 Comm: syz-executor.0
Call Trace:
__dump_stack lib/dump_stack.c:82 [inline]
dump_stack+0xbe/0xfd lib/dump_stack.c:123
print_address_description.constprop.0+0x1e/0x280 mm/kasan/report.c:400
__kasan_report.cold+0x6c/0x84 mm/kasan/report.c:560
kasan_report+0x3a/0x50 mm/kasan/report.c:585
ext4_xattr_inode_dec_ref_all+0x6ff/0x790 fs/ext4/xattr.c:1137
ext4_xattr_delete_inode+0x4c7/0xda0 fs/ext4/xattr.c:2896
ext4_evict_inode+0xb3b/0x1670 fs/ext4/inode.c:323
evict+0x39f/0x880 fs/inode.c:622
iput_final fs/inode.c:1746 [inline]
iput fs/inode.c:1772 [inline]
iput+0x525/0x6c0 fs/inode.c:1758
ext4_orphan_cleanup fs/ext4/super.c:3298 [inline]
ext4_fill_super+0x8c57/0xba40 fs/ext4/super.c:5300
mount_bdev+0x355/0x410 fs/super.c:1446
legacy_get_tree+0xfe/0x220 fs/fs_context.c:611
vfs_get_tree+0x8d/0x2f0 fs/super.c:1576
do_new_mount fs/namespace.c:2983 [inline]
path_mount+0x119a/0x1ad0 fs/namespace.c:3316
do_mount+0xfc/0x110 fs/namespace.c:3329
__do_sys_mount fs/namespace.c:3540 [inline]
__se_sys_mount+0x219/0x2e0 fs/namespace.c:3514
do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46
entry_SYSCALL_64_after_hwframe+0x67/0xd1
Memory state around the buggy address:
ffff88807b002f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff88807b002f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff88807b003000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
^
ffff88807b003080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ffff88807b003100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Above issue happens as ext4_xattr_delete_inode() isn't check xattr
is valid if xattr is in inode.
To solve above issue call xattr_check_inode() check if xattr if valid
in inode. In fact, we can directly verify in ext4_iget_extra_inode(),
so that there is no divergent verification.
Fixes: e50e512 ("ext4: xattr-in-inode support")
Signed-off-by: Ye Bin <yebin10@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20250208063141.1539283-3-yebin@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Rajani Kantha <681739313@139.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>1 parent 54f8f38 commit 098927a
3 files changed
+13
-25
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4688 | 4688 | | |
4689 | 4689 | | |
4690 | 4690 | | |
| 4691 | + | |
| 4692 | + | |
| 4693 | + | |
| 4694 | + | |
| 4695 | + | |
4691 | 4696 | | |
4692 | 4697 | | |
4693 | 4698 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
312 | 312 | | |
313 | 313 | | |
314 | 314 | | |
315 | | - | |
| 315 | + | |
316 | 316 | | |
317 | 317 | | |
318 | 318 | | |
319 | 319 | | |
320 | 320 | | |
321 | 321 | | |
322 | 322 | | |
323 | | - | |
324 | | - | |
325 | | - | |
326 | 323 | | |
327 | 324 | | |
328 | 325 | | |
| |||
654 | 651 | | |
655 | 652 | | |
656 | 653 | | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | 654 | | |
661 | 655 | | |
662 | 656 | | |
| |||
787 | 781 | | |
788 | 782 | | |
789 | 783 | | |
790 | | - | |
791 | 784 | | |
792 | 785 | | |
793 | 786 | | |
| |||
797 | 790 | | |
798 | 791 | | |
799 | 792 | | |
800 | | - | |
801 | | - | |
802 | | - | |
803 | | - | |
804 | 793 | | |
805 | 794 | | |
806 | 795 | | |
807 | | - | |
808 | 796 | | |
809 | 797 | | |
810 | 798 | | |
| |||
872 | 860 | | |
873 | 861 | | |
874 | 862 | | |
875 | | - | |
876 | 863 | | |
877 | 864 | | |
878 | 865 | | |
| |||
883 | 870 | | |
884 | 871 | | |
885 | 872 | | |
886 | | - | |
887 | | - | |
888 | | - | |
889 | | - | |
890 | 873 | | |
891 | 874 | | |
892 | 875 | | |
| |||
2251 | 2234 | | |
2252 | 2235 | | |
2253 | 2236 | | |
2254 | | - | |
2255 | | - | |
2256 | | - | |
2257 | 2237 | | |
2258 | 2238 | | |
2259 | 2239 | | |
| |||
2804 | 2784 | | |
2805 | 2785 | | |
2806 | 2786 | | |
2807 | | - | |
2808 | | - | |
2809 | | - | |
2810 | | - | |
2811 | 2787 | | |
2812 | 2788 | | |
2813 | 2789 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
209 | 209 | | |
210 | 210 | | |
211 | 211 | | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
212 | 219 | | |
213 | 220 | | |
214 | 221 | | |
| |||
0 commit comments