CVSS —

smb: client: fix data corruption with concurrent writes and O_TRUNC

Công bố
Cập nhật
Lần đầu thấy
Nguồn
NVD, CVE.org

Mô tả

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

smb: client: fix data corruption with concurrent writes and O_TRUNC

cifs_do_truncate() flushes dirty pages with filemap_write_and_wait()
and truncates the file on the server, but in the old code both
operations ran without holding i_rwsem or invalidate_lock. A
concurrent buffered write via netfs_perform_write() -- which only
needs i_rwsem shared -- could dirty new pages after the flush but
before the local truncation, and those pages would be silently
discarded by cifs_setsize() -> truncate_pagecache().

Fix by acquiring inode_lock (exclusive i_rwsem) and
filemap_invalidate_lock at the top of cifs_do_truncate(), so the
entire flush-truncate-resize sequence is atomic with respect to:

  • buffered writes (blocked by exclusive i_rwsem, since
    netfs_start_io_write takes i_rwsem shared),
  • read page faults (blocked by exclusive invalidate_lock, since
    filemap_fault takes it shared),
  • writeback collection (blocked by netfs_wb_begin/netfs_wb_end
    around the server truncate and local resize, since
    netfs_writepages also acquires the wb lock).

Điểm và phân loại

CVSS
Chưa có điểm CVSS
EPSS
—
CWE
—

Ảnh hưởng

Sản phẩm

  • Linux Linux

Vì sao bị lọc

  • CVSS chưa có điểm < 8.0 và không thuộc CISA KEV

Loại tác động

Không nhận ra loại tác động nào từ CWE, vector hay mô tả.

Dữ liệu riêng của nguồn

CVE.org · Đơn vị cấp mã
Linux

Tham khảo