From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5ACCBC433F5 for ; Mon, 25 Oct 2021 09:55:49 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id DE29C610A1 for ; Mon, 25 Oct 2021 09:55:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DE29C610A1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bytedance.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 6A1B5940007; Mon, 25 Oct 2021 05:55:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 62A3F6B0074; Mon, 25 Oct 2021 05:55:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CAEB940007; Mon, 25 Oct 2021 05:55:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0174.hostedemail.com [216.40.44.174]) by kanga.kvack.org (Postfix) with ESMTP id 3A7CB6B0073 for ; Mon, 25 Oct 2021 05:55:48 -0400 (EDT) Received: from smtpin05.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id D52CD2AF15 for ; Mon, 25 Oct 2021 09:55:47 +0000 (UTC) X-FDA: 78734503134.05.5592EA0 Received: from mail-yb1-f180.google.com (mail-yb1-f180.google.com [209.85.219.180]) by imf06.hostedemail.com (Postfix) with ESMTP id AEC41801A8A0 for ; Mon, 25 Oct 2021 09:55:46 +0000 (UTC) Received: by mail-yb1-f180.google.com with SMTP id v200so24328930ybe.11 for ; Mon, 25 Oct 2021 02:55:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AyTuCec8PQH+pdQXKJ1aGslhFhlqmgZiu6+0uLpWr9w=; b=4W4AxVmNGhV7mCGfx+Kqc6uNJXvrd6mg0DRSx4TETf/0qPR7gPBcRIGWDbzO4sxGMr R7+SBGvXb/c7O35EHZydkvaflGFZmTWqQ1+EpFUFwUzsjEFB74eAPsR1lcXvrJHWVbGO QYwuoQl+Yajrd+SrgxZsw7PMVBnPzaNyaKHZ+uyR+YQis4wQ8ZJM6AkgDYTQeVWTXvLs IUOwruVwpZjlxOAKUNQJOu9DrTt9XX/WfYPcOFAZ3Aj16Vn6w74QF12gbyOa43PY9CSh xYSjOAB/A14nUmfdJHZ0tksfKbGc0kew050bWy3I+odQ941pWm5bvzLSeprlCE4VZF9D aBxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AyTuCec8PQH+pdQXKJ1aGslhFhlqmgZiu6+0uLpWr9w=; b=pKNlnKf0o7Btdk5aT2yfI99MPU9PFVBiciXEj/VMcmKLUUZ/6knQ0BXPq/2lNDCblG TCuqsSpp9pmkpdMq2VTj6L2YSGerMCwySwicw3CWEuMcTdoS9CHr7XODS21PRBj3/vHF aOIecsXTqHxDWrBe8/VaV+dn4xUx6oOeli7DA0lbQAyGjpztefir3Ll6CjvG3awd1/do CYPZtPH4PrGUTiDXpQ++wARDjnh+tsPIFzy9U1pfq135tA35r3qkc/+ECWpG7WueKBI7 KFv5QUzgz77SWH2m2dp/REp9KjD0vUxddGhNoxgGBSHht4i8HLKJHO80dIZ9JZTcW6FN ce6g== X-Gm-Message-State: AOAM532ySNfBmAxesTvUIew8p4PyIfrg4k4vASobdZk71jHz71tYjCWg 5lEFkcnDeXeAwgkaJflVczkTAP/SQqdypxnP85TV1A== X-Google-Smtp-Source: ABdhPJybpta/2nb9bybcpUTdcPtobZ/viduZOJ197+NNZeAHKXLoS3N1q1HuAxWHH5YYn1DpqSkR+XiZhXetLCTF+30= X-Received: by 2002:a05:6902:1142:: with SMTP id p2mr16763193ybu.279.1635155745658; Mon, 25 Oct 2021 02:55:45 -0700 (PDT) MIME-Version: 1.0 References: <20211025082843.671690-1-songyuanzheng@huawei.com> In-Reply-To: <20211025082843.671690-1-songyuanzheng@huawei.com> From: Muchun Song Date: Mon, 25 Oct 2021 17:55:07 +0800 Message-ID: Subject: Re: [PATCH -next] mm/vmpressure: fix data-race with memcg->socket_pressure To: Yuanzheng Song Cc: Andrew Morton , Shakeel Butt , Roman Gushchin , Johannes Weiner , Michal Hocko , Matthew Wilcox , Alex Shi , Wei Yang , LKML , Linux Memory Management List Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: AEC41801A8A0 Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=4W4AxVmN; spf=pass (imf06.hostedemail.com: domain of songmuchun@bytedance.com designates 209.85.219.180 as permitted sender) smtp.mailfrom=songmuchun@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com X-Stat-Signature: 5je9pc14irnyw785gs41qipbkcr98z1i X-Rspamd-Server: rspam06 X-HE-Tag: 1635155746-753602 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Oct 25, 2021 at 4:14 PM Yuanzheng Song wrote: > > BUG: KCSAN: data-race in __sk_mem_reduce_allocated / vmpressure > > write to 0xffff8881286f4938 of 8 bytes by task 24550 on cpu 3: > vmpressure+0x218/0x230 mm/vmpressure.c:307 > shrink_node_memcgs+0x2b9/0x410 mm/vmscan.c:2658 > shrink_node+0x9d2/0x11d0 mm/vmscan.c:2769 > shrink_zones+0x29f/0x470 mm/vmscan.c:2972 > do_try_to_free_pages+0x193/0x6e0 mm/vmscan.c:3027 > try_to_free_mem_cgroup_pages+0x1c0/0x3f0 mm/vmscan.c:3345 > reclaim_high mm/memcontrol.c:2440 [inline] > mem_cgroup_handle_over_high+0x18b/0x4d0 mm/memcontrol.c:2624 > tracehook_notify_resume include/linux/tracehook.h:197 [inline] > exit_to_user_mode_loop kernel/entry/common.c:164 [inline] > exit_to_user_mode_prepare+0x110/0x170 kernel/entry/common.c:191 > syscall_exit_to_user_mode+0x16/0x30 kernel/entry/common.c:266 > ret_from_fork+0x15/0x30 arch/x86/entry/entry_64.S:289 > > read to 0xffff8881286f4938 of 8 bytes by interrupt on cpu 1: > mem_cgroup_under_socket_pressure include/linux/memcontrol.h:1483 [inline] > sk_under_memory_pressure include/net/sock.h:1314 [inline] > __sk_mem_reduce_allocated+0x1d2/0x270 net/core/sock.c:2696 > __sk_mem_reclaim+0x44/0x50 net/core/sock.c:2711 > sk_mem_reclaim include/net/sock.h:1490 [inline] > ...... > net_rx_action+0x17a/0x480 net/core/dev.c:6864 > __do_softirq+0x12c/0x2af kernel/softirq.c:298 > run_ksoftirqd+0x13/0x20 kernel/softirq.c:653 > smpboot_thread_fn+0x33f/0x510 kernel/smpboot.c:165 > kthread+0x1fc/0x220 kernel/kthread.c:292 > ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:296 > > When reading memcg->socket_pressure in mem_cgroup_under_socket_pressure() > and writing memcg->socket_pressure in vmpressure() at the same time, > the data-race occurs. > > So fix it by using READ_ONCE() and WRITE_ONCE() to read and write > memcg->socket_pressure. > > Signed-off-by: Yuanzheng Song Reviewed-by: Muchun Song Thanks.