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 EAF66C6FD1C for ; Sat, 25 Mar 2023 07:07:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2C1D06B0071; Sat, 25 Mar 2023 03:07:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 273E76B0074; Sat, 25 Mar 2023 03:07:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 11E6B6B0075; Sat, 25 Mar 2023 03:07:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id F2E936B0071 for ; Sat, 25 Mar 2023 03:07:27 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C6A09A373E for ; Sat, 25 Mar 2023 07:07:27 +0000 (UTC) X-FDA: 80606539734.29.FEFF730 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by imf26.hostedemail.com (Postfix) with ESMTP id F102C140009 for ; Sat, 25 Mar 2023 07:07:25 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=bpjhcmtz; spf=pass (imf26.hostedemail.com: domain of jihongbin999@gmail.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=jihongbin999@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679728046; 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=xxCiDzWJtYvZXYASFFO8pwcp7ZZs/D/6ZbQ/mJbCObY=; b=qCS6UvebuTdXXAUvt+1efNXP3Inyc5DD3W3AXIxx1gUmySZ9ck5VA9t7sRhywV61ZDAXMP IXXE4FqOoAlgxruptrKMmtEfeDYOMAXjfuH/mH/B7HBxC6E1ux7wSjc5ZfeA42r4FsySb3 l9TGV+kgvzBFgZzp7MLJ+FygzJp+/xI= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=bpjhcmtz; spf=pass (imf26.hostedemail.com: domain of jihongbin999@gmail.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=jihongbin999@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679728046; a=rsa-sha256; cv=none; b=Ii39fMTdZDDt6Jsu/BszEPmPN+LWYSVAPERdLJ6HUDIVhSP7Y4Fxpp/kamts+jmsaBarp4 2xTtHSfk9gT9CDxeWTBgngBV7F6qXPa/vzWqpnBNjMWBNWgpjd3fJZMUaZbQ1GIvUghDHr qARqG1xLhp7+IsUTFT3YUTpVBC+hs+8= Received: by mail-pl1-f177.google.com with SMTP id bc12so3848676plb.0 for ; Sat, 25 Mar 2023 00:07:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679728045; 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=xxCiDzWJtYvZXYASFFO8pwcp7ZZs/D/6ZbQ/mJbCObY=; b=bpjhcmtz81fHpF7LDHdVmp6d+W4Q/kgJIYGcZHbTpTu1CrFxV6d8eyPVLET29+DVym zQJg/ELE/zUbeq/X7PRgVzG+P4y8uGoAndDSevKUSfgt3/swzadZKX+Gra7krrm2rfUf q/9CzQusV92NLMa+3G6jTC3KZuaVuidJrjqCEDzckU0QrOROC9LG6SWyIKk7V4hlxpci NnkiAhL/zmwmTcYXfW9lCi5pkxhokStW5G1c2ucrc69gMFc5KDPpC7vLqn7HWI1lKSFD tuRnEXD0cziGDCdLIC1hY4QlvIuuw6bBToweYpVMcWTG0dgf9+2wnbGkgmDkDNjOFOV3 YV0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679728045; 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=xxCiDzWJtYvZXYASFFO8pwcp7ZZs/D/6ZbQ/mJbCObY=; b=iSp3uWFNdXzZ4E0+pnGgdmkMq7dM3RUJ0Y2EC9XShrrtB85eCS4GsdpMAUZILL+TQj ESPPM2EhbdKXm2FSdHZ0Gzsr9wNvMJaoWuOJS7FkzgPUpWnSPnh/Kd3nMe7DwHcmsHfd 80Z58LEg4IXNeQL0Q4Fe98AEtkmT8kMh9KZZa2pGgkYbzsyVGtpB2arwvDzw/7xrxxVY mfSygiJBtP98z+9tdimQ7A8FyqC1wnN0j26leKtZ05MjvubKQWkR7zWghrZyasj0Ykup KTCdeRm0AtYkUd5nrpT2FUXU+xMmZL2LRH8AyxVcMSrNyLbGFnCrwwYmzc1100TZLgcL x34g== X-Gm-Message-State: AAQBX9fyvkgaxJU0xjH3T0TOLkZSlEVFE2gyRVhaNeyZYDKvjs1Oqfli J1EkxqWfJEiKJ6ELyJxuCP3OJIDsziPfcQCeLSM= X-Google-Smtp-Source: AKy350briNpxVFSKYeuamI8CpdgfJj4SgN94KkLbKSu53DazWrEDUPQIdPZ2Gyz8mwTYD7XOJxaOGJo+g3bmqeMKfmc= X-Received: by 2002:a17:90a:ac16:b0:234:e49:ba9f with SMTP id o22-20020a17090aac1600b002340e49ba9fmr1608571pjq.4.1679728044886; Sat, 25 Mar 2023 00:07:24 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Hongbin Ji Date: Sat, 25 Mar 2023 15:07:14 +0800 Message-ID: Subject: Re: [PATCH] memblock: Make memblock memblock_dbg info handle overflowing range @base + @size To: Mike Rapoport Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: F102C140009 X-Stat-Signature: q51um1cqnb5zasaa3e18ojfay8fdd6yo X-Rspam-User: X-HE-Tag: 1679728045-452631 X-HE-Meta: U2FsdGVkX18TEGeDH92Q5PAebv/2f0qsHMJUs+FNCLgElUpwTAGMf6lcPNgAZPQqIm8hSYxAPjediA1621d35l6McL7F9ziMYXxAfCQyKYgw9ERYOfrCLKK+Bbv5LAxT7ds/nLWi65OJ4DiDq/nlxZp6l2QawiEqRNbjmrLer7NOnl5IHhbVhvigZHdbSwoMHSx8+3oPxyJEnwWFyTYDNDZ3KzIMHVUVwhJQ8qyL8fK9cu+0xqcwvt3qF7TCJxkkHoRlHgGguGt2WXlpQ9zK9LCHpkzdMpmAfi1UluiSubonVxUdVELGSeT22Ee/hb9DszCebiA+WJkSLqWoijKSxzMB+k7hCFNl0F9Sf9QERHHygI+OzieuIZLo7XmnG5GEpsF3nVT4puzLe/wuDS0osuFRp0ZDxelEI5tb90y3e5RJBcPxb80aI0HDAIHUt7rGzem9Yk7fblrpL8bEADhe9ZRkW6rsHfAEhlhTA9PNQup5jg0/BhQw0ki2CqvGZvvh27ey1FrM46dhBnpY06lyDRR2npHyWSqMEWi12PQOOpvhRP+HJ33OHmc5EbHWWw+nQuRnBAjQ20+0UnB5uu0InhkUv259XhU1KySbcc9ErOdyW/1a3UB9ViD8yJ8LYSlTQekT7/tse/lf1McqV8aOGy0tKai0SFHHzSkl2e8Cd7cBWWQCC8hCE80glG1V7N7JMZosRoyxByhIJCcMjJsc5WQQqtPn4S5dLoFkVcG8UCvN1DZT8Y3iSyvekYfZqGUOT1qU5ls0Eegryvh4Z10/oYuruqofEkPoSMecM4AojygX2BG3HhWdwXylMGh42lBCeBiItDBMpSnZfit7XlK4Bt+lZZKCnqz7LeRF9M8qp4NHaEBe2WGzokpYmENpU/D+0CPRckmPpYDF5lp0TBqdczdBB70r98/p7H3wdlN87LHSvEO4ahRAsw1nBhc6POHGLySYkNUG3MB7upgyExP 7hJs97BG wvwcb485WdZJEIcKd0KP0SFEEhbF0pPJvP3Q0ZUEDLyri9dGYENmxfZwdPbGsmBvMXyu5GBqMcS1+7S11dEjMzrZ2CjBxya+B6OTgmJ98yWn4LlGoy58TcsFnQBnbnm+hP3eV+VFf9AUVUreBpTES0I3LTiMyrRZTREHQBc2sCNc3Lzn60zKLdRCX+1y9SOdQDp5nBD483ke14lOUnphIn78BEDgRR7RXH+eA6XFz7k8G3YvyR2rO8amalGmAVyEx9RQh+b+jxbnE6fDoUW8zP+tXj6F8Pb+GUGAddP3orPIRKENn69Sp2LaHMyHEXcCQoB1zVR8XbmLRAH+RVpFNYtb+jEXF7rrDly/AiW8wD3zU/bkAk1UGvCPh2vZnS4UoPBF2SMnpxdWcpVVkPzZ8+SZ2K3J8CRprno4RQK045A/vqoU76Gn3TgnLGNuO9O64gg/7nBkl7WE+g5ztmh+/J2/V+nN7zOZy29Da1g0U6KtoIxoHUMn7OCoEc3a+30P1P6Y/PaWtr3hSGzgXIM+9YxKgv0qI3ivE8DmwrfV1MwPt4fL1KqwZ8CWO4cPfalf3/Duat3MbonylDsnEt5jKvkIjNZ1CSSdOUFGH 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: Actually @base + @size overflows On Sat, Mar 25, 2023 at 3:04=E2=80=AFPM Hongbin Ji = wrote: > > Sorry, this is the first time I use email, I checked the top post and > bottom post just now, I will modify the sending method. > > Passing an oversized @size argument is allowed inside membloc_remove(). > > static inline phys_addr_t memblock_cap_size(phys_addr_t base, phys_addr_t= *size) > { > return *size =3D min(*size, (phys_addr_t)ULLONG_MAX - base); > } > > phys_addr_t end =3D base + memblock_cap_size(base, &size); > > and internally checks and handles @size parameter overflow > > Mike Rapoport =E4=BA=8E2023=E5=B9=B43=E6=9C=8825=E6=97= =A5=E5=91=A8=E5=85=AD 14:42=E5=86=99=E9=81=93=EF=BC=9A > > > > On Sat, Mar 25, 2023 at 02:25:58PM +0800, Hongbin Ji wrote: > > > It is just to correct the information displayed by the debugging. > > > The wrong information display is also a problem, but it is not a > > > problem that affects the function > > > > Please don't top post. > > > > Wrong debugging info will be the least of the problems if memblock_add(= ) or > > membloc_remove() are called with wrong parameters. > > > > Please work on cleanups based on code inspection outside of mm/ > > > > > Mike Rapoport =E4=BA=8E2023=E5=B9=B43=E6=9C=8825=E6= =97=A5=E5=91=A8=E5=85=AD 14:04=E5=86=99=E9=81=93=EF=BC=9A > > > > > > > > On Fri, Mar 24, 2023 at 04:15:13PM +0800, =E7=BA=AA=E5=AE=8F=E5=AE= =BE wrote: > > > > > Allow memblock users to specify range where @base + @size overflo= ws, > > > > > This will cause the address range information in the debug output= to > > > > > be displayed incorrectly. > > > > > > > > Is there a real problem you are trying to solve? > > > > > > > > > For example, calling memblock_remove(1ULL << PHYS_MASK_SHIFT, > > > > > ULLONG_MAX) in arch/arm64/mm/init.c, > > > > > would be displayed as: > > > > > [ 0.000000] memblock_remove: [0x0001000000000000-0x0000ffffffffff= fe] > > > > > arm64_memblock_init+0x24/0x270 > > > > > but we expect the output: > > > > > [ 0.000000] memblock_remove: [0x0001000000000000-0xffffffffffffff= ff] > > > > > arm64_memblock_init+0x24/0x270 > > > > > > > > > > Signed-off-by: Hongbin Ji > > > > > --- > > > > > mm/memblock.c | 14 +++++++------- > > > > > 1 file changed, 7 insertions(+), 7 deletions(-) > > > > > > > > > > diff --git a/mm/memblock.c b/mm/memblock.c > > > > > index 25fd0626a9e7..567b99e4355d 100644 > > > > > --- a/mm/memblock.c > > > > > +++ b/mm/memblock.c > > > > > @@ -700,7 +700,7 @@ static int __init_memblock > > > > > memblock_add_range(struct memblock_type *type, > > > > > int __init_memblock memblock_add_node(phys_addr_t base, phys_add= r_t size, > > > > > int nid, enum memblock_flags flags) > > > > > { > > > > > - phys_addr_t end =3D base + size - 1; > > > > > + phys_addr_t end =3D base + min(size, PHYS_ADDR_MAX - base + 1) = - 1; > > > > > > > > > > memblock_dbg("%s: [%pa-%pa] nid=3D%d flags=3D%x %pS\n", __func_= _, > > > > > &base, &end, nid, flags, (void *)_RET_IP_); > > > > > @@ -721,7 +721,7 @@ int __init_memblock memblock_add_node(phys_ad= dr_t > > > > > base, phys_addr_t size, > > > > > */ > > > > > int __init_memblock memblock_add(phys_addr_t base, phys_addr_t s= ize) > > > > > { > > > > > - phys_addr_t end =3D base + size - 1; > > > > > + phys_addr_t end =3D base + min(size, PHYS_ADDR_MAX - base + 1) = - 1; > > > > > > > > > > memblock_dbg("%s: [%pa-%pa] %pS\n", __func__, > > > > > &base, &end, (void *)_RET_IP_); > > > > > @@ -822,7 +822,7 @@ static int __init_memblock > > > > > memblock_remove_range(struct memblock_type *type, > > > > > > > > > > int __init_memblock memblock_remove(phys_addr_t base, phys_addr_= t size) > > > > > { > > > > > - phys_addr_t end =3D base + size - 1; > > > > > + phys_addr_t end =3D base + min(size, PHYS_ADDR_MAX - base + 1) = - 1; > > > > > > > > > > memblock_dbg("%s: [%pa-%pa] %pS\n", __func__, > > > > > &base, &end, (void *)_RET_IP_); > > > > > @@ -854,7 +854,7 @@ void __init_memblock memblock_free(void *ptr,= size_t size) > > > > > */ > > > > > int __init_memblock memblock_phys_free(phys_addr_t base, phys_ad= dr_t size) > > > > > { > > > > > - phys_addr_t end =3D base + size - 1; > > > > > + phys_addr_t end =3D base + min(size, PHYS_ADDR_MAX - base + 1) = - 1; > > > > > > > > > > memblock_dbg("%s: [%pa-%pa] %pS\n", __func__, > > > > > &base, &end, (void *)_RET_IP_); > > > > > @@ -865,7 +865,7 @@ int __init_memblock memblock_phys_free(phys_a= ddr_t > > > > > base, phys_addr_t size) > > > > > > > > > > int __init_memblock memblock_reserve(phys_addr_t base, phys_addr= _t size) > > > > > { > > > > > - phys_addr_t end =3D base + size - 1; > > > > > + phys_addr_t end =3D base + min(size, PHYS_ADDR_MAX - base + 1) = - 1; > > > > > > > > > > memblock_dbg("%s: [%pa-%pa] %pS\n", __func__, > > > > > &base, &end, (void *)_RET_IP_); > > > > > @@ -876,7 +876,7 @@ int __init_memblock memblock_reserve(phys_add= r_t > > > > > base, phys_addr_t size) > > > > > #ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP > > > > > int __init_memblock memblock_physmem_add(phys_addr_t base, phys_= addr_t size) > > > > > { > > > > > - phys_addr_t end =3D base + size - 1; > > > > > + phys_addr_t end =3D base + min(size, PHYS_ADDR_MAX - base + 1) = - 1; > > > > > > > > > > memblock_dbg("%s: [%pa-%pa] %pS\n", __func__, > > > > > &base, &end, (void *)_RET_IP_); > > > > > @@ -1645,7 +1645,7 @@ void __init memblock_free_late(phys_addr_t = base, > > > > > phys_addr_t size) > > > > > { > > > > > phys_addr_t cursor, end; > > > > > > > > > > - end =3D base + size - 1; > > > > > + end =3D base + min(size, PHYS_ADDR_MAX - base + 1) - 1; > > > > > memblock_dbg("%s: [%pa-%pa] %pS\n", > > > > > __func__, &base, &end, (void *)_RET_IP_); > > > > > kmemleak_free_part_phys(base, size); > > > > > -- > > > > > 2.34.1 > > > > > > > > -- > > > > Sincerely yours, > > > > Mike. > > > > -- > > Sincerely yours, > > Mike.