Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: netfs: Fix zeropoint update where i_size > remote_i_size Fix the update of the zero point[*] by netfs_release_folio() when there is uncommitted data in the pagecache beyond the folio being released but the on-server EOF is in this folio (ie. i_size > remote_i_size). The update needs to limit zero_point to remote_i_size, not i_size as i_size is a local phenomenon reflecting updates made locally to the pagecache, not stuff written to the server. remote_i_size tracks the server's i_size. [*] The zero point is the file position from which we can assume that the server will just return zeros, so we can avoid generating reads. Note that netfs_invalidate_folio() probably doesn't need fixing as zero_point should be updated by setattr after truncation or fallocate. Found with: fsx -q -N 1000000 -p 10000 -o 128000 -l 600000 \ /xfstest.test/junk --replay-ops=junk.fsxops using the following as junk.fsxops: truncate 0x0 0x1bbae 0x82864 write 0x3ef2e 0xf9c8 0x1bbae write 0x67e05 0xcb5a 0x4e8f6 mapread 0x57781 0x85b6 0x7495f copy_range 0x5d3d 0x10329 0x54fac 0x7495f write 0x64710 0x1c2b 0x7495f mapread 0x64000 0x1000 0x7495f on cifs with the default cache option. It shows read-gaps on folio 0x64 failing with a short read (ie. it hits EOF) if the FMODE_READ check is commented out in netfs_perform_write(): if (//(file->f_mode & FMODE_READ) || netfs_is_cache_enabled(ctx)) { and no fscache. This was initially found with the generic/522 xfstest.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected cce6bfa6ca0e30af9927b0074c97fe6a92f28092 before f706e3889ff75877ecb3abae5ad667dbc990331e; affected cce6bfa6ca0e30af9927b0074c97fe6a92f28092 before 5afc2d9b86bed2e4d9e1ba467790cbc793223f98; affected cce6bfa6ca0e30af9927b0074c97fe6a92f28092 before 5cd5207de519ef0c085f4f559adf5eefcb4c5202; affected cce6bfa6ca0e30af9927b0074c97fe6a92f28092 before 4543a4d737944134a1394afe797622546fbcc98a; affected e2814004138a541110d4b2dc254a8f619c2c4ce0; affected 6.10.8 before 6.11 |
| Linux / Linux | affected 6.11; unaffected 0 before 6.11; unaffected 6.12.114 through 6.12.*; unaffected 6.18.57 through 6.18.*; unaffected 7.0.11 through 7.0.*; unaffected 7.1 through * |
CWE
No CWE identifiers supplied.