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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6ADC1CCFA0A for ; Fri, 8 Sep 2023 16:52:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D54CA6B00EC; Fri, 8 Sep 2023 12:52:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D05096B00ED; Fri, 8 Sep 2023 12:52:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BCD016B00EE; Fri, 8 Sep 2023 12:52:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id AE3116B00EC for ; Fri, 8 Sep 2023 12:52:57 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 86966120F52 for ; Fri, 8 Sep 2023 16:52:57 +0000 (UTC) X-FDA: 81214024794.23.F0E9787 Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) by imf07.hostedemail.com (Postfix) with ESMTP id D599240029 for ; Fri, 8 Sep 2023 16:52:54 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=KKURUzsW; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf07.hostedemail.com: domain of yosryahmed@google.com designates 209.85.222.169 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694191974; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=sFgFFCKLJ5w4KEXVj4sLDW2zQKRl1fCp5caELQugN10=; b=jJbNnUnY0C9Wg5MeTNgBK4o6xachW3Ly4WbUqzrREVh2T8Eoii8sh78LRuEkhwjMq6WUMz KMB/5KyPdhb6hGjBdV9HtowXTyyOXD9kv89vd4+YlmDAPxu4h325Qz18oSoI7PF9gVI9JL W/cnSzDNIdOYyYGJgLKvCid5NF9znJQ= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=KKURUzsW; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf07.hostedemail.com: domain of yosryahmed@google.com designates 209.85.222.169 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694191974; a=rsa-sha256; cv=none; b=jAOs7U52vP+/bnYNeVviZZkrPnYkKK9PGsFQp13Mc3NTkAda8OuBiDaE6KRKaYzJWCrHXo IrbI7c0tl7aeLxHIzcCEUZnlg2HJOQgc9WczA/0c3HcKXQd1DXspzSoHyzR+Nz2hmkIy4W 6XuQOU80JqO0+F3/nZy0DLuBuqcXju8= Received: by mail-qk1-f169.google.com with SMTP id af79cd13be357-76f066e4fffso123796785a.2 for ; Fri, 08 Sep 2023 09:52:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1694191974; x=1694796774; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=sFgFFCKLJ5w4KEXVj4sLDW2zQKRl1fCp5caELQugN10=; b=KKURUzsWoqRxg0TFuNvNzlLaIsEjKrTgDRDyifozWe5E8soMoDAYdBs4b0vifsQov+ Fo0R0Q1Xxz5v6ht0BZnRR6C0mjAZc7vfXWmqyuT9t4j1wLQKEPqT5rcDAYykSwTqzbya U0t2/yQM8n6+1/BFWHJeYr1hOE/nsnkmHBUQtRsU6wnuf52foIXl9Riu/AlesLcALuq3 FMu7O3I/RCTZzfwqX/GWPlPTpShIub+agQkYWR1Jpbz0vdwIfhpZ+DwwaTglvEpUxw8Y qU1RRbQFgKZb77O4DotLpKNj1onIlCp7DHxBxevasPKIda0LcKy0aJrzqfwk/NXrDDRf Yfog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694191974; x=1694796774; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sFgFFCKLJ5w4KEXVj4sLDW2zQKRl1fCp5caELQugN10=; b=IQMJLSXRwrA2jdEBblUGbCvMKp0YQE+KVpxoyA8EFYDZ1//JolBW02M2w5Gg7d+8yc frH1cSi/n9hpWcgjsvldfGiSmcpkNZwIGyJ/s5nd9nO0ISD2taztCFf49zvqo/aDOBC+ FbW8pPo+yDkVYiZ4zylJNgBHgrzfittr7E+ecDPmgZS338pOW1uO6sXbfMDR8O9kFDzm alnESRg1NJBwD81MnMa88s4sstY22mWjG2EV0WpxzyGjBZxo8kE09au0gxZSR4HzlBzj oflfFdOZdB1VNj4ZrLys5hRlzI8SH2iZck1ppozD820U89LMeQIqtc3pc1sYRqwxINPd ThVw== X-Gm-Message-State: AOJu0YzayFsrcEaBG0tmYpdt8AigOSLivkD1U3Y7Tw7kqZ8hyqTUOVfZ F/6dqXASXLmPR6ZWmwscH4Y0UN9Vb5GMVDdSQZdKdw== X-Google-Smtp-Source: AGHT+IFXSQuRL19IVQpjI0ydTiACWCGqqd0y6PANxeLBcmXvUcpWOa8JEabxZHoydCi24eoU5hNMT11dg17tr5jT2uA= X-Received: by 2002:a0c:9a09:0:b0:64f:3c68:98ea with SMTP id p9-20020a0c9a09000000b0064f3c6898eamr3178455qvd.2.1694191973767; Fri, 08 Sep 2023 09:52:53 -0700 (PDT) MIME-Version: 1.0 References: <20230908093103.2620512-1-liushixin2@huawei.com> In-Reply-To: <20230908093103.2620512-1-liushixin2@huawei.com> From: Yosry Ahmed Date: Fri, 8 Sep 2023 09:52:14 -0700 Message-ID: Subject: Re: [PATCH] mm: vmscan: fix NULL pointer dereference in can_reclaim_anon_pages To: Liu Shixin Cc: Sachin Sant , Michael Ellerman , Andrew Morton , Huang Ying , Kefeng Wang , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D599240029 X-Stat-Signature: hmw65pmxigkee4khcftu4wasos85mqty X-HE-Tag: 1694191974-128473 X-HE-Meta: U2FsdGVkX19qNqvg4WXAibDZaV3koOTNVkMipI/vvu6Zuxh/pIFTXRqx92ku1vb9/fEiuTtbi+XDuIX7ElkyUcTsxHKU7saafADnsD0KQRaByKFVIFrhjp2wNmgwqTXxNFvAWgSE4d4OETa/1x6G7l5pklQiDRXeCuDlaR8+iMLLz1MJ7QrjwS1PghmK/e1/iYswISmwGLCtBYcxCsyqw9NYZwssss15iamJSJ7Oe8OX55ON28q9Wru+u4atw/R23W5YLKACLL9CCDjmNowrGhEtR2On8GdkZ3aFBgJLpFIA8yhL85H88Bhr7jP0d03AohLGCrxraj7tiglJSp2F92VUiEUlDI8mrvieUYgYM+S2NK18ztVdYdfvF8fRIV+4SdrUV2oaY07Z9gpx6/IQMfKbU7sVws/B5IpjgvG3tBmL+poPFfmLqqIiRZd/etZ8At4lRJFY3LVPJRlrjbqh3QaC5opPHFKQj99sPoXwkl67y2tvoUp6UtVbmgh5lVHngnTj+GvV7yl1raPerGemUZa8dcyL9Y9Ke+WVtJP8Oyh0YTom3DFmZsfh2dWRfZNtOZHUSlFxInLyLmDNzAL+GdlhPR7sNa5tkYDLHT5Lc1tmLnMQqe97CtSR57cW6JZfxPrcQDHy0bW7DkAj4Z9aLLYOXWAUL8zPtq8bJr5IsfqGq7Za9t7wyogwvk3C0aXgCo29mx/UveQNeoN2/3VYNBH0WEM1IqUleTuYHfSF+j9TwkV9lVzGpIDtPpbXFP5YdRrIdVgboNQ5200O7Abaar4bXCUYpfSZy4doPTw14S+UlTHZ+MMnkmJHQWXkiXhm32p090EGBU9+BMIOM20GRW+WmvaRxquBqbH4B/NE8jVPLdfPqMCe8wiwE1dyNHLcgwevcjd3ATZRy1/msRSb6qLRbNdjKcO5xpB1wvq1JCpd+Ji7hjXsbHRt1TZSUn9YTCYZqwg435nD9NDA2Kq 1q4qdw2h GvyfCP2aH6PXOoQoD0WasDbYssZVVRGBqfTsUt5zhGhr0S11DUE69bg7QFfb89z9Vm8Zp08J6S7aLwuM5C8aNXEluY562bwTn0RPJiQUBz7nwvQ7RZxo2jbwNjcHP//CuCxE0Shhd/5NXmYB0p83hsJK+LtpNJw9v8Jkm3/BBbHOknAj2bs7fCV5TZMZSA9n/VOXrDl9RpUn1aFSTBpKlDYtOLSC0jswDLt1v99woOb+qNoJqL/0KAhqdu+4Obm8NjAD3yOVVAsEt5ZFBdzamH6iqYv7TkfKLloB9Wgi+eMoaJdUra9wNRKaHWmGMO5Qtbc9Fgb2zfLfvLVQebcWzuPN63UABgd7uvi2h8v0AgknFAHwY8a2EGO1a4D6FN3eqa4KFO1xA0HbimrqqKKlTGLUQDH3Ffar1O4U4sDH8IGSsfQ4= 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 Fri, Sep 8, 2023 at 1:37=E2=80=AFAM Liu Shixin w= rote: > > The variable sc is NULL pointer in can_reclaim_anon_pages() when called > from zone_reclaimable_pages(). Check it before setting swapcache_only. > > Reported-by: Sachin Sant > Link: https://lore.kernel.org/linux-mm/F00144DE-2A3F-4463-8203-45E0D57E31= 3E@linux.ibm.com/T/ > Fixes: 92039ae85e8d("mm: vmscan: try to reclaim swapcache pages if no swa= p space") > Signed-off-by: Liu Shixin > --- > mm/vmscan.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index f1dc0dbf1cdb..5eb85ddf403f 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -617,7 +617,7 @@ static inline bool can_reclaim_anon_pages(struct mem_= cgroup *memcg, > if (get_nr_swap_pages() > 0) > return true; > /* Is there any swapcache pages to reclaim? */ > - if (total_swapcache_pages() > 0) { > + if (sc && total_swapcache_pages() > 0) { If sc is NULL, we will not return true even if we have pages in the swapcache. This will make can_reclaim_anon_pages() return differently based on whether sc is passed in. Is this the needed behavior? I thought the sc NULL check should be used only to guard the setting of sc->swapcache_only, not the return value as well? > sc->swapcache_only =3D 1; > return true; > } > @@ -626,7 +626,7 @@ static inline bool can_reclaim_anon_pages(struct mem_= cgroup *memcg, > if (mem_cgroup_get_nr_swap_pages(memcg) > 0) > return true; > /* Is there any swapcache pages in memcg to reclaim? */ > - if (mem_cgroup_get_nr_swapcache_pages(memcg) > 0) { > + if (sc && mem_cgroup_get_nr_swapcache_pages(memcg) > 0) { > sc->swapcache_only =3D 1; > return true; > } > -- > 2.25.1 >