diff options
author | Johannes Weiner <[email protected]> | 2024-03-24 17:04:47 -0400 |
---|---|---|
committer | Andrew Morton <[email protected]> | 2024-03-26 11:14:12 -0700 |
commit | 25cd241408a2adc1ed0ebc90ae0793576c111880 (patch) | |
tree | f2a276d3dd6ac5cc48be97e485e0e1ef6b3145f5 /lib/debugobjects.c | |
parent | 8c864371b2a15a23ce35aa7e2bd241baaad6fbe8 (diff) |
mm: zswap: fix data loss on SWP_SYNCHRONOUS_IO devices
Zhongkun He reports data corruption when combining zswap with zram.
The issue is the exclusive loads we're doing in zswap. They assume
that all reads are going into the swapcache, which can assume
authoritative ownership of the data and so the zswap copy can go.
However, zram files are marked SWP_SYNCHRONOUS_IO, and faults will try to
bypass the swapcache. This results in an optimistic read of the swap data
into a page that will be dismissed if the fault fails due to races. In
this case, zswap mustn't drop its authoritative copy.
Link: https://lore.kernel.org/all/CACSyD1N+dUvsu8=zV9P691B9bVq33erwOXNTmEaUbi9DrDeJzw@mail.gmail.com/
Fixes: b9c91c43412f ("mm: zswap: support exclusive loads")
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Johannes Weiner <[email protected]>
Reported-by: Zhongkun He <[email protected]>
Tested-by: Zhongkun He <[email protected]>
Acked-by: Yosry Ahmed <[email protected]>
Acked-by: Barry Song <[email protected]>
Reviewed-by: Chengming Zhou <[email protected]>
Reviewed-by: Nhat Pham <[email protected]>
Acked-by: Chris Li <[email protected]>
Cc: <[email protected]> [6.5+]
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'lib/debugobjects.c')
0 files changed, 0 insertions, 0 deletions