Re: [PATCH 2/5] swap: fix do_swap_page() race with swapoff

From: Huang, Ying
Date: Tue Apr 13 2021 - 21:04:15 EST


Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> writes:

> On 4/12/21 6:27 PM, Huang, Ying wrote:
>
>>
>> This isn't the commit that introduces the race. You can use `git blame`
>> find out the correct commit. For this it's commit 0bcac06f27d7 "mm,
>> swap: skip swapcache for swapin of synchronous device".
>>
>> And I suggest to merge 1/5 and 2/5 to make it easy to get the full
>> picture.
>
> I'll suggest make fix to do_swap_page race with get/put_swap_device
> as a first patch. Then the per_cpu_ref stuff in patch 1 and patch 2 can
> be combined together.

The original get/put_swap_device() use rcu_read_lock/unlock(). I don't
think it's good to wrap swap_read_page() with it. After all, some
complex operations are done in swap_read_page(), including
blk_io_schedule().

Best Regards,
Huang, Ying