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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2B601CA0EFC for ; Fri, 22 Aug 2025 05:04:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:content-type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=G9hzYOZv6YXUN4v1wicJ53nqMhopJDezqYU76J2buLg=; b=CKAgTq8F/ZeWeSTudf3hs9uZQp QiDiSZ6dzwojoaGQg+roVd7omvv2rUIvI5mBB5GPH96AccMo+HGAwUEapczvTnItac3N47zu/MpMf jkFgkeC8MlcU4f7xHxMD5jZWMKFZsKalVV6xKcQ8mZYtjTCaylQalHbihO0O+nPQaceEQs3GOe9zs JY5uOyL4kaxc//PcLu++Xu8wiqj2x6ezrtwabZGXH8n2OOoJP6ylYRiLZSDkf/IXq9dgx2t+cYCF7 hXJichpl3YNDEf57kdxbF3uhxlmSynAV6MpZXt4gpHgc4uQh8t2TvQFJdAtVGVvaUPodZemitJb0P AC4IaeRg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1upJwe-00000001YND-3MOR; Fri, 22 Aug 2025 05:04:08 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1upBZd-00000000NfX-2uHn for linux-arm-kernel@lists.infradead.org; Thu, 21 Aug 2025 20:07:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1755806868; h=from:from: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; bh=G9hzYOZv6YXUN4v1wicJ53nqMhopJDezqYU76J2buLg=; b=LXnTRJPqPCckcqsbqbCd+xtPfNLIYAocoDbximXlyac0MJqFrFHGccFgAbBmP2Pk9SqeNd WMZWBqafk4PeB4vpayOmJdzWQD6YsI/fNO8yKptLyf/3EG/2QKTTxzc1WVe6+rhM8H9UYN vJthLyxpFnWkFocu13aXEUbY3rAAelc= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-502-Yiiz7F7IMECDGvdWg_K40g-1; Thu, 21 Aug 2025 16:07:31 -0400 X-MC-Unique: Yiiz7F7IMECDGvdWg_K40g-1 X-Mimecast-MFC-AGG-ID: Yiiz7F7IMECDGvdWg_K40g_1755806850 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-45a1b05a59cso9773805e9.1 for ; Thu, 21 Aug 2025 13:07:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755806850; x=1756411650; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G9hzYOZv6YXUN4v1wicJ53nqMhopJDezqYU76J2buLg=; b=O2q1ECXg69NGPorpE+04c1N16Qe0cSw9wCbsP+Km6TUCVm2BaO8OX0i2mRIKUeCB5F rbwCCc0CZZMOWD9AhmddjB+UYbsEB7izLIpQkhQfBTGDgYw+HbdO6dBUyg7iijp03ohX 2dNSBCxiKl81T9c8IEOVdHHmMCRVaHLvFJoXIYB/wo/G2MXXoaIHTa+kmUVu34b3XV6p eLISmvssaLkPOVACnduwwpxWr3wOCJPFAhUiTrlcIrAumGxqhl0Sr363Aq88qy3QQT6a Zb96aZaHYtec4iqzJvcasfDLTxZa181UaKxF5f5amBHkGi6o6MHmQ19IrhGanYbW1AMm 2a1Q== X-Forwarded-Encrypted: i=1; AJvYcCUU1llUq6jvG7glISEZufMh8WIVw1wnbarPhy3WQB3zriisbrY1v92b9ZtKQtBk8az2Sp5pF0sKUpe6r1xoR9Jg@lists.infradead.org X-Gm-Message-State: AOJu0YwuiZxrHj1oXMxUfkQmYbFO1I5HVbmtmXJqYcJAsed3mEjY6yBW PBE2m6CvDas/x92teGcPnZg9NpEEsDEnSsbuReb0sSBofnsBbv8zXmLnLbq9vSwwTk9Ra4ljX2m qdbtE1rkHeWtRKjp9cxLdX0xxbMVIvl494DZmIV3CCDGFkWHTynMEDerDkPriSHMr80F3V9qX7A 4J X-Gm-Gg: ASbGnct35dnlb9QF4CeMj08MK8Q5ll78Rg9zHTCfpp6cPIUoQPi2FJ21sq+QQx7utUz wgpHjuopKtDgn2/cBeLF8L/HVju1izwkMvY3/RRWzmzbDqd1Q9NTeAzzZbkz89PCI8FTEqQ922V RQP9kLzvOp6Fz66k6WIPeUqt1C2nS0QZNQ7zovznF+WEi96MKFQ5p+3RyIPMVgsCVp0Ul6xFto1 WFf0dPl9aRigxo83Whe3EtgfMzENPeMnBFpX7cwYqNOcMkGFany7sm577Yu6m/h/w6ZACpCMpgQ 7qaeg0CB6ELv+gxrGSSvRBEAFRnqLnzyr8IBkoWRsrc+FRKdS4bOatoWtLWL2Cx9drpaxr4epIh gBCdBo37qazD2UktXG44URA== X-Received: by 2002:a05:600c:1548:b0:459:dfde:3329 with SMTP id 5b1f17b1804b1-45b517ddbe2mr2955875e9.31.1755806850026; Thu, 21 Aug 2025 13:07:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHPNoTdvVqQJqQwQf/z0aFpcDb/7HunF1Y6KwbAqmFFF4D3cnAaKEmAnoGbjwE6N5eIepmoyw== X-Received: by 2002:a05:600c:1548:b0:459:dfde:3329 with SMTP id 5b1f17b1804b1-45b517ddbe2mr2955545e9.31.1755806849496; Thu, 21 Aug 2025 13:07:29 -0700 (PDT) Received: from localhost (p200300d82f26ba0008036ec5991806fd.dip0.t-ipconnect.de. [2003:d8:2f26:ba00:803:6ec5:9918:6fd]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3c3a8980ed5sm7242256f8f.16.2025.08.21.13.07.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 21 Aug 2025 13:07:29 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: David Hildenbrand , Alexander Potapenko , Andrew Morton , Brendan Jackman , Christoph Lameter , Dennis Zhou , Dmitry Vyukov , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, iommu@lists.linux.dev, io-uring@vger.kernel.org, Jason Gunthorpe , Jens Axboe , Johannes Weiner , John Hubbard , kasan-dev@googlegroups.com, kvm@vger.kernel.org, "Liam R. Howlett" , Linus Torvalds , linux-arm-kernel@axis.com, linux-arm-kernel@lists.infradead.org, linux-crypto@vger.kernel.org, linux-ide@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mips@vger.kernel.org, linux-mmc@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org, Lorenzo Stoakes , Marco Elver , Marek Szyprowski , Michal Hocko , Mike Rapoport , Muchun Song , netdev@vger.kernel.org, Oscar Salvador , Peter Xu , Robin Murphy , Suren Baghdasaryan , Tejun Heo , virtualization@lists.linux.dev, Vlastimil Babka , wireguard@lists.zx2c4.com, x86@kernel.org, Zi Yan Subject: [PATCH RFC 08/35] mm/hugetlb: check for unreasonable folio sizes when registering hstate Date: Thu, 21 Aug 2025 22:06:34 +0200 Message-ID: <20250821200701.1329277-9-david@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250821200701.1329277-1-david@redhat.com> References: <20250821200701.1329277-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: tu0MvyF4q4N04kFasmsrQV-pSBerIBezoQQ_xufBYiU_1755806850 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250821_130749_810150_60749350 X-CRM114-Status: GOOD ( 15.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Let's check that no hstate that corresponds to an unreasonable folio size is registered by an architecture. If we were to succeed registering, we could later try allocating an unsupported gigantic folio size. Further, let's add a BUILD_BUG_ON() for checking that HUGETLB_PAGE_ORDER is sane at build time. As HUGETLB_PAGE_ORDER is dynamic on powerpc, we have to use a BUILD_BUG_ON_INVALID() to make it compile. No existing kernel configuration should be able to trigger this check: either SPARSEMEM without SPARSEMEM_VMEMMAP cannot be configured or gigantic folios will not exceed a memory section (the case on sparse). Signed-off-by: David Hildenbrand --- mm/hugetlb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 514fab5a20ef8..d12a9d5146af4 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4657,6 +4657,7 @@ static int __init hugetlb_init(void) BUILD_BUG_ON(sizeof_field(struct page, private) * BITS_PER_BYTE < __NR_HPAGEFLAGS); + BUILD_BUG_ON_INVALID(HUGETLB_PAGE_ORDER > MAX_FOLIO_ORDER); if (!hugepages_supported()) { if (hugetlb_max_hstate || default_hstate_max_huge_pages) @@ -4740,6 +4741,7 @@ void __init hugetlb_add_hstate(unsigned int order) } BUG_ON(hugetlb_max_hstate >= HUGE_MAX_HSTATE); BUG_ON(order < order_base_2(__NR_USED_SUBPAGE)); + WARN_ON(order > MAX_FOLIO_ORDER); h = &hstates[hugetlb_max_hstate++]; __mutex_init(&h->resize_lock, "resize mutex", &h->resize_key); h->order = order; -- 2.50.1