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 6CD9AEB64D7 for ; Tue, 20 Jun 2023 20:20:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F388E8D0002; Tue, 20 Jun 2023 16:20:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EE8D48D0001; Tue, 20 Jun 2023 16:20:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB0AD8D0002; Tue, 20 Jun 2023 16:20:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id CAE198D0001 for ; Tue, 20 Jun 2023 16:20:19 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 283F140604 for ; Tue, 20 Jun 2023 20:20:19 +0000 (UTC) X-FDA: 80924243358.27.7EC5D70 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by imf26.hostedemail.com (Postfix) with ESMTP id 49ABE14000E for ; Tue, 20 Jun 2023 20:20:16 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=w7nUpful; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.41 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=1687292416; 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=2Zy9E39IJgeyzmvbXlZlqFtNdvkFQRFNcCLclJAn3Dk=; b=vIFNP8BBb7rBaAGUAor43qP3X0QRXZcqD/AFDTkAaA6GMsIpn7dmMeRanHf8gKQhpf5Om3 wDocZ5EjcI6WrPE2G85XgZU6myVc7r8r6nVKA1fGJXhda2wsHCju+2d1EKkntT0xbcvW9Z 9AVdM66SmHz7o9B9l7mnJx1c7M+oNKg= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=w7nUpful; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687292416; a=rsa-sha256; cv=none; b=1HIoiv6iK0x2FSBxr320RkuVksKzAcggodUcWOaanS70m1uSQ9mDmb42Fj6lrAKz5sOgkK b5cInGIoRBLTzHYRxdQyjGjx/plBxIadXkbRuBOFwYSsElykgobprMs6QFtBWKMWCkC7r/ kw4WicR1n8FiR9qdX/dyQAgJY+YOHOA= Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-9889952ed18so427001166b.3 for ; Tue, 20 Jun 2023 13:20:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687292415; x=1689884415; 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=2Zy9E39IJgeyzmvbXlZlqFtNdvkFQRFNcCLclJAn3Dk=; b=w7nUpfulgg5cVpdAqhG2Xt87fp+T4OHkUaUAAHNTM5RqhmEqgDa+Eq/iezw9tpQc2g rB4y3XXbzSHodfyyJ2fcvFBOX4t1l5fvxzPDV8K158mDoC3D6RSqN8HaWllO1jiHck+a EF0ElzRbdWu8NE0gQUYTT1XW7nJMk16fudN8dQc6BIApzpEsUcI+w/VpM1X9SFmCDrgE 7k5f3sW0hVpjZje7oO3U3k2s4/vUAY91azC8VAW+0pDB1PLq4zT4QbvjeFjUMMTIGnJU ftcKSF5l/6By5dHPdtDLRcPIikVcjMYdVgKKfzjdnRUg8AsvjJrMlJh2etXoLalRnfcR LBDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687292415; x=1689884415; 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=2Zy9E39IJgeyzmvbXlZlqFtNdvkFQRFNcCLclJAn3Dk=; b=M+zyaFtYK0oASxQeHd8Ao/uYx3gb6HQEEUuMvxg3cpGLjUdThc/ZVVIR1ui1Ts6ZNP AUEIVQAtgi+SDc9uXR0BrzwI2fqZugfqV6tQzaF105/74dbqikKtvS5CcWdiZW14hPOr XhO6zSq/mmEWLycdFZvHMaolmqCTcus/39Cet4i3Cekwb+iNR7dimlg4KCIDzkf/5YEQ /rY0qN2GfX7DHyNOit3dqbG4XsaDtnhKLZW7atdJgm0F7XqtQ2vKUZvpDrPvsiBRj8mk /2fwZr5OLba6t1rAKSRsHA8Hac/bxov+4yIWpnDmAS4+ovEjqOBRDNZzJUXmHeYNbmGR 34wg== X-Gm-Message-State: AC+VfDy3e4sywnDkWf1MNQshOoxbB65n8Ufb/W865d3OBKpPrlyIttnl VadWQmSlcLny6qAHOlyQvwTT7bQOzcaIxIrgJVv7Qw== X-Google-Smtp-Source: ACHHUZ4F1CiTZ+c9pAohA09rIRP6Qf5cYoYVb0ympDQgfKqCJ3aijqKOesZFVWTbdAIVjt+MYTHTHY9ehWV3hzkRzJs= X-Received: by 2002:a17:907:808:b0:977:ceab:3996 with SMTP id wv8-20020a170907080800b00977ceab3996mr11622602ejb.76.1687292414702; Tue, 20 Jun 2023 13:20:14 -0700 (PDT) MIME-Version: 1.0 References: <20230619193821.2710944-1-yuzhao@google.com> In-Reply-To: <20230619193821.2710944-1-yuzhao@google.com> From: Yosry Ahmed Date: Tue, 20 Jun 2023 13:19:38 -0700 Message-ID: Subject: Re: [PATCH mm-unstable v1] mm/mglru: make memcg_lru->lock irq safe To: Yu Zhao Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, syzbot+87c490fd2be656269b6a@syzkaller.appspotmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 49ABE14000E X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: ycd9tdm6pe9geikgdod8kpsryppaopcu X-HE-Tag: 1687292416-805475 X-HE-Meta: U2FsdGVkX1/MEHr+UWl/QT22fyYbmIAHCwCUJyWNQO7Dkf32f+QPZqvHBxthL4Hrg1kWu3UEYcHesXuv1IbQcS8vf/8CwwDsXc+P1q15SBySRMqvd6+YyONCjrxZP8+oBusOz1r6dexq0bHqAVAj10kNnoEYmJtzX3sEaNC5rgTElKTMzCrdVzXDkuSF6dj8ybR5ogPbmWGlSxC/F31lOJSkc22Czyc4MFmhezh7UXguArvXBfAX3xgNEas/eH8OYKQNVKQ0RuXp0PbhBZFbAW1Di9VM7fGxEFQFi9b0YIqB3tuumd4pP8diIRU/ejoSuJomlui24+O1cg3rJy0yViul538VWgklBbiViLbUtAUzJnGO1Qo6zLlpUZno/3a02Pc6l70MCs3ANgidET5Tx5mIl7IHw6s4SNwdwf/+PFlhHt6YdDog6vk4qh0bTn4p6E3yYsT/bVawZ2336os2cwMW/W+/0mNwGPeU1gLEh9qqdjF1rrOwvxQuvbTf+1THJyP3fLJqDOWEZMvz8cDK7mLXT97TurUFbuWLUOX5c/E8+4v8/u40/TSLB4Gnd+mQx5jB3F8lT1SssGMtFioyBmbHoSfEiIGc7ZLXnalnch9SR70+9KcQ05D23gT2ox0bUwCkI8q6Y7nNaSIxgY7997wfSltdKJoOT1Tt4F1XerymPT8KRm6k24wEPMfSbWiIWLscK6wtTG7VpDrmreWa1WmludWdXmKhCl+ewvcDf77gN2MmaihuP4/+jb6wrfhjnguQVkxWAFYXP85yO6ouSeB7hmIZofSU46Sd/ItzoliHDJAJkuvoSl4yq1ZYVMH9okz8mzB+TUOIp6EmqlHWmQ4GFD5s7SlWO41klE2AOR64HU/BaVdiH/sV1OJxvhP9Vzs00PNpRqdzi/+CNHFrxZ7nDHabfVa6VjHQ3WqP1xAXS6Hm9PRCylOu2U8DaU7u1FDWL8cYV79aY96C0OC AP4hb2vC W5ShFAbjIyEgURlifLhUwSXJHMdrGfOs3d3pOQT1nYcaNQ3C7IpCmskFzttEFjxMdpzly6sP4MwFJ3kietZZazUc0h/7mhnXLhWIUBb2bg4VAFPLzqY4LNhdTOiHQRIMzGJ6bdJhMwRbIt/JZ90y/VTMZlZ02Mara5mCnMlbVQCFgUwfMvk+LngaAp2qjuINckj6ZH3pWfEVvzBRMXPrtSQ0EOzHWQxbdoEIaYTjUGsgyVVqzDjwpnSX9gdwwhZSkNsKOQ9EG108Y2lNi1KsMpp78nK8E/ZDx2Lj4rWvhaauFDM/2VXao8NWVXzWNGBFMJX4LtWWrYTcYcIo0Twn2Op0L9YEoLUef/hmLoHB3mrb6kfcosjqhgK9g13QFyeLrvq3KSdP9Mwe858EGJ0fIF/NCew5z/77T1oGiBeVoN/KBtZlOfnq9OltbLq4mgtRQ4hKKRtS1mEAD4QFZx4Kozda/Pdby1eGQrqGziwGWfZXwXsOqNQDDtKPEGly1ymn2wStJ 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, Jun 19, 2023 at 12:38=E2=80=AFPM Yu Zhao wrote: > > lru_gen_rotate_memcg() can happen in softirq if > memory.soft_limit_in_bytes is set. This requires memcg_lru->lock to be > irq safe. > > This problem only affects memcg v1. > > Reported-by: syzbot+87c490fd2be656269b6a@syzkaller.appspotmail.com > Closes: https://syzkaller.appspot.com/bug?extid=3D87c490fd2be656269b6a > Fixes: e4dde56cd208 ("mm: multi-gen LRU: per-node lru_gen_folio lists") > Signed-off-by: Yu Zhao > --- > mm/vmscan.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 45d17c7cc555..27f90896f789 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -4759,10 +4759,11 @@ static void lru_gen_rotate_memcg(struct lruvec *l= ruvec, int op) > { > int seg; > int old, new; > + unsigned long flags; > int bin =3D get_random_u32_below(MEMCG_NR_BINS); > struct pglist_data *pgdat =3D lruvec_pgdat(lruvec); > > - spin_lock(&pgdat->memcg_lru.lock); > + spin_lock_irqsave(&pgdat->memcg_lru.lock, flags); Nit: I think it might be useful to add a comment here that this is needed due to the call path from memcg_check_events() -> mem_cgroup_update_tree() -- so that if that call path changes we can come back and remove the irq-disablement. FWIW: Reviewed-by: Yosry Ahmed > > VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); > > @@ -4797,7 +4798,7 @@ static void lru_gen_rotate_memcg(struct lruvec *lru= vec, int op) > if (!pgdat->memcg_lru.nr_memcgs[old] && old =3D=3D get_memcg_gen(= pgdat->memcg_lru.seq)) > WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1= ); > > - spin_unlock(&pgdat->memcg_lru.lock); > + spin_unlock_irqrestore(&pgdat->memcg_lru.lock, flags); > } > > void lru_gen_online_memcg(struct mem_cgroup *memcg) > @@ -4810,7 +4811,7 @@ void lru_gen_online_memcg(struct mem_cgroup *memcg) > struct pglist_data *pgdat =3D NODE_DATA(nid); > struct lruvec *lruvec =3D get_lruvec(memcg, nid); > > - spin_lock(&pgdat->memcg_lru.lock); > + spin_lock_irq(&pgdat->memcg_lru.lock); > > VM_WARN_ON_ONCE(!hlist_nulls_unhashed(&lruvec->lrugen.lis= t)); > > @@ -4821,7 +4822,7 @@ void lru_gen_online_memcg(struct mem_cgroup *memcg) > > lruvec->lrugen.gen =3D gen; > > - spin_unlock(&pgdat->memcg_lru.lock); > + spin_unlock_irq(&pgdat->memcg_lru.lock); > } > } > > @@ -4845,7 +4846,7 @@ void lru_gen_release_memcg(struct mem_cgroup *memcg= ) > struct pglist_data *pgdat =3D NODE_DATA(nid); > struct lruvec *lruvec =3D get_lruvec(memcg, nid); > > - spin_lock(&pgdat->memcg_lru.lock); > + spin_lock_irq(&pgdat->memcg_lru.lock); > > VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list= )); > > @@ -4857,7 +4858,7 @@ void lru_gen_release_memcg(struct mem_cgroup *memcg= ) > if (!pgdat->memcg_lru.nr_memcgs[gen] && gen =3D=3D get_me= mcg_gen(pgdat->memcg_lru.seq)) > WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru= .seq + 1); > > - spin_unlock(&pgdat->memcg_lru.lock); > + spin_unlock_irq(&pgdat->memcg_lru.lock); > } > } > > -- > 2.41.0.185.g7c58973941-goog > >