From: Miaohe Lin Date: Sat, 25 Jun 2022 09:33:45 +0000 (+0800) Subject: mm-swapfile-fix-possible-data-races-of-inuse_pages-v3 X-Git-Tag: maple_v12_fixes~117 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=323994d05723e5746b47fcd5ccd6da6afd51ae5d;p=users%2Fjedix%2Flinux-maple.git mm-swapfile-fix-possible-data-races-of-inuse_pages-v3 use WRITE_ONCE to pair with READ_ONCE Link: https://lkml.kernel.org/r/20220625093346.48894-2-linmiaohe@huawei.com Signed-off-by: Miaohe Lin Reviewed-by: David Hildenbrand Signed-off-by: Andrew Morton --- diff --git a/mm/swapfile.c b/mm/swapfile.c index 91e38174fd623..b5555b680fcdc 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -695,7 +695,7 @@ static void swap_range_alloc(struct swap_info_struct *si, unsigned long offset, si->lowest_bit += nr_entries; if (end == si->highest_bit) WRITE_ONCE(si->highest_bit, si->highest_bit - nr_entries); - si->inuse_pages += nr_entries; + WRITE_ONCE(si->inuse_pages, si->inuse_pages + nr_entries); if (si->inuse_pages == si->pages) { si->lowest_bit = si->max; si->highest_bit = 0; @@ -732,7 +732,7 @@ static void swap_range_free(struct swap_info_struct *si, unsigned long offset, add_to_avail_list(si); } atomic_long_add(nr_entries, &nr_swap_pages); - si->inuse_pages -= nr_entries; + WRITE_ONCE(si->inuse_pages, si->inuse_pages - nr_entries); if (si->flags & SWP_BLKDEV) swap_slot_free_notify = si->bdev->bd_disk->fops->swap_slot_free_notify;