Lucene search

K
ubuntucveUbuntu.comUB:CVE-2024-27036
HistoryMay 01, 2024 - 12:00 a.m.

CVE-2024-27036

2024-05-0100:00:00
ubuntu.com
ubuntu.com
6
linux kernel
cifs code
writeback data
data corruption
vulnerability
cve-2024-27036
netfslib
filemap_get_folios_tag

6.7 Medium

AI Score

Confidence

High

0.0004 Low

EPSS

Percentile

15.5%

In the Linux kernel, the following vulnerability has been resolved: cifs:
Fix writeback data corruption cifs writeback doesn’t correctly handle the
case where cifs_extend_writeback() hits a point where it is considering an
additional folio, but this would overrun the wsize - at which point it
drops out of the xarray scanning loop and calls xas_pause(). The problem is
that xas_pause() advances the loop counter - thereby skipping that page.
What needs to happen is for xas_reset() to be called any time we decide we
don’t want to process the page we’re looking at, but rather send the
request we are building and start a new one. Fix this by copying and
adapting the netfslib writepages code as a temporary measure, with cifs
writeback intending to be offloaded to netfslib in the near future. This
also fixes the issue with the use of filemap_get_folios_tag() causing retry
of a bunch of pages which the extender already dealt with. This can be
tested by creating, say, a 64K file somewhere not on cifs (otherwise
copy-offload may get underfoot), mounting a cifs share with a wsize of
64000, copying the file to it and then comparing the original file and the
copy: dd if=/dev/urandom of=/tmp/64K bs=64k count=1 mount
//192.168.6.1/test /mnt -o user=…,pass=…,wsize=64000 cp /tmp/64K
/mnt/64K cmp /tmp/64K /mnt/64K Without the fix, the cmp fails at position
64000 (or shortly thereafter).

6.7 Medium

AI Score

Confidence

High

0.0004 Low

EPSS

Percentile

15.5%