CVE-2024-47680

f2fs: check discard support for conventional zones

published October 21, 2024

CVSS
—
EPSS
0%
Percentile
13.2
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

f2fs: check discard support for conventional zones

As the helper function f2fs_bdev_support_discard() shows, f2fs checks if

the target block devices support discard by calling

bdev_max_discard_sectors() and bdev_is_zoned(). This check works well

for most cases, but it does not work for conventional zones on zoned

block devices. F2fs assumes that zoned block devices support discard,

and calls __submit_discard_cmd(). When __submit_discard_cmd() is called

for sequential write required zones, it works fine since

__submit_discard_cmd() issues zone reset commands instead of discard

commands. However, when __submit_discard_cmd() is called for

conventional zones, __blkdev_issue_discard() is called even when the

devices do not support discard.

The inappropriate __blkdev_issue_discard() call was not a problem before

the commit 30f1e7241422 ("block: move discard checks into the ioctl

handler") because __blkdev_issue_discard() checked if the target devices

support discard or not. If not, it returned EOPNOTSUPP. After the

commit, __blkdev_issue_discard() no longer checks it. It always returns

zero and sets NULL to the given bio pointer. This NULL pointer triggers

f2fs_bug_on() in __submit_discard_cmd(). The BUG is recreated with the

commands below at the umount step, where /dev/nullb0 is a zoned null_blk

with 5GB total size, 128MB zone size and 10 conventional zones.

$ mkfs.f2fs -f -m /dev/nullb0

$ mount /dev/nullb0 /mnt

$ for ((i=0;i<5;i++)); do dd if=/dev/zero of=/mnt/test bs=65536 count=1600 conv=fsync; done

$ umount /mnt

To fix the BUG, avoid the inappropriate __blkdev_issue_discard() call.

When discard is requested for conventional zones, check if the device

supports discard or not. If not, return EOPNOTSUPP.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00232 · 13.2th percentile
Published
2024-10-21T11:53Z
EPSS history
Timeline
  • 21 OCT 11:53Z
    f2fs: check discard support for conventional zones
    cvelistv5