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 A19EEE7716D for ; Thu, 5 Dec 2024 15:26:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 354F56B013E; Thu, 5 Dec 2024 10:19:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C81A26B00DD; Thu, 5 Dec 2024 10:19:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C68856B00E0; Thu, 5 Dec 2024 10:19:11 -0500 (EST) 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 E006B6B0098 for ; Tue, 29 Oct 2024 12:13:16 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 9BBE71A0122 for ; Tue, 29 Oct 2024 16:13:16 +0000 (UTC) X-FDA: 82727133174.07.816A3AF Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf03.hostedemail.com (Postfix) with ESMTP id F008C20004 for ; Tue, 29 Oct 2024 16:13:02 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=auristor.com (policy=quarantine); spf=pass (imf03.hostedemail.com: domain of marc.c.dionne@gmail.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=marc.c.dionne@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730218339; a=rsa-sha256; cv=none; b=FfyrWnBw4Z0qmYKmvXKU//X/dt3va6IUwiMjMCqWlwpdOKFUF+XMuF5qaaPxhrdig4rTbX VIXXmU41dzZ0GbFV/7EAxU0bVTrCbWd/pY1YKTMdZZbVR+4K8Eb2u5wvpCECrKZ4qdrfoq KAYUeiLNpc8Cr4WPdqytestOnfHi4Po= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=auristor.com (policy=quarantine); spf=pass (imf03.hostedemail.com: domain of marc.c.dionne@gmail.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=marc.c.dionne@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730218339; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4jfDxjt0O59fHl7HGYkysWqybNou5R8ZLnQr94UhTkU=; b=5tZywIhN1uIlkDVeOX/9zuhSGkLtErrkoB8OQ2owCKgsWN34Ma9OeujybkrBOP+zRPrTUa yU2LibdliEE8LxN3DmirOxiVBoO+RD/8dT9htafjCtGJRh5Cw7C2U2LP15+b5TgV7F8uXn bRL3AGRdtImnc5z+JfIL/lOJs/ibdb0= Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a9a1b71d7ffso841578066b.1 for ; Tue, 29 Oct 2024 09:13:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730218392; x=1730823192; h=content-transfer-encoding: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=4jfDxjt0O59fHl7HGYkysWqybNou5R8ZLnQr94UhTkU=; b=TI70BdefmH8dCD4BWjRsSmkRrTyac9KBldpvBo2YO/QGBo6A7OuTWhANkiGnAvG6pu NzeK0qb8EGjH0RSCoECJKYWx1Czt84pMwEp6uqe2s6OnEfCF3yCaFZprlitveYpRC7GI 9foutHbfKd0+VRAH2yd4xfrzkxeBKa587ZsPNJSo2Y5/sAf5y0aAenNWBqgZKFlMmNAo Q8wRwMEjXkzbX6yDmX3gGWNn7NsO6RgHwksA0rtZ8+tZ7vbJfk1KcffL/6wb74yOeMhh VPfF7FoA7NRZdT8nT1oHM0oiT4ZwZLml8w93Umt/pSxPH5cKLeOLYE7naLujRjPuwpCa nSnw== X-Forwarded-Encrypted: i=1; AJvYcCVkQeANkTo7eL8LR0DGJdWQ4f+5zyvtPfhMV/ojLW2u4NkD8Wc8I6bPVKIbbM6gAT5N/n2LWg3PbQ==@kvack.org X-Gm-Message-State: AOJu0Yx7csUHMGpZOV2QKbHzDdcjAjUB6KlDnQFSblLttvdk5fRfEUEf 6NpNp8BXWS587AX8+xzGQ1utGdYLgojx1yOPU7bb290KXyt9+BW6/6xvQX6R X-Google-Smtp-Source: AGHT+IFB6bl72w4UsSjBi3SO+DglBX8YG22UwPc4Vy6CxABgU3SYjtEi0ZnjmV8FQsJNHxK0VSWjIg== X-Received: by 2002:a17:907:7292:b0:a8a:6c5d:63b2 with SMTP id a640c23a62f3a-a9e3a5a049emr27520466b.18.1730218392333; Tue, 29 Oct 2024 09:13:12 -0700 (PDT) Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com. [209.85.218.43]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a9b1f297a57sm489598266b.133.2024.10.29.09.13.11 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Oct 2024 09:13:11 -0700 (PDT) Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-a9a0c40849cso924671266b.3 for ; Tue, 29 Oct 2024 09:13:11 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCVpk0tOD/9hqlFKfnX8lfa8FjGXY/ntiC+vux+2NWZr1vdQtbNglAt+0P6tjPsxWAM6zL3PgdgWFQ==@kvack.org X-Received: by 2002:a17:906:dc91:b0:a9a:4f78:c3 with SMTP id a640c23a62f3a-a9e3a5a0da3mr31773966b.21.1730218391620; Tue, 29 Oct 2024 09:13:11 -0700 (PDT) MIME-Version: 1.0 References: <20241029160609.13725-1-marc.c.dionne@gmail.com> In-Reply-To: <20241029160609.13725-1-marc.c.dionne@gmail.com> From: Marc Dionne Date: Tue, 29 Oct 2024 13:12:59 -0300 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] tools/mm: Fix slabinfo crash when MAX_SLABS is exceeded To: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspamd-Queue-Id: F008C20004 X-Rspamd-Server: rspam01 X-Stat-Signature: scehatq3mw3wnfdgx95ku5sj5ozrigwi X-Rspam: Yes X-HE-Tag: 1730218382-88936 X-HE-Meta: U2FsdGVkX1+Z/kDQLxM/GnpgILOR1ciwL/8v3FICuIdoo83z2WjQXl9q6AN6s4KjgGbBXxmV1qXEGKXDR96Gl1EEKR2Nu6u/1ulnf2wz4RYwP3+MCFEnjCmEbfquKcUFBRwQXA6H2Zo9Y/MxIJBUyHg2cxV95rALLk94DCdgShhduQJEqt2mevo/5Hd142cTnFfT4EYyFj96YJyhZxpVWPe9N1L7dQUFOjI0ZCZE5tfwIil9BRT1jsFkn+MMvKy0HbMHD49oVR7bg4z1z8ZjTGrSnZn293cWMBWBKf1QbujI22xe9XEkWZSy2IzI8qdwlml0y7duAhtMMiuSeFqAPxeKysRBBzZUPpzrDxxvsO2u0bqLlPGDDbfTKz+eX5O42bLL8g33zkwhRcvIbMaZil6zLcta/ClKZyK6k+ucW+gJzsGXX3oj0EOQIoZnskK8KuaUsrj5Eq+qcCeH+02ZpkEyuA+F9OXbfnenCAe8ElNWhBZZyuUwQhkl6WzmRFjGei59fklARt4VjfqGBvI0CaMmaFfiNDqaJO+NInDfnmay3KzZg8MPljgBHw/4N0sZsGTDmcdDNU+cWfrJxkSJAuhFLqBa8EF8O/F6KyHokdd2Z9nBW+vwj28qTJ9g9qYyaiWXTExBMXH99FqxLZj2aqGwe7oE4egLLRi0DXFwmAH2joekZrP0LXfFWn3rZkJjjcTyqjpqidhP7dEfPhZ57C7H0e6rD/lkOEIvho5ovKVdsd5fw/Bblo2rvAqJezh9QgVGBN9Zo8ufZSG2lNQkiS5N9OcxwBx45PQME7zsrH8qHgaTQOnia/sa0/lOrlKdXsX7aRVeNa3VS71yoyVky2LL8FkKMo7vLLT8GDzi7bw+vioiP2UzNZMU3t3cIA4GR45kxDDxJ2ub3tdnRgyYyIZt6gTzb68sXFGj4oie+dd1NFcj7I94xBsgH6yp8c//g8nSnLlruI6W7uM/Bkz 4pnmFces /nNgVpDPXh2FSEFV56v/RqKzST6EW4LZEvMmq8MZtxre4/tW/TllH05qQA8bcU7pUa3J4AGJW9yOK5TBImf1vIGUJyGpq/03uOMEgMEKgWy5jVy7Raj9V/OBS8cP34mTQSb2GnGqW328e2W2o89hid5A6fDQPR7tShhPhIRVXatHjGYQ9ew0nUAz23JLcAZupd51PB7NTycjHw30iMqLBnN9J0HMuUuj7KqmUZtHOvkoSSSrgLLLVh3RTQ90cJbX/koFzln/jJkQhjorLPUHWeuUrzOvRa4lmzatidmCQzQ5dxB9pZYv0tGxRkU627TUSzB83bELiR6wlTyNbX60zeEnylNdN8TFekvLWOorGp6UqBIiYHd6CAl8BXhKjmTHJl2sc3grLOjQdmfiu4JYFCy01KaOcwIk1VgNS/geNJK9TF8RI1SGj/OF0kUhDVltbZAQ8jvQfjh3MGHa+zGD+cRRfutU/aONmMN2iwvp3ZzfLVTAeuqSshvZn+Fl/s8R6dQzDTDD7JGuGlEg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.006352, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Oct 29, 2024 at 1:06=E2=80=AFPM Marc Dionne wrote: > > From: Marc Dionne > > The number of slabs can easily exceed the hard coded MAX_SLABS in the > slabinfo tool, causing it to overwrite memory and crash. > > Increase the value of MAX_SLABS, and check if that has been exceeded for > each new slab, instead of at the end when it's already too late. Also > move the check for MAX_ALIASES into the loop body. > > Signed-off-by: Marc Dionne > --- > tools/mm/slabinfo.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/tools/mm/slabinfo.c b/tools/mm/slabinfo.c > index cfaeaea71042..2c9c86d677ed 100644 > --- a/tools/mm/slabinfo.c > +++ b/tools/mm/slabinfo.c > @@ -21,7 +21,7 @@ > #include > #include > > -#define MAX_SLABS 500 > +#define MAX_SLABS 1000 > #define MAX_ALIASES 500 > #define MAX_NODES 1024 > > @@ -1240,6 +1240,8 @@ static void read_slab_dir(void) > p--; > alias->ref =3D strdup(p); > alias++; > + if (aliases > MAX_ALIASES) This is not quite right, needs to be alias - aliasinfo. Will send a V2. > + fatal("Too many aliases\n"); > break; > case DT_DIR: > if (chdir(de->d_name)) > @@ -1301,6 +1303,8 @@ static void read_slab_dir(void) > if (slab->name[0] =3D=3D ':') > alias_targets++; > slab++; > + if (slab - slabinfo > MAX_SLABS) > + fatal("Too many slabs\n"); > break; > default : > fatal("Unknown file type %lx\n", de->d_type); > @@ -1310,10 +1314,6 @@ static void read_slab_dir(void) > slabs =3D slab - slabinfo; > actual_slabs =3D slabs; > aliases =3D alias - aliasinfo; > - if (slabs > MAX_SLABS) > - fatal("Too many slabs\n"); > - if (aliases > MAX_ALIASES) > - fatal("Too many aliases\n"); > } > > static void output_slabs(void) > -- > 2.47.0 >