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 1E392D6B6DA for ; Wed, 30 Oct 2024 22:40:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 95C5B6B0089; Wed, 30 Oct 2024 18:40:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 90C266B0096; Wed, 30 Oct 2024 18:40:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7D4176B0098; Wed, 30 Oct 2024 18:40:13 -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 5D78A6B0089 for ; Wed, 30 Oct 2024 18:40:13 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 01FD31610E9 for ; Wed, 30 Oct 2024 22:40:12 +0000 (UTC) X-FDA: 82731737508.30.CCC2AA7 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf25.hostedemail.com (Postfix) with ESMTP id 7F88FA0022 for ; Wed, 30 Oct 2024 22:39:52 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=oFtFiI+g; spf=pass (imf25.hostedemail.com: domain of akpm@linux-foundation.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730327797; 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=BnIwzMg6sFJyjULvkCd85xxqwELVb3qyfXpBISEpzhM=; b=6FPe+bx/KnIr2WZ0M2f3cgtUvhnREbt4bC/mhP2FlKx4ua88i+TJGaDJ3amnNf3IrXQCMZ 54pk8qIcGrJpRcfVWucO60xwxNp6BWCXmt07E47Wn8uQgnN9VJEJ3b0FoFwHCPwFbmI73m FM/RhBOMp5JbPinUiWTH94sL8vtQVaY= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=oFtFiI+g; spf=pass (imf25.hostedemail.com: domain of akpm@linux-foundation.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730327797; a=rsa-sha256; cv=none; b=tJO77hRel7v6n5qatJTlU3gDn01rVQUZNPP9GrW7EqUys59OYeSw+OCHvUjOSzGdAVXdpr NxYJ8mHSALSEmQfV+FTlnRHsvkj70+1I7yXeWq/y5fo2/mPlW2+nyB9VO/LBrklhiug338 IMLfBe58mkegZpJZPP5uplK46IrQqc4= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id E011CA43791; Wed, 30 Oct 2024 22:38:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2871DC4CECE; Wed, 30 Oct 2024 22:40:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1730328010; bh=kmCaiCfNFt5CSiEveVa8DQBup2LvPrDutJeolCsC3M8=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=oFtFiI+gpzy/m62bJXxU3w7RSV8rT2AdnnEXeM8Ivol9gyRxSuLbDP89Wh35G4Et1 dq9HZ3zK17/mJbsx2q09n/7GOA/Na+1/wWw+S6tiA2Ogw6LaxARNNh8nzDmGfrcK62 RsDi9zouag5yRTWN9YzvoMRF661bhOmFQsZXB/b4= Date: Wed, 30 Oct 2024 15:40:09 -0700 From: Andrew Morton To: Marc Dionne Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Vlastimil Babka , Marc Dionne Subject: Re: [PATCH v3] tools/mm: Fix slabinfo crash when MAX_SLABS is exceeded Message-Id: <20241030154009.16b693b53b3c00d2439fd854@linux-foundation.org> In-Reply-To: <20241030133208.41061-1-marc.c.dionne@gmail.com> References: <20241030133208.41061-1-marc.c.dionne@gmail.com> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 7F88FA0022 X-Stat-Signature: 64rysyfkdbyjy7fr1bxnyx5748p76186 X-Rspam-User: X-HE-Tag: 1730327992-748862 X-HE-Meta: U2FsdGVkX1/nHALl7U1vRhBLFCCNjP3n1pJQ8dS3qzWIUiFk1cbUrGNcJCWSaxncvDa0LnYAqIjl9uJoiWwH+9XDEFk9fUmQdrY8lJ34uPb9zgye5ma/KLdqcAng1Cxeqh1qKMj+bSt6y96Gd7KTipwZaAsUJ0nrheI/rQS7SEYktFtvf7cgrIdlAqScfic7JTEDYcwsrvrg8RT1Ur72Fx80QpBZBT+AQqrOlt9+SiwHN/exKPUw8sZgZ/DMKSYJ2uM0AHM9iV9MHARd8kazhY0M8oOx1f3KphC+Nj652OtM6ha2K+QIrvY4/oxreWwCklIAqpXX3oTBF2kvNLsUP0du6GFcv5rylzUlLtoO8vh3ILcHe+JhLJlbaXRvAXmWNCBYqjcn0KsR0aOXw3jILAFlTtIH7FkEKWLCcSvtu6+1VKs2wZbCeqvGv/asZHbG9CU5a7D23pc27DmD6OiTPSuTwHq4S7GhGpQ17la5GcJ5NkWb5uKq97ihLS3bwcQPnFpDJglI4kv1noCPoN4vbcUwn7xKEZa5CqZnwq371VoS75gHfjixZbXMzeqiZBsx4TRRDtbUBJqbHAkIOCRMDYAyzfwzlEnQSiT5qYckqE0dgOpABVP/xxSZQONyzq9qodAhXMnwySiWPQQw4bFG7Ip2tPBavieieQ37wnmwudfWuIyweFn4vv5b8sNL4T7DjfVknXzcGFrheyszb70arcndLZ9m29zjvKcoABzFomtg4k/w8P3z7RcDVX9R98zb+LVKKCcOkS75P9Hf7f9VNmCDPrRe7BSFQL8yxr7Ry+5rFycpDczOpz1PrPLCrBu0FvsbyZK7BOLIlHsnwNUwQ9Ku26gKNd4ApRiyfxv7yBaMODq3wLbfFj3RFO+vdvn56d2t/RYNKjU/Tngk/+YTGVm+D6f4eBAtnG9rKWrfOO2/dAFCO48gx0e6Xbtrrhs8IciNmcwNbp+jj5DxuGc DC1c/i97 qtv/7BjawsrcIZi2p5tRlPAtyHVb0+XP7NtMznpidNf1Yo+X8YEs7KPLu3DVv3aGGpphWsIfaFmU9sJxz/ozXQyjMPtegQ2Y/BoELU9tJFyO9P3YNYkJF7XUgnKN57yv/+DYn8TgNrx6OSlvXv3hmVsEjX7pudcRgNpc78ZXrZAd+pFYijZ9quOxvMUyv/jB2CcN2adpkU4iM8NNm79xxcBLmFIlWtwZ9O51ff808p4a7sTGuyr8QhX9IQ7tXo5RYkNbs2/K92kM5oOrwFTOoV7sGWo/lOBuRGHNrxSqy6xyO9bg0KA7nqe2C6Vk+wxTkUYLHgMWC3q7mHX6AnqMyc+c8Xt87yIa3UkpNlvhEv51OVJgQdyLSYjLwN/NLGz6j954raMXovJLBFgTYfqCZxtVSd8YQ/C8ndykrjSbX/Zh78mLGrS/ClmElM3uCum9FxMaC 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: List-Subscribe: List-Unsubscribe: On Wed, 30 Oct 2024 10:32:08 -0300 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. > > @@ -1240,6 +1240,8 @@ static void read_slab_dir(void) > p--; > alias->ref = strdup(p); > alias++; > + if (alias - aliasinfo == MAX_ALIASES) > + fatal("Too many aliases\n"); Again, this is not correct. It has a potential off-by-one error. If at this point, (alias - aliasinfo == MAX_ALIASES), we *do not know* whether there are "Too many aliases". Because the parsing might have reached the end of input, in which case we're fine. A fix for this is to check for an invalid `alias' immediately before we use it, as I described in the previous email.