From patchwork Mon May 10 15:02:30 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: 12248413 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 C83EBC433B4 for ; Mon, 10 May 2021 15:02:46 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5FDD56147F for ; Mon, 10 May 2021 15:02:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5FDD56147F 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 D3E7E6B007B; Mon, 10 May 2021 11:02:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D14F56B007D; Mon, 10 May 2021 11:02:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BB62F6B007E; Mon, 10 May 2021 11:02:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0187.hostedemail.com [216.40.44.187]) by kanga.kvack.org (Postfix) with ESMTP id A020E6B007B for ; Mon, 10 May 2021 11:02:45 -0400 (EDT) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 54C847587 for ; Mon, 10 May 2021 15:02:45 +0000 (UTC) X-FDA: 78125638290.20.C794BC0 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by imf30.hostedemail.com (Postfix) with ESMTP id A08A5E002010 for ; Mon, 10 May 2021 15:02:09 +0000 (UTC) Received: by mail-pg1-f177.google.com with SMTP id c21so13498268pgg.3 for ; Mon, 10 May 2021 08:02:37 -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:references:mime-version :content-disposition:in-reply-to; bh=1fO+jUmqEDUXSIis3oHW0Flx6cFL+pa0JnVYsPy9H5I=; b=bFZ2I95XqBU/PFzvrqyUF/2DiJ+BxRvWsCLG7v/9/rVTuulyQvEeMXOezUvG7Y9/2X AGuB+EkdZObLucVtZcxHn9jiRQvyoQ8ttoz7V3xzHJ1i+4RNu2Q2gLmdR9g8LX2d03CZ 8tzzhdQCBdYMs3RoxPJHHXC0u5hoVUBoy94XivcekQvB8uOmlgXQEjsUB+i/VTBT6PCY sm4fPImkScmf8wPEWauw2AgHiMJe2pW9rSejFg5/jUEhEYvmt8l+gIjvszk2BAkUnrhE CDcHRDzsMayXf1u8YmpdW8HcA8xDTm/hq5zDmD2LJf36pwnJd6TZPVomR+zhZ6mEH3MJ +lEQ== 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:references :mime-version:content-disposition:in-reply-to; bh=1fO+jUmqEDUXSIis3oHW0Flx6cFL+pa0JnVYsPy9H5I=; b=RK5EBhe81FoQow7BHezhZlSF3NwlpMqKKwkG51e6aSWmHdkymUbjxhzrFuS1v7VONi zpuORmQoG5FdsihvFD+z2h39BPH/C7i/QuytcQPTMWG1ysCA9aErQEgRfDB8aFGaNBhI XqIZD3pwhi4W15A6K+/HNs6y/vkgCIkZJnqGMb5h7HOVXJJBfyFgPlrQulfyyZe+eJ7f jf/fo6lCNWMmy+r2azKFguIW7H1oWhwIbAe+ohfnAnPhY3A7Zl2weDsF4WHx8EjFHdT6 e6XanbAzCj8Gs4nJB0t/WfXEvm0VGKZob93V5GZQbhZpH2f3YFbvbrIwLVKq46a05bAH 4Inw== X-Gm-Message-State: AOAM532FeOgu4GlN0NurG6lpjh/ApvoJoN0vOuTbpEogQsMAfeQEz7Cg 9hE+feahn7sdNQicFbbktFw= X-Google-Smtp-Source: ABdhPJwkqw1ZCSxkz13/m97i+8H+bDz5Nn73JP5OO23EC+b2P1eYzE53Mns8FVUydAeWzWGOYiYlNw== X-Received: by 2002:a63:4652:: with SMTP id v18mr26064909pgk.386.1620658956714; Mon, 10 May 2021 08:02:36 -0700 (PDT) Received: from hyeyoo ([183.99.11.150]) by smtp.gmail.com with ESMTPSA id e27sm7600554pfm.144.2021.05.10.08.02.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 May 2021 08:02:36 -0700 (PDT) Date: Tue, 11 May 2021 00:02:30 +0900 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: Vlastimil Babka Cc: Matthew Wilcox , cl@linux.com, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, 42.hyeyoo@gmail.com Subject: [PATCH v2] mm: kmalloc_index: make compiler break when size is not supported Message-ID: <20210510150230.GA74915@hyeyoo> References: <20210508221328.7338-1-42.hyeyoo@gmail.com> <20210510135857.GA3594@hyeyoo> <9d0ffe49-a2e2-6c81-377b-4c8d2147dff8@suse.cz> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <9d0ffe49-a2e2-6c81-377b-4c8d2147dff8@suse.cz> X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: A08A5E002010 Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=bFZ2I95X; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of 42hyeyoo@gmail.com designates 209.85.215.177 as permitted sender) smtp.mailfrom=42hyeyoo@gmail.com X-Stat-Signature: 9cnma77ud7brn75jjct5j7xa86u13zhs Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf30; identity=mailfrom; envelope-from="<42.hyeyoo@gmail.com>"; helo=mail-pg1-f177.google.com; client-ip=209.85.215.177 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1620658929-421338 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: updated patch. let me know if something is wrong! Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> From 8fe7ecdfb0f5bd5b08771512303d72f1c6447362 Mon Sep 17 00:00:00 2001 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> Date: Mon, 10 May 2021 23:57:34 +0900 Subject: [PATCH] mm: kmalloc_index: make compiler break when size is not supported currently when size is not supported by kmalloc_index, compiler will not break. so changed BUG to BUILD_BUG_ON_MSG to make compiler break if size is wrong. this is done in compile time. 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> --- 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 0c97d788762c..fd0c7229d105 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -346,6 +346,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: you don't need to optimize kmalloc_index because it's evaluated + * in compile-time. */ static __always_inline unsigned int kmalloc_index(size_t size) { @@ -382,8 +385,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 f8833d3e5d47..39d4eca8cf9b 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -745,8 +745,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-33554432. */ const struct kmalloc_info_struct kmalloc_info[] __initconst = { INIT_KMALLOC_INFO(0, 0), @@ -774,8 +774,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) }; /* -- 2.25.1