Description
In the Linux kernel, the following vulnerability has been resolved: ext4: fix null-ptr-deref in ext4_write_info I caught a null-ptr-deref bug as follows: ================================================================== KASAN: null-ptr-deref in range [0x0000000000000068-0x000000000000006f] CPU: 1 PID: 1589 Comm: umount Not tainted 5.10.0-02219-dirty #339 RIP: 0010:ext4_write_info+0x53/0x1b0 [...] Call Trace: dquot_writeback_dquots+0x341/0x9a0 ext4_sync_fs+0x19e/0x800 __sync_filesystem+0x83/0x100 sync_filesystem+0x89/0xf0 generic_shutdown_super+0x79/0x3e0 kill_block_super+0xa1/0x110 deactivate_locked_super+0xac/0x130 deactivate_super+0xb6/0xd0 cleanup_mnt+0x289/0x400 __cleanup_mnt+0x16/0x20 task_work_run+0x11c/0x1c0 exit_to_user_mode_prepare+0x203/0x210 syscall_exit_to_user_mode+0x5b/0x3a0 do_syscall_64+0x59/0x70 entry_SYSCALL_64_after_hwframe+0x44/0xa9 ================================================================== Above issue may happen as follows: ------------------------------------- exit_to_user_mode_prepare task_work_run __cleanup_mnt cleanup_mnt deactivate_super deactivate_locked_super kill_block_super generic_shutdown_super shrink_dcache_for_umount dentry = sb->s_root sb->s_root = NULL <--- Here set NULL sync_filesystem __sync_filesystem sb->s_op->sync_fs > ext4_sync_fs dquot_writeback_dquots sb->dq_op->write_info > ext4_write_info ext4_journal_start(d_inode(sb->s_root), EXT4_HT_QUOTA, 2) d_inode(sb->s_root) s_root->d_inode <--- Null pointer dereference To solve this problem, we use ext4_journal_start_sb directly to avoid s_root being used.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
a1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < dc451578446afd03c0c21913993c08898a691435affecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < f4b5ff0b794aa94afac7269c494550ca2f66511baffecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < 947264e00c46de19a016fd81218118c708fed2f3affecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < 3638aa1c7d87c0ca0aef23cf58cae2c48e7daca4affecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < f34ab95162763cd7352f46df169296eec28b688daffecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < 533c60a0b97cee5daab376933f486207e6680fb7affecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < 4a657319cfabd6199fd0b7b65bbebf6ded7a11c1affecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < bb420e8afc854d2a1caaa23a0c129839acfb7888affecteda1177825719ccef3f76ef39bbfd5ebb6087d53c7 to < f9c1f248607d5546075d3f731e7607d5571f2b60affected
Linux Linux
Default version status: affected
3.6affected0 to < 3.6unaffected4.9.331 to ≤ 4.9.*unaffected4.14.296 to ≤ 4.14.*unaffected4.19.262 to ≤ 4.19.*unaffected5.4.220 to ≤ 5.4.*unaffected5.10.150 to ≤ 5.10.*unaffected5.15.75 to ≤ 5.15.*unaffected5.19.17 to ≤ 5.19.*unaffected6.0.3 to ≤ 6.0.*unaffected6.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/dc451578446afd03c0c21913993c08898a691435 ↗
- https://git.kernel.org/stable/c/f4b5ff0b794aa94afac7269c494550ca2f66511b ↗
- https://git.kernel.org/stable/c/947264e00c46de19a016fd81218118c708fed2f3 ↗
- https://git.kernel.org/stable/c/3638aa1c7d87c0ca0aef23cf58cae2c48e7daca4 ↗
- https://git.kernel.org/stable/c/f34ab95162763cd7352f46df169296eec28b688d ↗
- https://git.kernel.org/stable/c/533c60a0b97cee5daab376933f486207e6680fb7 ↗
- https://git.kernel.org/stable/c/4a657319cfabd6199fd0b7b65bbebf6ded7a11c1 ↗
- https://git.kernel.org/stable/c/bb420e8afc854d2a1caaa23a0c129839acfb7888 ↗
- https://git.kernel.org/stable/c/f9c1f248607d5546075d3f731e7607d5571f2b60 ↗