From patchwork Tue May 11 17:34:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyeonggon Yoo <42.hyeyoo@gmail.com> X-Patchwork-Id: 12251585 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 11E8CC433B4 for ; Tue, 11 May 2021 17:34:57 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7A7D961363 for ; Tue, 11 May 2021 17:34:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7A7D961363 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id CCE2B6B006E; Tue, 11 May 2021 13:34:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C7E1F6B0070; Tue, 11 May 2021 13:34:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B1EAD6B0072; Tue, 11 May 2021 13:34:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0140.hostedemail.com [216.40.44.140]) by kanga.kvack.org (Postfix) with ESMTP id 961A16B006E for ; Tue, 11 May 2021 13:34:55 -0400 (EDT) Received: from smtpin11.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 44938181AF5D8 for ; Tue, 11 May 2021 17:34:55 +0000 (UTC) X-FDA: 78129650550.11.8C72BAB Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) by imf11.hostedemail.com (Postfix) with ESMTP id 108A82000261 for ; Tue, 11 May 2021 17:34:35 +0000 (UTC) Received: by mail-pg1-f173.google.com with SMTP id s22so16252186pgk.6 for ; Tue, 11 May 2021 10:34:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mime-version:content-disposition; bh=8TzPphX9fli4xVAxW0kVe0k/sUt3bHTl0oZV5LGdFX0=; b=o8TcyGBuu/xqN9CD1W7SIKgpPvSiUZNKNqgzpKJ0cISTFNmxWSoLxyKVCyb+rgKM97 Z3JYm5RZRWqtPs6Xy7MYQTp7cVdm6I143KeuQsFcoLaJWoUqvVViGS9qrwUyrUVRJzNR xx36APXiFD9FwbLsPqOEfhbFVQ0K1in3CO3IC1kX6Kr1FGL8GdfOPOaab577Aoqqsu2g ZkfB+NwwuvKv5vZfFwbdBWiRoj4PzS6R1wk1FLLS76CucXmFRY8+amzoADEojfExMxYf KWcXq49m2e7JWsDJtBbw6zy5cxAjs4/ft+jMmXaGNhOz371bsZaHWvUf7iOIebqtPnBn NAhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition; bh=8TzPphX9fli4xVAxW0kVe0k/sUt3bHTl0oZV5LGdFX0=; b=GMTH6sGpxkPeTf1KkxX1hW/oGc2UMtXFUxQyNfNLMl77jyiUDeXn+2N280e819D0Du TZ3OkBwpV/ZpFwv6XvsE8Df9Gk77GJpB5xRDL+4td3iY2XPauQsmrmX1T/KbG8CAuono AGtMXjJwkPkPWvbllpqVFjf6/rireCGsnAtFINckNSzlvU7ST8pS3dwRxV/RSItmJvXc xTJRXFJzFxAuqpFyrTAOA/MoZk6U4Tv6VTiHfS672kjhM+1+refy8VopodfxhWaE/Foo nO+p6s8XqiISQlUFBLQzCGENln03qZR4k15YqCUVXh4z1k462OK4tKZwUd9pLPcPohTG HT/w== X-Gm-Message-State: AOAM531po1u4ETE/7SJGGQbsCgNVCXxDH1fLrUzx+511q4MeWyDdATho yjKo3/AtejUaRbaU+b801SI= X-Google-Smtp-Source: ABdhPJzUCtFgYMAmOanPYQGRfeTG8Fn0oSql+0cTgCk4RK2JBHfePXHdWaWq9gABUVwe1E+1ycWtoQ== X-Received: by 2002:a63:e60a:: with SMTP id g10mr31580737pgh.21.1620754493912; Tue, 11 May 2021 10:34:53 -0700 (PDT) Received: from hyeyoo ([183.99.11.150]) by smtp.gmail.com with ESMTPSA id v22sm14007943pff.105.2021.05.11.10.34.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 May 2021 10:34:53 -0700 (PDT) Date: Wed, 12 May 2021 02:34:48 +0900 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: vbabka@suse.cz, akpm@linux-foundation.org, iamjoonsoo.kim@lge.com, rientjes@google.com, penberg@kernel.org, cl@linux.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, 42.hyeyoo@gmail.com Subject: [PATCH v3] mm, slub: change run-time assertion in kmalloc_index() to compile-time Message-ID: <20210511173448.GA54466@hyeyoo> MIME-Version: 1.0 Content-Disposition: inline X-Rspamd-Queue-Id: 108A82000261 Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=o8TcyGBu; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of 42hyeyoo@gmail.com designates 209.85.215.173 as permitted sender) smtp.mailfrom=42hyeyoo@gmail.com X-Rspamd-Server: rspam03 X-Stat-Signature: cgpo49166zqo6x97kx44csa1mxw3zgi5 Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf11; identity=mailfrom; envelope-from="<42.hyeyoo@gmail.com>"; helo=mail-pg1-f173.google.com; client-ip=209.85.215.173 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1620754475-149192 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: currently when size is not supported by kmalloc_index, compiler will generate a run-time BUG() while compile-time error is also possible, and better. so changed BUG to BUILD_BUG_ON_MSG to make compile-time check possible. also removed code that allocates more than 32MB because current implementation supports only up to 32MB. Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Reviewed-by: Vlastimil Babka Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Reviewed-by: Vlastimil Babka Signed-off-by: Andrew Morton Signed-off-by: Marco Elver --- include/linux/slab.h | 7 +++++-- mm/slab_common.c | 7 +++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 6d454886bcaf..df1937309df2 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -345,6 +345,9 @@ static __always_inline enum kmalloc_cache_type kmalloc_type(gfp_t flags) * 1 = 65 .. 96 bytes * 2 = 129 .. 192 bytes * n = 2^(n-1)+1 .. 2^n + * + * Note: there's no need to optimize kmalloc_index because it's evaluated + * in compile-time. */ static __always_inline unsigned int kmalloc_index(size_t size) { @@ -381,8 +384,8 @@ static __always_inline unsigned int kmalloc_index(size_t size) if (size <= 8 * 1024 * 1024) return 23; if (size <= 16 * 1024 * 1024) return 24; if (size <= 32 * 1024 * 1024) return 25; - if (size <= 64 * 1024 * 1024) return 26; - BUG(); + + BUILD_BUG_ON_MSG(1, "unexpected size in kmalloc_index()"); /* Will never be reached. Needed because the compiler may complain */ return -1; diff --git a/mm/slab_common.c b/mm/slab_common.c index fe8b68482670..97664bbe8147 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -1192,8 +1192,8 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags) /* * kmalloc_info[] is to make slub_debug=,kmalloc-xx option work at boot time. - * kmalloc_index() supports up to 2^26=64MB, so the final entry of the table is - * kmalloc-67108864. + * kmalloc_index() supports up to 2^25=32MB, so the final entry of the table is + * kmalloc-32M. */ const struct kmalloc_info_struct kmalloc_info[] __initconst = { INIT_KMALLOC_INFO(0, 0), @@ -1221,8 +1221,7 @@ const struct kmalloc_info_struct kmalloc_info[] __initconst = { INIT_KMALLOC_INFO(4194304, 4M), INIT_KMALLOC_INFO(8388608, 8M), INIT_KMALLOC_INFO(16777216, 16M), - INIT_KMALLOC_INFO(33554432, 32M), - INIT_KMALLOC_INFO(67108864, 64M) + INIT_KMALLOC_INFO(33554432, 32M) }; /*