diff options
| author | Breno Leitao <leitao@debian.org> | 2026-06-08 12:32:05 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-06-10 18:18:16 +0300 |
| commit | 512db8267b73a220a64180d95ab5eebe7c4964a8 (patch) | |
| tree | 3b8a0b6a7ed0b5cf632cf6eef72cf7ff1924f0e3 /include/linux | |
| parent | a5c0359f5cbc51a2e2b114d6041e0f3c73f903e9 (diff) | |
| download | linux-512db8267b73a220a64180d95ab5eebe7c4964a8.tar.xz | |
rds: mark snapshot pages dirty in rds_info_getsockopt()
rds_info_getsockopt() pins the destination user pages with FOLL_WRITE and
the RDS_INFO_* producers memcpy the snapshot into them through
kmap_atomic(). Because that copy goes through the kernel direct map, the
dirty bit on the user PTE is never set, so unpin_user_pages() releases the
pages without marking them dirty. A file-backed destination page can then
be reclaimed without writeback, silently discarding the copied data.
Use unpin_user_pages_dirty_lock() with make_dirty=true so the modified
pages are marked dirty before they are unpinned.
Fixes: a8c879a7ee98 ("RDS: Info and stats")
Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Allison Henderson <achender@kernel.org>
Link: https://patch.msgid.link/20260608-rds_fix-v1-1-006c88543408@debian.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions
