From patchwork Fri Mar 10 10:32:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 13169122 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 473BAC6FA99 for ; Fri, 10 Mar 2023 10:32:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 561F66B0075; Fri, 10 Mar 2023 05:32:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4E1068E0001; Fri, 10 Mar 2023 05:32:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 358DA6B0075; Fri, 10 Mar 2023 05:32:18 -0500 (EST) 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 23DA46B0072 for ; Fri, 10 Mar 2023 05:32:18 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id E303B1C6C4B for ; Fri, 10 Mar 2023 10:32:17 +0000 (UTC) X-FDA: 80552623914.23.2F43E63 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf19.hostedemail.com (Postfix) with ESMTP id F215A1A0003 for ; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=xL0cbeEQ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="Tp3d18/c"; dmarc=none; spf=pass (imf19.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678444336; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=AadlA5Ixh0fCoPEBLO98G7bQ7AGSZJpNvfUKk6JlaZA=; b=u6+sjJgVvPPALDERb14UhpKiDJ1a/+CBu49uneZ32gq585PN3j/SLL3RRZvz8t4Bai/O75 QAHNyh1ZV7aFURtB103mB7ie5WI3kmeGAIIkdt1C2aZ/tEvVh8co+Krf+eHMawVjRm7m0f WGytgLGL0noqt41fqbHiWwyzMbnU4bI= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=xL0cbeEQ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="Tp3d18/c"; dmarc=none; spf=pass (imf19.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678444336; a=rsa-sha256; cv=none; b=VdJEDRsSuaJF5DsprYXHk/AucGuu2sXBCPkfdGq6BaoPy1e3AzFO7MUQs9RcTEGy5XVV/y FWvLjJp8jBwidBmZU/+EhsRcUcnCFwbVc0sjC3uguZqWW3D/dEf95/1Vc+5zzqGBAxKJhg +doD9b1DSqFhjgTPPhtznMzdGRDntJs= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 8563D20653; Fri, 10 Mar 2023 10:32:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678444334; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AadlA5Ixh0fCoPEBLO98G7bQ7AGSZJpNvfUKk6JlaZA=; b=xL0cbeEQboJcFPAwwkkO/x/Lg47bim2ZlZj9ADRe8B70qRZnfrKkRVOb7tQAtQEuRJ8oWd 4xODf5QTjwba+ye05JFiG1g6juG97Xrhm+cHsP2CZtaBlrgRm3dG9tloj5sM82aaq5UrnA rSpocyNABRsaIoyrwB+6HJvIKLuAZZs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678444334; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AadlA5Ixh0fCoPEBLO98G7bQ7AGSZJpNvfUKk6JlaZA=; b=Tp3d18/cjDXI1xemJ2Ql0+pg8xRv7dJpjAQipryYAFQS1kFeT7CjhYVlubYfS85pvh7d3s +8uiaUrOMfmUtODg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 52ECF139F9; Fri, 10 Mar 2023 10:32:14 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id aJWPEy4HC2SsXQAAMHmgww (envelope-from ); Fri, 10 Mar 2023 10:32:14 +0000 From: Vlastimil Babka To: Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , Andrew Morton , linux-mm@kvack.org, rcu@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Vlastimil Babka Subject: [PATCH 1/7] mm/slob: remove CONFIG_SLOB Date: Fri, 10 Mar 2023 11:32:03 +0100 Message-Id: <20230310103210.22372-2-vbabka@suse.cz> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310103210.22372-1-vbabka@suse.cz> References: <20230310103210.22372-1-vbabka@suse.cz> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: F215A1A0003 X-Stat-Signature: pxnkjcp3syszdmqncwg6pso96thgy17d X-HE-Tag: 1678444335-848218 X-HE-Meta: U2FsdGVkX19uGpBSPhVing5dcvx9h7Pnt1HwFJyhu2UTb7LxxRNoR2YI5t7QgdhrvYSpaTrTsa/jWeSkdMLg5p6tmROrrNVLRnvgoZH5gooi9EoNl3KC4F4vxH7Op2jXPvQqD1LNt77wwkigmJWplgwdi4G3/nJ4JVdWGXXQGCgM4UrL90Ol033OgZBtf+j9H2nbBWV6SdekBYewkX4rRgJ6uuB63EF8n8deZw6eAub8Amub925uElnEo7ACfGu3ty9pVnv9eTwALDQxiWkPWYv1fcqm0jk03oPAxmPmOkEG9W/KNsbwSbdhAynH95wzTYBv/fvPdD09qa29CoMBBDAQkDP851QVdB7MOUu2QsG9Pvc5742YkgRks4a3iT8Hum5Mr80x575CQe7DgP0ahm5CvfgJo0c7WDhvkHu1NDzgLozVbQEpjAZwTKrIvhtUWLTb3Q8upwr7miGbjZhQgoKwN85B3jAaxfc/mNYuhkQnatHdwqs2V4hDY1VjrjrtAYTui6HF77Zv4E2Yjpe70sWzD93UxO9f8uJYRzEcJHlng1vBmghajZnspABG//DfSBslpxlDdF25Pz2nz8Wa+V19+3r5Tt4fd5b696Lg0bc1eGYjEjJvc0w8Q5OWd4rQFhedlB6Kfa6tnn14Bcy9uaK3P3HxH5C0kxTFm0xs2LY4E1kRS+gutcqV/ADlfHhfWJS2rHZgxMhfqzF+UHUbx0+1AWcsmcbotmpL2YaS5gNdx/XkgjkKWeToCs6j+G5IfNOiRLXEsWKHRVRXxQ4Y49jtFiapRZNvnLVw5zcQ97vz9cOKS3oFUYYmyq6++PnRc479uj2IxEp0woethy92EhoDmu/d7OGySOARQT+7URPiKTjsYDe63eEaPmBy80xCIaLocaSxmDWe22FobGsKKLTCTOwsMLN1rt5ygG8/oylsIk5AmgwsDbGxLSuRXhYuoKy1DMFNRHQfeUFtXUg Io6zsFU/ fdnRkB7381KVgJwh46yd/Jnhn2A4z9ZNyA+4OqY4rw4EhS6f541kyzBazKn6JDieRtsMUz4hqjpNk4b3y4H/w55XnX9IehQHmDMPv4zC4o2ZVBznMEfJ47Op1Dwjb6fw0mmD6AWblpM6WkkzoGLkmqWy/xCuDy1rESFwUIgEKkT2d1mnjLod/RpJKur35uCQ1TOPRguZUzAuUjtUBiRYbzR2I5rsKe+avXyQ41T3/BH/VB89s9CT9y38yCm91bGETb7jgsSBSzbg4J8QnfeOF+FCMLtH4e53x3c3mXHeEdTZbDSEQ00JkYxgxg/aIVIEY6Bws8a99nWnYHbAsvP0Plk8Mj/Ka/4o7FPmYMUijZ/JIdILwB9TLqxFCHJFTMBYvvIOdFcgyBkoAG4ixamiqcA7D3Q== 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: Remove SLOB from Kconfig and Makefile. Everything under #ifdef CONFIG_SLOB, and mm/slob.c is now dead code. Signed-off-by: Vlastimil Babka Acked-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Acked-by: Lorenzo Stoakes --- init/Kconfig | 2 +- kernel/configs/tiny.config | 1 - mm/Kconfig | 22 ---------------------- mm/Makefile | 1 - 4 files changed, 1 insertion(+), 25 deletions(-) diff --git a/init/Kconfig b/init/Kconfig index 1fb5f313d18f..72ac3f66bc27 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -973,7 +973,7 @@ config MEMCG config MEMCG_KMEM bool - depends on MEMCG && !SLOB + depends on MEMCG default y config BLK_CGROUP diff --git a/kernel/configs/tiny.config b/kernel/configs/tiny.config index c2f9c912df1c..144b2bd86b14 100644 --- a/kernel/configs/tiny.config +++ b/kernel/configs/tiny.config @@ -7,6 +7,5 @@ CONFIG_KERNEL_XZ=y # CONFIG_KERNEL_LZO is not set # CONFIG_KERNEL_LZ4 is not set # CONFIG_SLAB is not set -# CONFIG_SLOB_DEPRECATED is not set CONFIG_SLUB=y CONFIG_SLUB_TINY=y diff --git a/mm/Kconfig b/mm/Kconfig index 4751031f3f05..669399ab693c 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -238,30 +238,8 @@ config SLUB and has enhanced diagnostics. SLUB is the default choice for a slab allocator. -config SLOB_DEPRECATED - depends on EXPERT - bool "SLOB (Simple Allocator - DEPRECATED)" - depends on !PREEMPT_RT - help - Deprecated and scheduled for removal in a few cycles. SLUB - recommended as replacement. CONFIG_SLUB_TINY can be considered - on systems with 16MB or less RAM. - - If you need SLOB to stay, please contact linux-mm@kvack.org and - people listed in the SLAB ALLOCATOR section of MAINTAINERS file, - with your use case. - - SLOB replaces the stock allocator with a drastically simpler - allocator. SLOB is generally more space efficient but - does not perform as well on large systems. - endchoice -config SLOB - bool - default y - depends on SLOB_DEPRECATED - config SLUB_TINY bool "Configure SLUB for minimal memory footprint" depends on SLUB && EXPERT diff --git a/mm/Makefile b/mm/Makefile index 8e105e5b3e29..2d9c1e7f6085 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -81,7 +81,6 @@ obj-$(CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP) += hugetlb_vmemmap.o obj-$(CONFIG_NUMA) += mempolicy.o obj-$(CONFIG_SPARSEMEM) += sparse.o obj-$(CONFIG_SPARSEMEM_VMEMMAP) += sparse-vmemmap.o -obj-$(CONFIG_SLOB) += slob.o obj-$(CONFIG_MMU_NOTIFIER) += mmu_notifier.o obj-$(CONFIG_KSM) += ksm.o obj-$(CONFIG_PAGE_POISONING) += page_poison.o From patchwork Fri Mar 10 10:32:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 13169125 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 6EC7BC64EC4 for ; Fri, 10 Mar 2023 10:32:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5F9A16B0078; Fri, 10 Mar 2023 05:32:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5071B6B007B; Fri, 10 Mar 2023 05:32:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3ACC26B007E; Fri, 10 Mar 2023 05:32:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 1E7C86B007B for ; Fri, 10 Mar 2023 05:32:19 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id ED2EE1611D9 for ; Fri, 10 Mar 2023 10:32:18 +0000 (UTC) X-FDA: 80552623956.15.625BBC4 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf21.hostedemail.com (Postfix) with ESMTP id 085141C001A for ; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="jM/aSqo5"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=ZxQ4ujXv; spf=pass (imf21.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678444336; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wKAQjtPeEdruvdiu+k5gGLS8R7rVo9ZpEqr34/mOg1w=; b=Qdl06N5UQ5btycrN/nOD7CqciX1kq/bV/L9N0UtDcnks1D79knB3qYqAFbcBPYhZHukOoU rRqI/kH3L84NKV3TOY8NbGoIzpxsHXoeqi8s4tuyjk5iunonB1mh1jUyDckJt80DskfNX1 0l5D7k0xPQD1jIX9zY79c3En6JgTywg= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="jM/aSqo5"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=ZxQ4ujXv; spf=pass (imf21.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678444336; a=rsa-sha256; cv=none; b=pizaGx00xPzb0cotk5kC69ZzHi/PeAe4R1NNemVPq0c5QhGyGj3NHhLFPYXaf+r6d5/rm0 iO5CnZHg2BElWVzTrJij0Kfyg3pi/je5L5FLN9qvzxsDzTqIJnmlcEDCnCO803i6fqO+30 vTAeF1ZsBcVLM3ZJ0AF8AwokDUFNDFA= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id C680520654; Fri, 10 Mar 2023 10:32:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678444334; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wKAQjtPeEdruvdiu+k5gGLS8R7rVo9ZpEqr34/mOg1w=; b=jM/aSqo5eeEsG1bbB+HEHDUxiDbo5qCgxkS1lMdG/LTijo7v609GwIH6wOGPK5ENW25w5B aLm6T/mGGqOwcuE9DxA+GKqD2ccwar2W9/NBSOeEe5sv4m5mnrq+A1XLnPFkk6V8+rT26N 0xdaTOXfF4GxqANU4uwlYiu8VUgjyOs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678444334; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wKAQjtPeEdruvdiu+k5gGLS8R7rVo9ZpEqr34/mOg1w=; b=ZxQ4ujXvWDQr+knM1ffeWycdMvA+7Hpc5bwayOqfox5fa6vKydvQWhBrjfL8vVJIsvKsYZ ruYlhz5R2udyovCQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 89A8813592; Fri, 10 Mar 2023 10:32:14 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id UIQAIS4HC2SsXQAAMHmgww (envelope-from ); Fri, 10 Mar 2023 10:32:14 +0000 From: Vlastimil Babka To: Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , Andrew Morton , linux-mm@kvack.org, rcu@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Vlastimil Babka , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Subject: [PATCH 2/7] net: skbuff: remove SLOB-specific ifdefs Date: Fri, 10 Mar 2023 11:32:04 +0100 Message-Id: <20230310103210.22372-3-vbabka@suse.cz> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310103210.22372-1-vbabka@suse.cz> References: <20230310103210.22372-1-vbabka@suse.cz> MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 085141C001A X-Stat-Signature: p4cmcud54sdmopu1sibej3w1z1we7zwb X-Rspam-User: X-HE-Tag: 1678444335-208639 X-HE-Meta: U2FsdGVkX1/2mKOxvMcRH8+wQaJ1cDDjG7HePUzQROa86DMdC+H0GW4D6dh526u5MPi0O+NKHE8B8tXJZrRr8HD3QXhYQ22dPa+H1X9xDz1p0Qn6S7TM6h02Atar1vxGHUIW/cAZbFOzxKiCsfGR4Ci63wsv62WOD4hK++B5A9SsxAPfgz7D5MP7n95ayiAKGBXoyK7MI9GzStyZ9GOHVMZZ0qXBGI/Te27yDM+5pxYaelHGfa0mJ4CJrIumuqv6QpLSV9Rn3zvmF95axp2sXv9pegR9dlkY6JjTQ0jM/ll2eIAOxrrStdIM0s7LaXPXq6agdwDM5tRmqZbMraKO4uz9C/7e0f0wPTvKJ/hFtPmG6TmsQsssIuUulNsN+B/ltVjewRU9pbRj2tmrWl4IN2SfEX3i3u/BD5qwxQuVs/csHjMe6lc9GfrxmZh4ByEEyssfhJNfzxaYc+yp3Rhtesv+LlbnNbRLV99OBavKpoHjWrVGWrDiL1bbpdDnWajXJ/9cGt8nqIjFYQYuAYYc+RRGJc1uNo1KCR4lGK72kmlncaCDHoVeNayrMtp8Rys112MblfG4Pm1wnZSjRmSPpv2AhG1J4sCfRR5nNsbR00tkulsrSDqZeb0Zc8Txb8y/k58gXLejq97MZoqpHJsrHA+FAy8e+/mcxsLdbCIDh8BCHcRwq8eedRuSpciL+m8cTcUmFajIAYre+5eYUaIQhvZdHsl8ixEN4ZhqTfcKRApczBa3DL/f6NvBTNLFduTpvWttvJe2oOx6vHvXy3X8G+bVYtmXKvgXgq5T0DBVlzoyu7We0h8dx6/w5pfhoNAXB1HDb+hF5rjrFJXkaS2yproRwi6lAYqR1edH6CVG0zqGjNlF62QemnEm+vrgKcZ4kbdyG0ULw2uzT10pEkuUR+ErhpaKIdeszXOpmjWdLDx2/HPVOXLZ+tOt4fjf31us7rTr5uN5eEOyQh2ELkZ V07gpm/a 4WK7KeaXp2F2k0aW0zyONuHCHbLj+cmL45QxM4zLz62KZzvNBDIAQkl1R/IkO+9rfZObANHMuaKmdAp/UgDzj6d5IJ+B9o+v8FKp/SltzGdqWk55um0TsYSIDC3N9nFNixR99Fgs4qgk8kZdiOzioffOyhlfj57mcgBY1t2SDifOsktLrop2dilvOXahEy0VMR7Nnv+Dt4+hxHvVHrtH596c2zFcaVxDuf5lJEpNtR+Nkhti+QGlHEvx4tJX7574iid/iax46AwZEdD4xDzSyGfp3ni8hWIEPvPctgq3EMlvrlQdJBmRgdDlRV57EfVOJdymWcsAGCL76qNGMfONA5eH7pKdlWSswAiJ9ZfEorvU5tb8sp+0wQgAxJsYjGChu/v1Y6bSUvyXsZKmh+k2NKZUzUxc1SL/H5CigbWptgBjTT1zzYFnGloV3Dg== 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: As the comment for HAVE_SKB_SMALL_HEAD_CACHE says: > skb_small_head_cache and related code is only supported > for CONFIG_SLAB and CONFIG_SLUB. > As soon as SLOB is removed from the kernel, we can clean up this. With CONFIG_SLOB removed, remove HAVE_SKB_SMALL_HEAD_CACHE and make all code that it guards unconditional. Signed-off-by: Vlastimil Babka Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni --- net/core/skbuff.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index eb7d33b41e71..8bba4e91d0d5 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -90,15 +90,6 @@ static struct kmem_cache *skbuff_fclone_cache __ro_after_init; static struct kmem_cache *skbuff_ext_cache __ro_after_init; #endif -/* skb_small_head_cache and related code is only supported - * for CONFIG_SLAB and CONFIG_SLUB. - * As soon as SLOB is removed from the kernel, we can clean up this. - */ -#if !defined(CONFIG_SLOB) -# define HAVE_SKB_SMALL_HEAD_CACHE 1 -#endif - -#ifdef HAVE_SKB_SMALL_HEAD_CACHE static struct kmem_cache *skb_small_head_cache __ro_after_init; #define SKB_SMALL_HEAD_SIZE SKB_HEAD_ALIGN(MAX_TCP_HEADER) @@ -115,7 +106,6 @@ static struct kmem_cache *skb_small_head_cache __ro_after_init; #define SKB_SMALL_HEAD_HEADROOM \ SKB_WITH_OVERHEAD(SKB_SMALL_HEAD_CACHE_SIZE) -#endif /* HAVE_SKB_SMALL_HEAD_CACHE */ int sysctl_max_skb_frags __read_mostly = MAX_SKB_FRAGS; EXPORT_SYMBOL(sysctl_max_skb_frags); @@ -514,7 +504,6 @@ static void *kmalloc_reserve(unsigned int *size, gfp_t flags, int node, void *obj; obj_size = SKB_HEAD_ALIGN(*size); -#ifdef HAVE_SKB_SMALL_HEAD_CACHE if (obj_size <= SKB_SMALL_HEAD_CACHE_SIZE && !(flags & KMALLOC_NOT_NORMAL_BITS)) { @@ -530,7 +519,6 @@ static void *kmalloc_reserve(unsigned int *size, gfp_t flags, int node, goto out; } } -#endif *size = obj_size = kmalloc_size_roundup(obj_size); /* * Try a regular allocation, when that fails and we're not entitled @@ -852,11 +840,9 @@ static bool skb_pp_recycle(struct sk_buff *skb, void *data) static void skb_kfree_head(void *head, unsigned int end_offset) { -#ifdef HAVE_SKB_SMALL_HEAD_CACHE if (end_offset == SKB_SMALL_HEAD_HEADROOM) kmem_cache_free(skb_small_head_cache, head); else -#endif kfree(head); } @@ -4692,7 +4678,6 @@ void __init skb_init(void) 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); -#ifdef HAVE_SKB_SMALL_HEAD_CACHE /* usercopy should only access first SKB_SMALL_HEAD_HEADROOM bytes. * struct skb_shared_info is located at the end of skb->head, * and should not be copied to/from user. @@ -4704,7 +4689,6 @@ void __init skb_init(void) 0, SKB_SMALL_HEAD_HEADROOM, NULL); -#endif skb_extensions_init(); } From patchwork Fri Mar 10 10:32:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 13169123 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 B2109C64EC4 for ; Fri, 10 Mar 2023 10:32:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C14F36B0072; Fri, 10 Mar 2023 05:32:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B010F6B0074; Fri, 10 Mar 2023 05:32:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8B1588E0002; Fri, 10 Mar 2023 05:32:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 68CEA6B0072 for ; Fri, 10 Mar 2023 05:32:18 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 3B1A11C6D06 for ; Fri, 10 Mar 2023 10:32:18 +0000 (UTC) X-FDA: 80552623956.20.C173543 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by imf14.hostedemail.com (Postfix) with ESMTP id 30367100005 for ; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=QZUez2xQ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=6Z79qYSG; spf=pass (imf14.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678444336; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ynur/BmfAMIVmRdtwJq2oWLnRqKGEqStLCEoP0mvCEk=; b=RWk3a0P98avJxPzzCsfChplmgeuFbkbEdWEATzuUallKYXqD/a/Yk1xVJwrmn5GIffNTcT geIOKGppZZUOLj93GT3hdgaATo87AjtJM63dDfwBLUHH4duU6RDj+TL5olb/uE2424nvna Ehhj1JVlhAplfrG5nZyDdA3GGToSNZQ= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=QZUez2xQ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=6Z79qYSG; spf=pass (imf14.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678444336; a=rsa-sha256; cv=none; b=0b4068Mm017vomdBlaLvsHNxAXpixcYrhHQUhtpKgz/3DDEnUwdpL2ne1Vtlz17ZbI5KUl yqTMGm84A1M96TYRUP5ZbRQqBjg7MLOTVMCe1tQnqA+m2bU5EghCAtCkZMg/4hfvktnsrH IpOnz6W8wKfpJCitxjXIIDf/VVL/vaU= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 05EA922A63; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ynur/BmfAMIVmRdtwJq2oWLnRqKGEqStLCEoP0mvCEk=; b=QZUez2xQfWCqt88eXGyNmcCVFR+o4XrrQNVUvQAQC/gEF+ZnoGWlvqfW173ZktqDIya0KM u7XqzWIx/f89HNDO83sLN6bThJZxwxp1m/86qDIFrPF8PQS+hjBI21MXT96fg2uEKNHTqg 3VIb01dFL8+mA7J4ebsbtB44Rhs+7+s= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ynur/BmfAMIVmRdtwJq2oWLnRqKGEqStLCEoP0mvCEk=; b=6Z79qYSGrVUYEvCogt8O06nAIvmuaiI9MxaAVBbTvrKtYfNLDNSRW2zjRe6BzTeZchX+gP 1d3ni6+77ilnXoCA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id C9A91139F9; Fri, 10 Mar 2023 10:32:14 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id WEKPMC4HC2SsXQAAMHmgww (envelope-from ); Fri, 10 Mar 2023 10:32:14 +0000 From: Vlastimil Babka To: Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , Andrew Morton , linux-mm@kvack.org, rcu@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Vlastimil Babka Subject: [PATCH 3/7] mm, page_flags: remove PG_slob_free Date: Fri, 10 Mar 2023 11:32:05 +0100 Message-Id: <20230310103210.22372-4-vbabka@suse.cz> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310103210.22372-1-vbabka@suse.cz> References: <20230310103210.22372-1-vbabka@suse.cz> MIME-Version: 1.0 X-Rspamd-Queue-Id: 30367100005 X-Stat-Signature: zc1zoqe4rd53w5xof3trt4pzg53zywip X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1678444335-927306 X-HE-Meta: U2FsdGVkX19IFCmzPCteOvwKyqBih69eZEL/0wobf5tlQjr2cgIy6FjLNvx2hoR9VlpekWNrbYHLoRWztIl/QIjORCgTI4erG4KS6Qe0tbLRSdDvYdU9JaW+AMef/Km8vUP+ThuR/dIqlxZBAlulqy+AnGfazFYDQ9yWSrSTPvgl1fShshY3eKmwgfjkTStkqisHdD4ho2SriNDA0ThgWBwFmu7sRbO3m1E0WAemrAkxMGSbMoYTNoftWDaWZ944xAoJRJkQb+9CsxuW6ML8HGKgpQXugKQUakcaNGH8kS+pYa1flcjNzdYMT0Nt/0VOtAu8ZVpwxAZyV3A4yF823omGdjm6mXsG5rMp63x5jpkW3JnfBZKin+Y/LIM9sXCbysZxYM4DQVLzqlTJ+yfG4NYhifh0Kidk2b2TJJbU1j1zNYVgvTQy9IsuqM3uBWyTrw2ZxrKbho/TE2iPRXY9q8pyEBzOsdkE2wRnUxkhcU8A/rHtM3Xy15PGaOAPtpM2eBJYRs0DOrlEqlR/Zf3rPdG0/8wXf4j61NBV7EAyA/QiUZsDFD1zQX4tHzHznhluLUhBSBM8evggaXmepDoWyY+FcfFR2rZyujdhUCo4ycm1ReTVj8Mk1UJYwKftINgSNi0ZBd/9A0itV0J3OWwdyfpiBpn8k2nm8rdlHADcKHEKrBGUTCFiGjNTjNoBn5Bv3uxIEWOVM1dDdDXW0VLSvLfhMawbGimjRg94XfYDVGokWueB8wLHUbFdwD8ZnMkTaChqvtbYebwx54yuCfOdTDVaZHyHe/e+D1GRSTAJ/AQje5VadIibJJv6excJ/uV8hm/+0II9esGyPYbBrcxqrtGr04yBYlhd3SMi4YWj0BV2BLzahkL4F9oLmnWbEHIq3vf5pMDg3ca0PnmKAAmW17HMb1KxJtrlF3kMsGbdOu/ZE1LftOHS4xLxqBLO1aFi+AvYwATRH8LGqQKPuMm k5fK3202 MaDXJhI78aSMjzhxVV9F3q120PTn4d2zRFUJtCMRB3yELUwNbCrtE1Dlfvnc9ZuldN3YQKXXWcOyRwmNZvT8WSo//Z+40dC84JGteh9DQ0AyR1r2k0wWvedCsuL1NkPHWTXVbxw8K6fUQzQOg7JzWE3xRR5SKFzkqp56uplUNaMM95mdin/0F1rOzEnV6aZOTgSn58xqvCHDYwKmDnGoPhnpouHpJl7z5qyq74LIv0Zen1o5D521aBBCXLDGSC0MDik10l87A8XYyQm5Mav5vCLROw9FgAFA898PJlbBzxhdafSr5EWed3fSs3etwDQi4o/f8 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: With SLOB removed we no longer need the PG_slob_free alias for PG_private. Also update tools/mm/page-types. Signed-off-by: Vlastimil Babka Acked-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Acked-by: Lorenzo Stoakes --- include/linux/page-flags.h | 4 ---- tools/mm/page-types.c | 6 +----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index a7e3a3405520..2bdc41cb0594 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h @@ -174,9 +174,6 @@ enum pageflags { /* Remapped by swiotlb-xen. */ PG_xen_remapped = PG_owner_priv_1, - /* SLOB */ - PG_slob_free = PG_private, - #ifdef CONFIG_MEMORY_FAILURE /* * Compound pages. Stored in first tail page's flags. @@ -483,7 +480,6 @@ PAGEFLAG(Active, active, PF_HEAD) __CLEARPAGEFLAG(Active, active, PF_HEAD) PAGEFLAG(Workingset, workingset, PF_HEAD) TESTCLEARFLAG(Workingset, workingset, PF_HEAD) __PAGEFLAG(Slab, slab, PF_NO_TAIL) -__PAGEFLAG(SlobFree, slob_free, PF_NO_TAIL) PAGEFLAG(Checked, checked, PF_NO_COMPOUND) /* Used by some filesystems */ /* Xen */ diff --git a/tools/mm/page-types.c b/tools/mm/page-types.c index 381dcc00cb62..8d5595b6c59f 100644 --- a/tools/mm/page-types.c +++ b/tools/mm/page-types.c @@ -85,7 +85,6 @@ */ #define KPF_ANON_EXCLUSIVE 47 #define KPF_READAHEAD 48 -#define KPF_SLOB_FREE 49 #define KPF_SLUB_FROZEN 50 #define KPF_SLUB_DEBUG 51 #define KPF_FILE 61 @@ -141,7 +140,6 @@ static const char * const page_flag_names[] = { [KPF_ANON_EXCLUSIVE] = "d:anon_exclusive", [KPF_READAHEAD] = "I:readahead", - [KPF_SLOB_FREE] = "P:slob_free", [KPF_SLUB_FROZEN] = "A:slub_frozen", [KPF_SLUB_DEBUG] = "E:slub_debug", @@ -478,10 +476,8 @@ static uint64_t expand_overloaded_flags(uint64_t flags, uint64_t pme) if ((flags & BIT(ANON)) && (flags & BIT(MAPPEDTODISK))) flags ^= BIT(MAPPEDTODISK) | BIT(ANON_EXCLUSIVE); - /* SLOB/SLUB overload several page flags */ + /* SLUB overloads several page flags */ if (flags & BIT(SLAB)) { - if (flags & BIT(PRIVATE)) - flags ^= BIT(PRIVATE) | BIT(SLOB_FREE); if (flags & BIT(ACTIVE)) flags ^= BIT(ACTIVE) | BIT(SLUB_FROZEN); if (flags & BIT(ERROR)) From patchwork Fri Mar 10 10:32:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 13169159 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 6B89EC64EC4 for ; Fri, 10 Mar 2023 10:40:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C7D708E0003; Fri, 10 Mar 2023 05:40:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C2D248E0002; Fri, 10 Mar 2023 05:40:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AF3B18E0003; Fri, 10 Mar 2023 05:40:38 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9BE218E0002 for ; Fri, 10 Mar 2023 05:40:38 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 570211A048E for ; Fri, 10 Mar 2023 10:40:38 +0000 (UTC) X-FDA: 80552644956.14.672C8B8 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf02.hostedemail.com (Postfix) with ESMTP id 4BBD68000C for ; Fri, 10 Mar 2023 10:40:36 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=foj1gERE; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=JCOpFCvp; spf=pass (imf02.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678444836; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SABMsfykBuZLlX/EID5G4jmWDCswPlY6bB+XmpUmDDI=; b=svkF0jgl7qUcgS+dN8f4nxoxNAJlloIT8HCIoSJWU5OgTLTvtreM5h89AVZALzwfBsvzUL bAcRboL2lH0XVqSvwY8J6fQiwNQ+QZjhknB5+ExBDzqkmELDqCL49Fn5hamqxtiKHGmtqB ySI/9v4BMcaYqYuFycFhQMwS0swhmVY= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=foj1gERE; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=JCOpFCvp; spf=pass (imf02.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678444836; a=rsa-sha256; cv=none; b=lT5jNhqJ69SbXB3e1iimRLVXI8YhHvxkI23HKJaaTRJnvs6F5CfJIALAhQoYS4RKUNLt0c ivEPXigJhyCE/AOQxpK8oROcs4+N+FSM/0EG1SjxGsDdl2YT+Lilht8FnKUveLaldBMkIS uWfw8mlbJTioqWY7gOuLKekxY5zxrn8= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 3BDB120655; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SABMsfykBuZLlX/EID5G4jmWDCswPlY6bB+XmpUmDDI=; b=foj1gEREC5pFoZcss66MTasW9SmKGZ8VO45QQ5RxFr2/gbLbCBrgbYL8TlQQxufdOQ3EFE czVB8jboaSapWQSAvTbgzlr6p+6za4Flui5sC1W23abuExTqIegh6cm1gPfGqBzmxekr0H TCUXtSdOonDGjPPPUlKUoc9FsmC5aAE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SABMsfykBuZLlX/EID5G4jmWDCswPlY6bB+XmpUmDDI=; b=JCOpFCvpQJqkp5/VtYAnLRuXjAB156OkLDECkwvRNK9kuNoHX2iWKKVfw/Gx5/VOde/eYE 9dMcNAa9idgNdMBg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 0984B13592; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 6Ay0AS8HC2SsXQAAMHmgww (envelope-from ); Fri, 10 Mar 2023 10:32:15 +0000 From: Vlastimil Babka To: Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , Andrew Morton , linux-mm@kvack.org, rcu@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Vlastimil Babka Subject: [PATCH 4/7] mm, pagemap: remove SLOB and SLQB from comments and documentation Date: Fri, 10 Mar 2023 11:32:06 +0100 Message-Id: <20230310103210.22372-5-vbabka@suse.cz> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310103210.22372-1-vbabka@suse.cz> References: <20230310103210.22372-1-vbabka@suse.cz> MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 4BBD68000C X-Stat-Signature: yfn7uxqg6ofc9519rf1yjw9x19n6mt14 X-Rspam-User: X-HE-Tag: 1678444836-185980 X-HE-Meta: U2FsdGVkX18P15Y2eqoPgIoNtBq/G45urSn7K6mvzbeuQq6/dFgq2ApAOjKS+Iy30/ZfJJm/fDk2Zfyw60L/RkopuVjg0jxlNNMHF7/rOEGStYb/rwuJmflVr4NV+NVtWfN/rytvPv+V/k/n12n0Czo00D5UhzsXLTrT3BN63nfXSiie+Lkrr7iovgILzHNfVZr0PNeuMHLpzUyopbW+ELhLA0qaOG5pwPtSM5HbS/VM7vDagxi7BbzysmN7vqUrB2jQdEn49Oo66OUO6jNSnVmfncMsRo2f7SWPK1nX3Y+pkYYDHV0ebq8/4siWvrLUU7En5m4IBC+EsmPMcw280xKddKIaZaYI/6PcERWhx8+x7CGXuAFFUG+PutWbCU0Yxmyqx932rInAnPIcqUSFq9GdtHR+acAtndSsRQz8lmXDjj7yby2gionqXvcQ3vhwrkjqgfOkVe0qWJUtqUUyReKLV2uOqaEqs1NGODTSYe3GNf+HcPJOBdFrkiA3FB7M9Lm78yRizmhD7I3tSSxvdnUIM4UtwndcIffHXROLZwBwzLozA+Iluh3q1wv3rQ8QHmyDe1yKHd589NbD0PVDSTpC2Y8JCYD0Y5FfSPNnkIUPVUaC4n8aqY9S9NGlB/oqlwgR6/hcP8uw1180dR6J/FYCdxWIFNdHaq3eNhz6KmjlMV3twiPaT9Cu5no75wiYYBZrzGsliMN1QO7TtqyY8V/nEUbs88N0SEHBXQ2BoF8jRSCs3ImFTn2NK/jEFAsNuZYy5vZ4rZ7NWphObJpStq1V8k/h8PU/CcoW0AgGRJji45UX84ADwHKUpUF4KIsjYC14/NeR1T0eBPlfPTcXWpGnW+uJ2v3yGXnbnXrk4tSkgv/W5iGlcjnNAOZNfgZgOxON6CHFBW8P5e/lWqaDKOu5rptoxfLWmdkIBUMiblc6wzBzM+joNUoXYxk9OZOFxVBlEi9hak41wwWPttH 5fdeSwtu UWGtxybjpLY9DGYdRs5GdQNKOUnSbA0yCm+IUwfitqoHlWc/sASx875hsAg92TJbQWPafULB5dV0touCYtyoMieGkBdVi+H0PDqCdBzjWLAj8cTgj6mZ2oxdng5wlswXewAHMQEyLzNs2tc7HxUUOBcT5FGaEtvHjvrtEfpWQyEV0yGEMes9Vng35QTXdB0+9P4DJEH/ebz21NHJuzsJYZyzxx8i/HEv59ekKnCT+BWE9LAVNX62NtIpUh5Ud+vyOUWJK2EGeh0kYM5N11JPLrO0/iA== 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: SLOB has been removed and SLQB never merged, so remove their mentions from comments and documentation of pagemap. Signed-off-by: Vlastimil Babka Acked-by: Lorenzo Stoakes --- Documentation/admin-guide/mm/pagemap.rst | 6 +++--- fs/proc/page.c | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Documentation/admin-guide/mm/pagemap.rst b/Documentation/admin-guide/mm/pagemap.rst index b5f970dc91e7..bb4aa897a773 100644 --- a/Documentation/admin-guide/mm/pagemap.rst +++ b/Documentation/admin-guide/mm/pagemap.rst @@ -91,9 +91,9 @@ Short descriptions to the page flags The page is being locked for exclusive access, e.g. by undergoing read/write IO. 7 - SLAB - The page is managed by the SLAB/SLOB/SLUB/SLQB kernel memory allocator. - When compound page is used, SLUB/SLQB will only set this flag on the head - page; SLOB will not flag it at all. + The page is managed by the SLAB/SLUB kernel memory allocator. + When compound page is used, either will only set this flag on the head + page.. 10 - BUDDY A free memory block managed by the buddy system allocator. The buddy system organizes free memory in blocks of various orders. diff --git a/fs/proc/page.c b/fs/proc/page.c index 6249c347809a..1356aeffd8dc 100644 --- a/fs/proc/page.c +++ b/fs/proc/page.c @@ -125,7 +125,7 @@ u64 stable_page_flags(struct page *page) /* * pseudo flags for the well known (anonymous) memory mapped pages * - * Note that page->_mapcount is overloaded in SLOB/SLUB/SLQB, so the + * Note that page->_mapcount is overloaded in SLAB/SLUB, so the * simple test in page_mapped() is not enough. */ if (!PageSlab(page) && page_mapped(page)) @@ -166,8 +166,7 @@ u64 stable_page_flags(struct page *page) /* * Caveats on high order pages: page->_refcount will only be set - * -1 on the head page; SLUB/SLQB do the same for PG_slab; - * SLOB won't set PG_slab at all on compound pages. + * -1 on the head page; SLAB/SLUB do the same for PG_slab; */ if (PageBuddy(page)) u |= 1 << KPF_BUDDY; From patchwork Fri Mar 10 10:32:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 13169124 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 92E84C6FD1C for ; Fri, 10 Mar 2023 10:32:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2257B6B0074; Fri, 10 Mar 2023 05:32:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1D29D6B0078; Fri, 10 Mar 2023 05:32:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0751C6B007B; Fri, 10 Mar 2023 05:32:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id E21EC6B0078 for ; Fri, 10 Mar 2023 05:32:18 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B1D6381210 for ; Fri, 10 Mar 2023 10:32:18 +0000 (UTC) X-FDA: 80552623956.15.E05F84E Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf29.hostedemail.com (Postfix) with ESMTP id AE8B312000D for ; Fri, 10 Mar 2023 10:32:16 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="yMw/h5j4"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="SRUUUy/4"; spf=pass (imf29.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678444336; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=14IckJuVs+5ugSQ7Du9ZW5hLXAzGMlqPUFfV0GtrUaE=; b=MiWL5TJL3IDDnR1PwA4MPXqDz7Bw7vDtYlQCjV+NvUxudm8kh9Q/z7ZJU7neS6i7qi524t jyDyWLVCFRHtfZu8ADq/Xk/DQ30S1QQiprXfwpBIIWKFJNqEY2VFIEqdNeBuXrUzgLmM8i bf7FHDjMCyRnN+t2ezoxqRKDdk/g+1k= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="yMw/h5j4"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="SRUUUy/4"; spf=pass (imf29.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678444337; a=rsa-sha256; cv=none; b=Iu8MsCU6c/Evb+ejrrINmoCROC6TURt1HhnsuPJVWeOp15Bdc/st9uYDqx8dKhAX8Y8m/W XiAK8t15OHUJvBPLoSBcHSSWu+sivGg3fmS0y4gAeJz2c6pau76Puam9vlpTdHTJHgqQJn LjuPXlWPFuxCoEHSi+IcOkxda5vxSlI= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 703F920656; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=14IckJuVs+5ugSQ7Du9ZW5hLXAzGMlqPUFfV0GtrUaE=; b=yMw/h5j4ZXmi1b7bYCWbWE0vYRBkUpnQPV+WBhkDQY5GmbPjcQedTsqoKnmHc88BJq9yFH igHDWQ35SZfjLd0Rs1Uw52WKaGYhQsH7GryjySBqG2SNkZ0lLIp8dd2qOFgQSU9bECtM7+ UHr7X6V38WJo7FFS2kaaQsFcfPgRhNE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=14IckJuVs+5ugSQ7Du9ZW5hLXAzGMlqPUFfV0GtrUaE=; b=SRUUUy/4NLFh58VIX63xtpjVFI9GeJJShFbJEFldWRnTZKg3UbQA+/bdrYG6fr2T2kkhj5 R9E+Z/MFLDWl/aBA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3E06F139F9; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id mGWKDi8HC2SsXQAAMHmgww (envelope-from ); Fri, 10 Mar 2023 10:32:15 +0000 From: Vlastimil Babka To: Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , Andrew Morton , linux-mm@kvack.org, rcu@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Vlastimil Babka Subject: [PATCH 5/7] mm/slab: remove CONFIG_SLOB code from slab common code Date: Fri, 10 Mar 2023 11:32:07 +0100 Message-Id: <20230310103210.22372-6-vbabka@suse.cz> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310103210.22372-1-vbabka@suse.cz> References: <20230310103210.22372-1-vbabka@suse.cz> MIME-Version: 1.0 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: AE8B312000D X-Rspam-User: X-Stat-Signature: 1qngh3ofnw31wc9zwy1b4wyf3zasjmsh X-HE-Tag: 1678444336-115779 X-HE-Meta: U2FsdGVkX19UlD2sl6zeFoHM+QZZiqV2AtSsoITbFNA957WivFjkCoMQ3ivpjUNKooSFwvtnD+VMfgn2EfaK8jPA3xs2cr+2z4QPiI+qx/RucS3Sw6RVmqAAq2vlu6sXTVOEsoAt0WM5Ze6+/xgJfb9uWR7QFXpU+GPb9ruW+Q7wx7KQ9YdZZ/J+TiXLO/rum/MYVlxlZ3jmU5tenOKuxt0uBVYKV0xmdQpPzlHGpgG0QPP+m7E3hZNi15EAo+kPFYmc+58H31cguXb5Q58ns4F/+bTdHxFVLhOj9AFXcUJYvhhUlLjCqanvS0VrCf3SgoyDkeC/ysLD+oi3k4YmXppHVHbVF+Qh74vp3DnuGWfhPa6cq+UXAqapjWAAMRbQ+yD7kXSetVNCaRUTGllK70VQFVh9ZgvL2TmXWlB9G60kckMM72Mp/z9QjAC2YaYcGTOf1mbUjdvxZdKhlRdDLnmuuxc4/FtbLJPXMiIe6gzgPRlAjs2/0a8fT3H9sW2BC7XHXrkT2E6gnd+O15eCnRQPdsDjTL5uY6eL86sUC1VY00uyTOOdYfIbG0M/05fchoE6l/dGipPAWUmxp+Sdvx5B9XIO5KjwTqPM3Koy7O1rtQA9wyrWs4M8qAhZUbCfkCWHWB3Zp80LLZuUc71nnx/PcJKP++VdNsBJScq4uXPsJf4aMjDLTJzVy0S9zJ8qndFF0Ych6aL5SuoesMfsCHN8PIqXOVVJlKUQZtCQsTu2Izf/EkTl3rjFmyQld5m8qeqF1Nx/YVIaInxlHA4nDy6dCcJpYO8ps64unfYmBkmwuytpafW6EwIDK5UDIAzEMSDACBuZWVR04Ns1B+MRnlLFRnPSY+cGAfb1DUHzibvpFmzEvsseP1bF7vi2BynDCtkSdap5Hb0Kkx5uTALOHax4VMujOAYwHNiJGmcGADM+RG8y5B3RSa6ZvnCgO+kYxtfYrqYWY7TeoJZeJ/C sSpHHwY2 CZnK1Qr4tM+Ce4gjZJTVf2QbPTpqu5KGTeHC1cwfHcNGh4DXvGvddexsxpoX6gzbZGimwrnslFqZOqiWIOG5qG3YonkO93ZiN8bpuv0UcumYHdabe7yCvza1bM29ClspP7eeMpjxV73bOQNx2FLPtOlqfzkyTu4LWFxllmJfcKCoCNwYX1CNlLSZwWWtfmGALEJKbCa43+C3rDTtELBk+TcKy8RVNnv/4qviIUVik8HY/Zx4kyv7TZ7AlrZzPr2o3u7SVWVI2TlbHcEhR7CMrzYL8mfmFkbaxmQe373v4TzsBhHR0DvZn0jWBxAfd7xVb2q6B 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: CONFIG_SLOB has been removed from Kconfig. Remove code and #ifdef's specific to SLOB in the slab headers and common code. Signed-off-by: Vlastimil Babka Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Acked-by: Lorenzo Stoakes --- include/linux/slab.h | 39 ---------------------------- mm/slab.h | 61 -------------------------------------------- mm/slab_common.c | 2 -- 3 files changed, 102 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 45af70315a94..7f645a4c1298 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -298,19 +298,6 @@ static inline unsigned int arch_slab_minalign(void) #endif #endif -#ifdef CONFIG_SLOB -/* - * SLOB passes all requests larger than one page to the page allocator. - * No kmalloc array is necessary since objects of different sizes can - * be allocated from the same page. - */ -#define KMALLOC_SHIFT_HIGH PAGE_SHIFT -#define KMALLOC_SHIFT_MAX (MAX_ORDER + PAGE_SHIFT - 1) -#ifndef KMALLOC_SHIFT_LOW -#define KMALLOC_SHIFT_LOW 3 -#endif -#endif - /* Maximum allocatable size */ #define KMALLOC_MAX_SIZE (1UL << KMALLOC_SHIFT_MAX) /* Maximum size for which we actually use a slab cache */ @@ -366,7 +353,6 @@ enum kmalloc_cache_type { NR_KMALLOC_TYPES }; -#ifndef CONFIG_SLOB extern struct kmem_cache * kmalloc_caches[NR_KMALLOC_TYPES][KMALLOC_SHIFT_HIGH + 1]; @@ -458,7 +444,6 @@ static __always_inline unsigned int __kmalloc_index(size_t size, } static_assert(PAGE_SHIFT <= 20); #define kmalloc_index(s) __kmalloc_index(s, true) -#endif /* !CONFIG_SLOB */ void *__kmalloc(size_t size, gfp_t flags) __assume_kmalloc_alignment __alloc_size(1); @@ -487,10 +472,6 @@ void kmem_cache_free(struct kmem_cache *s, void *objp); void kmem_cache_free_bulk(struct kmem_cache *s, size_t size, void **p); int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, void **p); -/* - * Caller must not use kfree_bulk() on memory not originally allocated - * by kmalloc(), because the SLOB allocator cannot handle this. - */ static __always_inline void kfree_bulk(size_t size, void **p) { kmem_cache_free_bulk(NULL, size, p); @@ -567,7 +548,6 @@ void *kmalloc_large_node(size_t size, gfp_t flags, int node) __assume_page_align * Try really hard to succeed the allocation but fail * eventually. */ -#ifndef CONFIG_SLOB static __always_inline __alloc_size(1) void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size) && size) { @@ -583,17 +563,7 @@ static __always_inline __alloc_size(1) void *kmalloc(size_t size, gfp_t flags) } return __kmalloc(size, flags); } -#else -static __always_inline __alloc_size(1) void *kmalloc(size_t size, gfp_t flags) -{ - if (__builtin_constant_p(size) && size > KMALLOC_MAX_CACHE_SIZE) - return kmalloc_large(size, flags); - - return __kmalloc(size, flags); -} -#endif -#ifndef CONFIG_SLOB static __always_inline __alloc_size(1) void *kmalloc_node(size_t size, gfp_t flags, int node) { if (__builtin_constant_p(size) && size) { @@ -609,15 +579,6 @@ static __always_inline __alloc_size(1) void *kmalloc_node(size_t size, gfp_t fla } return __kmalloc_node(size, flags, node); } -#else -static __always_inline __alloc_size(1) void *kmalloc_node(size_t size, gfp_t flags, int node) -{ - if (__builtin_constant_p(size) && size > KMALLOC_MAX_CACHE_SIZE) - return kmalloc_large_node(size, flags, node); - - return __kmalloc_node(size, flags, node); -} -#endif /** * kmalloc_array - allocate memory for an array. diff --git a/mm/slab.h b/mm/slab.h index 43966aa5fadf..399966b3ce52 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -51,14 +51,6 @@ struct slab { }; unsigned int __unused; -#elif defined(CONFIG_SLOB) - - struct list_head slab_list; - void *__unused_1; - void *freelist; /* first free block */ - long units; - unsigned int __unused_2; - #else #error "Unexpected slab allocator configured" #endif @@ -72,11 +64,7 @@ struct slab { #define SLAB_MATCH(pg, sl) \ static_assert(offsetof(struct page, pg) == offsetof(struct slab, sl)) SLAB_MATCH(flags, __page_flags); -#ifndef CONFIG_SLOB SLAB_MATCH(compound_head, slab_cache); /* Ensure bit 0 is clear */ -#else -SLAB_MATCH(compound_head, slab_list); /* Ensure bit 0 is clear */ -#endif SLAB_MATCH(_refcount, __page_refcount); #ifdef CONFIG_MEMCG SLAB_MATCH(memcg_data, memcg_data); @@ -200,31 +188,6 @@ static inline size_t slab_size(const struct slab *slab) return PAGE_SIZE << slab_order(slab); } -#ifdef CONFIG_SLOB -/* - * Common fields provided in kmem_cache by all slab allocators - * This struct is either used directly by the allocator (SLOB) - * or the allocator must include definitions for all fields - * provided in kmem_cache_common in their definition of kmem_cache. - * - * Once we can do anonymous structs (C11 standard) we could put a - * anonymous struct definition in these allocators so that the - * separate allocations in the kmem_cache structure of SLAB and - * SLUB is no longer needed. - */ -struct kmem_cache { - unsigned int object_size;/* The original size of the object */ - unsigned int size; /* The aligned/padded/added on size */ - unsigned int align; /* Alignment as calculated */ - slab_flags_t flags; /* Active flags on the slab */ - const char *name; /* Slab name for sysfs */ - int refcount; /* Use counter */ - void (*ctor)(void *); /* Called on object slot creation */ - struct list_head list; /* List of all slab caches on the system */ -}; - -#endif /* CONFIG_SLOB */ - #ifdef CONFIG_SLAB #include #endif @@ -274,7 +237,6 @@ extern const struct kmalloc_info_struct { unsigned int size; } kmalloc_info[]; -#ifndef CONFIG_SLOB /* Kmalloc array related functions */ void setup_kmalloc_cache_index_table(void); void create_kmalloc_caches(slab_flags_t); @@ -286,7 +248,6 @@ void *__kmem_cache_alloc_node(struct kmem_cache *s, gfp_t gfpflags, int node, size_t orig_size, unsigned long caller); void __kmem_cache_free(struct kmem_cache *s, void *x, unsigned long caller); -#endif gfp_t kmalloc_fix_flags(gfp_t flags); @@ -303,33 +264,16 @@ extern void create_boot_cache(struct kmem_cache *, const char *name, int slab_unmergeable(struct kmem_cache *s); struct kmem_cache *find_mergeable(unsigned size, unsigned align, slab_flags_t flags, const char *name, void (*ctor)(void *)); -#ifndef CONFIG_SLOB struct kmem_cache * __kmem_cache_alias(const char *name, unsigned int size, unsigned int align, slab_flags_t flags, void (*ctor)(void *)); slab_flags_t kmem_cache_flags(unsigned int object_size, slab_flags_t flags, const char *name); -#else -static inline struct kmem_cache * -__kmem_cache_alias(const char *name, unsigned int size, unsigned int align, - slab_flags_t flags, void (*ctor)(void *)) -{ return NULL; } - -static inline slab_flags_t kmem_cache_flags(unsigned int object_size, - slab_flags_t flags, const char *name) -{ - return flags; -} -#endif static inline bool is_kmalloc_cache(struct kmem_cache *s) { -#ifndef CONFIG_SLOB return (s->flags & SLAB_KMALLOC); -#else - return false; -#endif } /* Legal flag mask for kmem_cache_create(), for various configurations */ @@ -634,7 +578,6 @@ static inline void memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab, } #endif /* CONFIG_MEMCG_KMEM */ -#ifndef CONFIG_SLOB static inline struct kmem_cache *virt_to_cache(const void *obj) { struct slab *slab; @@ -684,8 +627,6 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) void free_large_kmalloc(struct folio *folio, void *object); -#endif /* CONFIG_SLOB */ - size_t __ksize(const void *objp); static inline size_t slab_ksize(const struct kmem_cache *s) @@ -777,7 +718,6 @@ static inline void slab_post_alloc_hook(struct kmem_cache *s, memcg_slab_post_alloc_hook(s, objcg, flags, size, p); } -#ifndef CONFIG_SLOB /* * The slab lists for all objects. */ @@ -824,7 +764,6 @@ static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node) for (__node = 0; __node < nr_node_ids; __node++) \ if ((__n = get_node(__s, __node))) -#endif #if defined(CONFIG_SLAB) || defined(CONFIG_SLUB_DEBUG) void dump_unreclaimable_slab(void); diff --git a/mm/slab_common.c b/mm/slab_common.c index bf4e777cfe90..1522693295f5 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -625,7 +625,6 @@ void kmem_dump_obj(void *object) EXPORT_SYMBOL_GPL(kmem_dump_obj); #endif -#ifndef CONFIG_SLOB /* Create a cache during boot when no slab services are available yet */ void __init create_boot_cache(struct kmem_cache *s, const char *name, unsigned int size, slab_flags_t flags, @@ -1079,7 +1078,6 @@ void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags, return ret; } EXPORT_SYMBOL(kmalloc_node_trace); -#endif /* !CONFIG_SLOB */ gfp_t kmalloc_fix_flags(gfp_t flags) { From patchwork Fri Mar 10 10:32:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 13169127 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 13770C6FD1E for ; Fri, 10 Mar 2023 10:32:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 494CF8E0005; Fri, 10 Mar 2023 05:32:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4439B8E0002; Fri, 10 Mar 2023 05:32:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2233D8E0005; Fri, 10 Mar 2023 05:32:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 093DB8E0001 for ; Fri, 10 Mar 2023 05:32:21 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D2ED5140A2F for ; Fri, 10 Mar 2023 10:32:20 +0000 (UTC) X-FDA: 80552624040.25.96E155D Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf08.hostedemail.com (Postfix) with ESMTP id DB5D0160007 for ; Fri, 10 Mar 2023 10:32:18 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=18nCtam6; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=plQX7ve5; dmarc=none; spf=pass (imf08.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678444339; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0eZBgS/1HJgq2/QUOwg64l083Skg1VgvhEkZueVHx2s=; b=HXg+znxTlEMvcz1FAlE3dem1AK7wERmTLTfsGZw1AutCzTsbCQUxnd0LBowu1oMqa4CTOQ 7BGOVk/ftGjnoAWXut9Lm6AJwjxw93oB9FiVYoPVZcSqfQ8WrKNNy53/tCoyYRQwU7hCL6 nz4hpz/fby6kDF/PEyupuGRsHJ0KpVc= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=18nCtam6; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=plQX7ve5; dmarc=none; spf=pass (imf08.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678444339; a=rsa-sha256; cv=none; b=eDxH6SlqObDs8++8BEnGS82RQON0CegelfG82zxgsuxHN5q+ueSeqkOgYCX+tnaKXEuGa2 LvJ8ms24I8K0Kcawk9j5c7WHkRGwaq/wXFM3Gditrem6gSS9IyhS372z5euI8tYQ7FjO+T qUetFZTB9RTWcbrFAFaJIrt8ciXJsnE= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id ACEAE20657; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0eZBgS/1HJgq2/QUOwg64l083Skg1VgvhEkZueVHx2s=; b=18nCtam6FJr2j6tOwfmaM/2N9Bw3jhU8UdHSF6bjEuY6oJwFpKlXoeIxG9JxNQGorlqS+G UMZ0Pk6Sv5YHq5ARdIz+DGcOI40n41/OYn9+3QylGYCLBxPeOOEks+bX9WZ8mRY68Eex+u Q8a9ze8Z4AAoZ8rSu521cOwKoYqOpKQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678444335; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0eZBgS/1HJgq2/QUOwg64l083Skg1VgvhEkZueVHx2s=; b=plQX7ve5oZ7cjWEQ7Onq6o+n0gk+vHYB4Abf6/S3atZXlx4rOmdSvu46bX0DkHKa95wa1i HbRYSivAWz8JUpDg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 73D8313592; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 8EutGy8HC2SsXQAAMHmgww (envelope-from ); Fri, 10 Mar 2023 10:32:15 +0000 From: Vlastimil Babka To: Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , Andrew Morton , linux-mm@kvack.org, rcu@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Vlastimil Babka Subject: [PATCH 6/7] mm/slob: remove slob.c Date: Fri, 10 Mar 2023 11:32:08 +0100 Message-Id: <20230310103210.22372-7-vbabka@suse.cz> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310103210.22372-1-vbabka@suse.cz> References: <20230310103210.22372-1-vbabka@suse.cz> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: DB5D0160007 X-Stat-Signature: poq8asmo6jmay455x5p5xbjt6nhocws5 X-HE-Tag: 1678444338-888574 X-HE-Meta: U2FsdGVkX18nFSt5TDIqAgNWhKE8dZPD2i/N6p3EOQfDsgAnjJGSWbBy0lDtndQG0wmJnvOdIyVvr9f6HdOFh0wShUSTtd55v0HNrxuUJEVXd7xPheBng/WO0WtdcEH5s0ze06LAuFISfUaGQBwQP+VyVqZ04QmxKB1KLrFOOho7diOWoWJcmCg+xeDnDy8aQ/f8waucDPQWUNw5YhqS3dYg/vDV+Onc0gZqJgXz9xjw9v240nvx4CF3urJYpSGqAFYW6desLZoZRoSaiFjesKTW3a33PIK0PrwlXD3pBHWGYuF05uezRBVjdriUX1M/qM+GqAm0Rm2juQ+542xjJccug5+MAgm+Ao8pHinxGKyDvF7fu45fouE1g/k0e4P0ZzDx6RWcHlfHWFhprQidRGoIMtgTLTf3F5UqtcJHq/SnclHDwEl/9YXiZdJOXOEu8bmCmdLgFpU1bWX5300rSsbRJvWG+gH4mHUskvlLGdPqLPHkiWj42EKVsxseJF/GzT1LOO/yZ1wiuY9AxZ/izwccDTWn+2E75mGCpl/1y+r3GZ1Mrp/RrXAwlmhYxYZzG8gNRVgrTVzUaORK0IEvmCCu/5T0DvFRheW0H6nhJcfQZ2pmFyAGImRZVJpm5pWQS58JALYxK6/0iIr6vbcK0e572SqE2CBSrKSy2hOfWnawzo8pvjJo1o2ElCTFRV/vksHXURkeYfDn3Ut0+FXKQQrAFsBNlTeKdrl3//EtfXQNH/cyYs7Hg7EMp7cW04guLt5mySIohhVg2yiSE16RgRUoEKrkkocLzipm/Jjku8MIyOCBBkODzGqfXSA2jcECyDI+JLwtsyXjmoFC3sIgeczvRJBGnOSiU3cwMAWrr5/oFe0K08VZ8dxbeq86yVIIALlyQI2snWsaGfUI7C+Ytvn8RA5a1eADc/EljzXed4o49hXvqNCsdObhVVI3xTXMi1GCabHrMTzXJ7T6hD9 LdXq6OeV r9QKMH8LLVfkuMKMBTb/IIJ29nBHEYPX0iSkkK3Cv0h+xkt4A5M04zSwn8L7UCDKLOKJBMyPO9mAraxC29sat/kQfR23xqw9y5HR8pCiA9wYkEGOCZpO0/8v0zU+npo5ZEwAwO59YzWhWRJCvBKrsAf+NFZIgM8CzA7dDXFUfEVvjSgqI6jg1ySA31idw73CbjUheOqwRWQh2xFEJA9kG4teixFvMrGJZXxG7GRpIQWcamCNor3/tFMs7AAMSnV9rfazNDJFS9S1eHbcgUjodQJu842VMSO4HcA+2evC1Mi9FMOt12DaYh4b7/uz07kNfKzfXUTWkDgJ/sxm4z/eU1kFDwQ== 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: Remove the SLOB implementation. RIP SLOB allocator (2006 - 2023) Signed-off-by: Vlastimil Babka Acked-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Acked-by: Lorenzo Stoakes Acked-by: Roman Gushchin --- mm/slob.c | 757 ------------------------------------------------------ 1 file changed, 757 deletions(-) delete mode 100644 mm/slob.c diff --git a/mm/slob.c b/mm/slob.c deleted file mode 100644 index fe567fcfa3a3..000000000000 --- a/mm/slob.c +++ /dev/null @@ -1,757 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * SLOB Allocator: Simple List Of Blocks - * - * Matt Mackall 12/30/03 - * - * NUMA support by Paul Mundt, 2007. - * - * How SLOB works: - * - * The core of SLOB is a traditional K&R style heap allocator, with - * support for returning aligned objects. The granularity of this - * allocator is as little as 2 bytes, however typically most architectures - * will require 4 bytes on 32-bit and 8 bytes on 64-bit. - * - * The slob heap is a set of linked list of pages from alloc_pages(), - * and within each page, there is a singly-linked list of free blocks - * (slob_t). The heap is grown on demand. To reduce fragmentation, - * heap pages are segregated into three lists, with objects less than - * 256 bytes, objects less than 1024 bytes, and all other objects. - * - * Allocation from heap involves first searching for a page with - * sufficient free blocks (using a next-fit-like approach) followed by - * a first-fit scan of the page. Deallocation inserts objects back - * into the free list in address order, so this is effectively an - * address-ordered first fit. - * - * Above this is an implementation of kmalloc/kfree. Blocks returned - * from kmalloc are prepended with a 4-byte header with the kmalloc size. - * If kmalloc is asked for objects of PAGE_SIZE or larger, it calls - * alloc_pages() directly, allocating compound pages so the page order - * does not have to be separately tracked. - * These objects are detected in kfree() because folio_test_slab() - * is false for them. - * - * SLAB is emulated on top of SLOB by simply calling constructors and - * destructors for every SLAB allocation. Objects are returned with the - * 4-byte alignment unless the SLAB_HWCACHE_ALIGN flag is set, in which - * case the low-level allocator will fragment blocks to create the proper - * alignment. Again, objects of page-size or greater are allocated by - * calling alloc_pages(). As SLAB objects know their size, no separate - * size bookkeeping is necessary and there is essentially no allocation - * space overhead, and compound pages aren't needed for multi-page - * allocations. - * - * NUMA support in SLOB is fairly simplistic, pushing most of the real - * logic down to the page allocator, and simply doing the node accounting - * on the upper levels. In the event that a node id is explicitly - * provided, __alloc_pages_node() with the specified node id is used - * instead. The common case (or when the node id isn't explicitly provided) - * will default to the current node, as per numa_node_id(). - * - * Node aware pages are still inserted in to the global freelist, and - * these are scanned for by matching against the node id encoded in the - * page flags. As a result, block allocations that can be satisfied from - * the freelist will only be done so on pages residing on the same node, - * in order to prevent random node placement. - */ - -#include -#include - -#include -#include /* struct reclaim_state */ -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include "slab.h" -/* - * slob_block has a field 'units', which indicates size of block if +ve, - * or offset of next block if -ve (in SLOB_UNITs). - * - * Free blocks of size 1 unit simply contain the offset of the next block. - * Those with larger size contain their size in the first SLOB_UNIT of - * memory, and the offset of the next free block in the second SLOB_UNIT. - */ -#if PAGE_SIZE <= (32767 * 2) -typedef s16 slobidx_t; -#else -typedef s32 slobidx_t; -#endif - -struct slob_block { - slobidx_t units; -}; -typedef struct slob_block slob_t; - -/* - * All partially free slob pages go on these lists. - */ -#define SLOB_BREAK1 256 -#define SLOB_BREAK2 1024 -static LIST_HEAD(free_slob_small); -static LIST_HEAD(free_slob_medium); -static LIST_HEAD(free_slob_large); - -/* - * slob_page_free: true for pages on free_slob_pages list. - */ -static inline int slob_page_free(struct slab *slab) -{ - return PageSlobFree(slab_page(slab)); -} - -static void set_slob_page_free(struct slab *slab, struct list_head *list) -{ - list_add(&slab->slab_list, list); - __SetPageSlobFree(slab_page(slab)); -} - -static inline void clear_slob_page_free(struct slab *slab) -{ - list_del(&slab->slab_list); - __ClearPageSlobFree(slab_page(slab)); -} - -#define SLOB_UNIT sizeof(slob_t) -#define SLOB_UNITS(size) DIV_ROUND_UP(size, SLOB_UNIT) - -/* - * struct slob_rcu is inserted at the tail of allocated slob blocks, which - * were created with a SLAB_TYPESAFE_BY_RCU slab. slob_rcu is used to free - * the block using call_rcu. - */ -struct slob_rcu { - struct rcu_head head; - int size; -}; - -/* - * slob_lock protects all slob allocator structures. - */ -static DEFINE_SPINLOCK(slob_lock); - -/* - * Encode the given size and next info into a free slob block s. - */ -static void set_slob(slob_t *s, slobidx_t size, slob_t *next) -{ - slob_t *base = (slob_t *)((unsigned long)s & PAGE_MASK); - slobidx_t offset = next - base; - - if (size > 1) { - s[0].units = size; - s[1].units = offset; - } else - s[0].units = -offset; -} - -/* - * Return the size of a slob block. - */ -static slobidx_t slob_units(slob_t *s) -{ - if (s->units > 0) - return s->units; - return 1; -} - -/* - * Return the next free slob block pointer after this one. - */ -static slob_t *slob_next(slob_t *s) -{ - slob_t *base = (slob_t *)((unsigned long)s & PAGE_MASK); - slobidx_t next; - - if (s[0].units < 0) - next = -s[0].units; - else - next = s[1].units; - return base+next; -} - -/* - * Returns true if s is the last free block in its page. - */ -static int slob_last(slob_t *s) -{ - return !((unsigned long)slob_next(s) & ~PAGE_MASK); -} - -static void *slob_new_pages(gfp_t gfp, int order, int node) -{ - struct page *page; - -#ifdef CONFIG_NUMA - if (node != NUMA_NO_NODE) - page = __alloc_pages_node(node, gfp, order); - else -#endif - page = alloc_pages(gfp, order); - - if (!page) - return NULL; - - mod_node_page_state(page_pgdat(page), NR_SLAB_UNRECLAIMABLE_B, - PAGE_SIZE << order); - return page_address(page); -} - -static void slob_free_pages(void *b, int order) -{ - struct page *sp = virt_to_page(b); - - if (current->reclaim_state) - current->reclaim_state->reclaimed_slab += 1 << order; - - mod_node_page_state(page_pgdat(sp), NR_SLAB_UNRECLAIMABLE_B, - -(PAGE_SIZE << order)); - __free_pages(sp, order); -} - -/* - * slob_page_alloc() - Allocate a slob block within a given slob_page sp. - * @sp: Page to look in. - * @size: Size of the allocation. - * @align: Allocation alignment. - * @align_offset: Offset in the allocated block that will be aligned. - * @page_removed_from_list: Return parameter. - * - * Tries to find a chunk of memory at least @size bytes big within @page. - * - * Return: Pointer to memory if allocated, %NULL otherwise. If the - * allocation fills up @page then the page is removed from the - * freelist, in this case @page_removed_from_list will be set to - * true (set to false otherwise). - */ -static void *slob_page_alloc(struct slab *sp, size_t size, int align, - int align_offset, bool *page_removed_from_list) -{ - slob_t *prev, *cur, *aligned = NULL; - int delta = 0, units = SLOB_UNITS(size); - - *page_removed_from_list = false; - for (prev = NULL, cur = sp->freelist; ; prev = cur, cur = slob_next(cur)) { - slobidx_t avail = slob_units(cur); - - /* - * 'aligned' will hold the address of the slob block so that the - * address 'aligned'+'align_offset' is aligned according to the - * 'align' parameter. This is for kmalloc() which prepends the - * allocated block with its size, so that the block itself is - * aligned when needed. - */ - if (align) { - aligned = (slob_t *) - (ALIGN((unsigned long)cur + align_offset, align) - - align_offset); - delta = aligned - cur; - } - if (avail >= units + delta) { /* room enough? */ - slob_t *next; - - if (delta) { /* need to fragment head to align? */ - next = slob_next(cur); - set_slob(aligned, avail - delta, next); - set_slob(cur, delta, aligned); - prev = cur; - cur = aligned; - avail = slob_units(cur); - } - - next = slob_next(cur); - if (avail == units) { /* exact fit? unlink. */ - if (prev) - set_slob(prev, slob_units(prev), next); - else - sp->freelist = next; - } else { /* fragment */ - if (prev) - set_slob(prev, slob_units(prev), cur + units); - else - sp->freelist = cur + units; - set_slob(cur + units, avail - units, next); - } - - sp->units -= units; - if (!sp->units) { - clear_slob_page_free(sp); - *page_removed_from_list = true; - } - return cur; - } - if (slob_last(cur)) - return NULL; - } -} - -/* - * slob_alloc: entry point into the slob allocator. - */ -static void *slob_alloc(size_t size, gfp_t gfp, int align, int node, - int align_offset) -{ - struct folio *folio; - struct slab *sp; - struct list_head *slob_list; - slob_t *b = NULL; - unsigned long flags; - bool _unused; - - if (size < SLOB_BREAK1) - slob_list = &free_slob_small; - else if (size < SLOB_BREAK2) - slob_list = &free_slob_medium; - else - slob_list = &free_slob_large; - - spin_lock_irqsave(&slob_lock, flags); - /* Iterate through each partially free page, try to find room */ - list_for_each_entry(sp, slob_list, slab_list) { - bool page_removed_from_list = false; -#ifdef CONFIG_NUMA - /* - * If there's a node specification, search for a partial - * page with a matching node id in the freelist. - */ - if (node != NUMA_NO_NODE && slab_nid(sp) != node) - continue; -#endif - /* Enough room on this page? */ - if (sp->units < SLOB_UNITS(size)) - continue; - - b = slob_page_alloc(sp, size, align, align_offset, &page_removed_from_list); - if (!b) - continue; - - /* - * If slob_page_alloc() removed sp from the list then we - * cannot call list functions on sp. If so allocation - * did not fragment the page anyway so optimisation is - * unnecessary. - */ - if (!page_removed_from_list) { - /* - * Improve fragment distribution and reduce our average - * search time by starting our next search here. (see - * Knuth vol 1, sec 2.5, pg 449) - */ - if (!list_is_first(&sp->slab_list, slob_list)) - list_rotate_to_front(&sp->slab_list, slob_list); - } - break; - } - spin_unlock_irqrestore(&slob_lock, flags); - - /* Not enough space: must allocate a new page */ - if (!b) { - b = slob_new_pages(gfp & ~__GFP_ZERO, 0, node); - if (!b) - return NULL; - folio = virt_to_folio(b); - __folio_set_slab(folio); - sp = folio_slab(folio); - - spin_lock_irqsave(&slob_lock, flags); - sp->units = SLOB_UNITS(PAGE_SIZE); - sp->freelist = b; - INIT_LIST_HEAD(&sp->slab_list); - set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE)); - set_slob_page_free(sp, slob_list); - b = slob_page_alloc(sp, size, align, align_offset, &_unused); - BUG_ON(!b); - spin_unlock_irqrestore(&slob_lock, flags); - } - if (unlikely(gfp & __GFP_ZERO)) - memset(b, 0, size); - return b; -} - -/* - * slob_free: entry point into the slob allocator. - */ -static void slob_free(void *block, int size) -{ - struct slab *sp; - slob_t *prev, *next, *b = (slob_t *)block; - slobidx_t units; - unsigned long flags; - struct list_head *slob_list; - - if (unlikely(ZERO_OR_NULL_PTR(block))) - return; - BUG_ON(!size); - - sp = virt_to_slab(block); - units = SLOB_UNITS(size); - - spin_lock_irqsave(&slob_lock, flags); - - if (sp->units + units == SLOB_UNITS(PAGE_SIZE)) { - /* Go directly to page allocator. Do not pass slob allocator */ - if (slob_page_free(sp)) - clear_slob_page_free(sp); - spin_unlock_irqrestore(&slob_lock, flags); - __folio_clear_slab(slab_folio(sp)); - slob_free_pages(b, 0); - return; - } - - if (!slob_page_free(sp)) { - /* This slob page is about to become partially free. Easy! */ - sp->units = units; - sp->freelist = b; - set_slob(b, units, - (void *)((unsigned long)(b + - SLOB_UNITS(PAGE_SIZE)) & PAGE_MASK)); - if (size < SLOB_BREAK1) - slob_list = &free_slob_small; - else if (size < SLOB_BREAK2) - slob_list = &free_slob_medium; - else - slob_list = &free_slob_large; - set_slob_page_free(sp, slob_list); - goto out; - } - - /* - * Otherwise the page is already partially free, so find reinsertion - * point. - */ - sp->units += units; - - if (b < (slob_t *)sp->freelist) { - if (b + units == sp->freelist) { - units += slob_units(sp->freelist); - sp->freelist = slob_next(sp->freelist); - } - set_slob(b, units, sp->freelist); - sp->freelist = b; - } else { - prev = sp->freelist; - next = slob_next(prev); - while (b > next) { - prev = next; - next = slob_next(prev); - } - - if (!slob_last(prev) && b + units == next) { - units += slob_units(next); - set_slob(b, units, slob_next(next)); - } else - set_slob(b, units, next); - - if (prev + slob_units(prev) == b) { - units = slob_units(b) + slob_units(prev); - set_slob(prev, units, slob_next(b)); - } else - set_slob(prev, slob_units(prev), b); - } -out: - spin_unlock_irqrestore(&slob_lock, flags); -} - -#ifdef CONFIG_PRINTK -void __kmem_obj_info(struct kmem_obj_info *kpp, void *object, struct slab *slab) -{ - kpp->kp_ptr = object; - kpp->kp_slab = slab; -} -#endif - -/* - * End of slob allocator proper. Begin kmem_cache_alloc and kmalloc frontend. - */ - -static __always_inline void * -__do_kmalloc_node(size_t size, gfp_t gfp, int node, unsigned long caller) -{ - unsigned int *m; - unsigned int minalign; - void *ret; - - minalign = max_t(unsigned int, ARCH_KMALLOC_MINALIGN, - arch_slab_minalign()); - gfp &= gfp_allowed_mask; - - might_alloc(gfp); - - if (size < PAGE_SIZE - minalign) { - int align = minalign; - - /* - * For power of two sizes, guarantee natural alignment for - * kmalloc()'d objects. - */ - if (is_power_of_2(size)) - align = max_t(unsigned int, minalign, size); - - if (!size) - return ZERO_SIZE_PTR; - - m = slob_alloc(size + minalign, gfp, align, node, minalign); - - if (!m) - return NULL; - *m = size; - ret = (void *)m + minalign; - - trace_kmalloc(caller, ret, size, size + minalign, gfp, node); - } else { - unsigned int order = get_order(size); - - if (likely(order)) - gfp |= __GFP_COMP; - ret = slob_new_pages(gfp, order, node); - - trace_kmalloc(caller, ret, size, PAGE_SIZE << order, gfp, node); - } - - kmemleak_alloc(ret, size, 1, gfp); - return ret; -} - -void *__kmalloc(size_t size, gfp_t gfp) -{ - return __do_kmalloc_node(size, gfp, NUMA_NO_NODE, _RET_IP_); -} -EXPORT_SYMBOL(__kmalloc); - -void *__kmalloc_node_track_caller(size_t size, gfp_t gfp, - int node, unsigned long caller) -{ - return __do_kmalloc_node(size, gfp, node, caller); -} -EXPORT_SYMBOL(__kmalloc_node_track_caller); - -void kfree(const void *block) -{ - struct folio *sp; - - trace_kfree(_RET_IP_, block); - - if (unlikely(ZERO_OR_NULL_PTR(block))) - return; - kmemleak_free(block); - - sp = virt_to_folio(block); - if (folio_test_slab(sp)) { - unsigned int align = max_t(unsigned int, - ARCH_KMALLOC_MINALIGN, - arch_slab_minalign()); - unsigned int *m = (unsigned int *)(block - align); - - slob_free(m, *m + align); - } else { - unsigned int order = folio_order(sp); - - mod_node_page_state(folio_pgdat(sp), NR_SLAB_UNRECLAIMABLE_B, - -(PAGE_SIZE << order)); - __free_pages(folio_page(sp, 0), order); - - } -} -EXPORT_SYMBOL(kfree); - -size_t kmalloc_size_roundup(size_t size) -{ - /* Short-circuit the 0 size case. */ - if (unlikely(size == 0)) - return 0; - /* Short-circuit saturated "too-large" case. */ - if (unlikely(size == SIZE_MAX)) - return SIZE_MAX; - - return ALIGN(size, ARCH_KMALLOC_MINALIGN); -} - -EXPORT_SYMBOL(kmalloc_size_roundup); - -/* can't use ksize for kmem_cache_alloc memory, only kmalloc */ -size_t __ksize(const void *block) -{ - struct folio *folio; - unsigned int align; - unsigned int *m; - - BUG_ON(!block); - if (unlikely(block == ZERO_SIZE_PTR)) - return 0; - - folio = virt_to_folio(block); - if (unlikely(!folio_test_slab(folio))) - return folio_size(folio); - - align = max_t(unsigned int, ARCH_KMALLOC_MINALIGN, - arch_slab_minalign()); - m = (unsigned int *)(block - align); - return SLOB_UNITS(*m) * SLOB_UNIT; -} - -int __kmem_cache_create(struct kmem_cache *c, slab_flags_t flags) -{ - if (flags & SLAB_TYPESAFE_BY_RCU) { - /* leave room for rcu footer at the end of object */ - c->size += sizeof(struct slob_rcu); - } - - /* Actual size allocated */ - c->size = SLOB_UNITS(c->size) * SLOB_UNIT; - c->flags = flags; - return 0; -} - -static void *slob_alloc_node(struct kmem_cache *c, gfp_t flags, int node) -{ - void *b; - - flags &= gfp_allowed_mask; - - might_alloc(flags); - - if (c->size < PAGE_SIZE) { - b = slob_alloc(c->size, flags, c->align, node, 0); - trace_kmem_cache_alloc(_RET_IP_, b, c, flags, node); - } else { - b = slob_new_pages(flags, get_order(c->size), node); - trace_kmem_cache_alloc(_RET_IP_, b, c, flags, node); - } - - if (b && c->ctor) { - WARN_ON_ONCE(flags & __GFP_ZERO); - c->ctor(b); - } - - kmemleak_alloc_recursive(b, c->size, 1, c->flags, flags); - return b; -} - -void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags) -{ - return slob_alloc_node(cachep, flags, NUMA_NO_NODE); -} -EXPORT_SYMBOL(kmem_cache_alloc); - - -void *kmem_cache_alloc_lru(struct kmem_cache *cachep, struct list_lru *lru, gfp_t flags) -{ - return slob_alloc_node(cachep, flags, NUMA_NO_NODE); -} -EXPORT_SYMBOL(kmem_cache_alloc_lru); - -void *__kmalloc_node(size_t size, gfp_t gfp, int node) -{ - return __do_kmalloc_node(size, gfp, node, _RET_IP_); -} -EXPORT_SYMBOL(__kmalloc_node); - -void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t gfp, int node) -{ - return slob_alloc_node(cachep, gfp, node); -} -EXPORT_SYMBOL(kmem_cache_alloc_node); - -static void __kmem_cache_free(void *b, int size) -{ - if (size < PAGE_SIZE) - slob_free(b, size); - else - slob_free_pages(b, get_order(size)); -} - -static void kmem_rcu_free(struct rcu_head *head) -{ - struct slob_rcu *slob_rcu = (struct slob_rcu *)head; - void *b = (void *)slob_rcu - (slob_rcu->size - sizeof(struct slob_rcu)); - - __kmem_cache_free(b, slob_rcu->size); -} - -void kmem_cache_free(struct kmem_cache *c, void *b) -{ - kmemleak_free_recursive(b, c->flags); - trace_kmem_cache_free(_RET_IP_, b, c); - if (unlikely(c->flags & SLAB_TYPESAFE_BY_RCU)) { - struct slob_rcu *slob_rcu; - slob_rcu = b + (c->size - sizeof(struct slob_rcu)); - slob_rcu->size = c->size; - call_rcu(&slob_rcu->head, kmem_rcu_free); - } else { - __kmem_cache_free(b, c->size); - } -} -EXPORT_SYMBOL(kmem_cache_free); - -void kmem_cache_free_bulk(struct kmem_cache *s, size_t nr, void **p) -{ - size_t i; - - for (i = 0; i < nr; i++) { - if (s) - kmem_cache_free(s, p[i]); - else - kfree(p[i]); - } -} -EXPORT_SYMBOL(kmem_cache_free_bulk); - -int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t nr, - void **p) -{ - size_t i; - - for (i = 0; i < nr; i++) { - void *x = p[i] = kmem_cache_alloc(s, flags); - - if (!x) { - kmem_cache_free_bulk(s, i, p); - return 0; - } - } - return i; -} -EXPORT_SYMBOL(kmem_cache_alloc_bulk); - -int __kmem_cache_shutdown(struct kmem_cache *c) -{ - /* No way to check for remaining objects */ - return 0; -} - -void __kmem_cache_release(struct kmem_cache *c) -{ -} - -int __kmem_cache_shrink(struct kmem_cache *d) -{ - return 0; -} - -static struct kmem_cache kmem_cache_boot = { - .name = "kmem_cache", - .size = sizeof(struct kmem_cache), - .flags = SLAB_PANIC, - .align = ARCH_KMALLOC_MINALIGN, -}; - -void __init kmem_cache_init(void) -{ - kmem_cache = &kmem_cache_boot; - slab_state = UP; -} - -void __init kmem_cache_init_late(void) -{ - slab_state = FULL; -} From patchwork Fri Mar 10 10:32:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 13169126 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 881BAC7618A for ; Fri, 10 Mar 2023 10:32:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 717858E0001; Fri, 10 Mar 2023 05:32:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 66E3E8E0006; Fri, 10 Mar 2023 05:32:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E4E28E0001; Fri, 10 Mar 2023 05:32:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 096978E0002 for ; Fri, 10 Mar 2023 05:32:21 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E110514155A for ; Fri, 10 Mar 2023 10:32:20 +0000 (UTC) X-FDA: 80552624040.25.9E06181 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf01.hostedemail.com (Postfix) with ESMTP id EA0BC40002 for ; Fri, 10 Mar 2023 10:32:18 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ny6yHHgx; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=c9nJ0Fcc; spf=pass (imf01.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678444339; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=F0XRtKZ/CBnBdFwvCLJ4UaehJA7uc5hjJpqNCel0wLs=; b=GxPxrlHP0b/hn4QmTkG4fH45te0yP+gjkiMrzggXWHJ9FreJK+3WHMylAYKkG3NZbdFmp+ UHLQ5XATfr2EjO1gDCbqFuHaHYe6kaxbCrpMDnmdOCjltXJTmsrVTbvNEwoEN6PSoeUWY+ J3dY1GJp0i77HhPuBtdPtf7xn36Gfj8= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ny6yHHgx; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=c9nJ0Fcc; spf=pass (imf01.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678444339; a=rsa-sha256; cv=none; b=o9TAniaEgXrDPlPSGMVgNcmZvIgIOBxYmZkHC3iMrN9uXLW/pQ8CX6yKOneZFoL4K9bhH7 J5hcUs1oHH34Y+wKMHnSXvePJxt8Z0rdzhPDqHPe28fwaahr6d2n8tQRk2PXGF4Vj2QMFx aDe72eVcGMFoNeOR1JnC+qCS6curgDA= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 0A9B920658; Fri, 10 Mar 2023 10:32:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678444336; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=F0XRtKZ/CBnBdFwvCLJ4UaehJA7uc5hjJpqNCel0wLs=; b=ny6yHHgxBFiJbE3G6TRbuILZouc1FfvSrZIoIEn8Em8pxQKwBpTC/0Qle6cFe4FXhysYz0 NMbFaFWjtUXlnAK/ccshrkhJGiBFdHDuievEiUw86Gbdf2AFa3ZsMybWtSlZHH8oy6Sp9i ZpGBiiSbCNgZ8F9agBUQAkhYLWCxENQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678444336; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=F0XRtKZ/CBnBdFwvCLJ4UaehJA7uc5hjJpqNCel0wLs=; b=c9nJ0FccGPUvt1DKTqxoLPfWREATBKJgPjNehuttmFBezZCtQpnvtyFJ63HgnPkQ7+m1up 9RsCY1fVGVJsrCAQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id B11A6139F9; Fri, 10 Mar 2023 10:32:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id aCmUKi8HC2SsXQAAMHmgww (envelope-from ); Fri, 10 Mar 2023 10:32:15 +0000 From: Vlastimil Babka To: Christoph Lameter , David Rientjes , Joonsoo Kim , Pekka Enberg Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin , Andrew Morton , linux-mm@kvack.org, rcu@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Vlastimil Babka , Mike Rapoport , Jonathan Corbet , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Josh Triplett , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Joel Fernandes Subject: [PATCH 7/7] mm/slab: document kfree() as allowed for kmem_cache_alloc() objects Date: Fri, 10 Mar 2023 11:32:09 +0100 Message-Id: <20230310103210.22372-8-vbabka@suse.cz> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230310103210.22372-1-vbabka@suse.cz> References: <20230310103210.22372-1-vbabka@suse.cz> MIME-Version: 1.0 X-Rspamd-Queue-Id: EA0BC40002 X-Stat-Signature: c4qd4z7mc4kmt1pb1re8mbarok35pcws X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1678444338-604588 X-HE-Meta: U2FsdGVkX1/if0920MFaQA8I35H+vsk93L/060WwSgn6bOG8DFjdDmBZE+M1HKGXfoIf2jKfA4qnRU8JiTtfa6vwwE6v+h/qnY7RleuGXQbNd/ELJm1ayxl+XPWxhBOCnSiM7N0R4liNBYhLLBcdeVfB+XgtnTXM+uzL3LT/55PDK5IKDuQ6Go2jKwE7++uirFuE/Hog3bRFoYmpCVQhhIXOCXR7LEnLrW4AbS9oQx4GghdD6PN793O9isncIUnTYzeDwpKE9oYDs+ftZzZEuV97CfHVSgZ371E/gg13fuZJvHoXeEnHSZ9JnT8CEdEAyKbZrQ51aj6LXn9iXo4PEkvXtOe00yoxTPFvaHSIEY17D1kdJYIQl8jZfSciFL7j8Xihc3hly0bODZmAwS0SWxl8tkezndJ8zbT8lrco7kwvcPpQEUtAx6ixwLfFZ5el7ziVlPPQQWgd4sX+CU6nBuuWr/tBkqhG7IvTYdU9Rg0Y9VHIiHCKyOCfjY9AzqqKMVyj+ZFmCNkCXTtswicgdNyFbLUGmF3jvadELm0g/C3mC+sELW+VGaeh3u0Z3L31/OfwaHH99MsNUfzc9fWmkwWKJ+UT+qHgZBmZzVs3UNwfPHmTgHNCM0ntMttoo2kJyGrTYebznEHRPRcT8QjcHnxsELj2mFt6BmL0yIlXGnHYvjb/CgORT3vfBQOJqFE9K7OAsVbAGy1oNsUnMAzEXnlblUWP1iLEUobxj++pAd5dmvnx5T7laruh2dDYp3d1Ft1mLdJZ/hSCSVLhXLrR/6Yts6VQAyJ0bRHT5PbCAQSILii+OIGSHycwLS60eFNntCWT2HVZYfogWQ6lZWjvMKX1Z/GjqgHZ4IykEnwGSeX/BFEONJBj+KgMr59g+ev609UZL5+AR/r/iIWdDUhpjmXl2Eb/ibnFxxLJDQnyCiDzJ38LSlGSpO7+Q0m4oF1pixMJPbNaIR+I9Eq9PTp dBIN5Gvi StG73GnRWwRwK4Df4YQJOKAYJy5gLOAwjDb/eV1KlnkFNrk4OyTysDIJqGJfScnrEy2gcJbcNGaxZpFBWc3J09T7l51eAYDekdtnzh66tueF1p32gYJ++CXGllySHEHYQ1M2d/AdEYCH2WHGSZIpAB26Ii+rQpino6mR7f168xcpIVAW/zs5+NRb6yYt25uGnGNAcIUoo8P4UZhL4k729HUMdkoUEWZjFVFxi+zIC5YsVgPNnF9dPqjb4G49ovu6JxfZhW3u58UZqQ7enOTOIyzOKlZENdRocmhOyn95vLCourOrpoV4Socpbnx2UINlMDvSdSJixwvvKzzysBBY9lY2ivhmMijRm0Sv6FTO2TAtO7zfgfmRnr3vKTLbvFwNQ2zSE2ve8wh7NpTKlAZs9abvq7tigaNuX3kkE8q9pjK5OGIbRc+IRgahORCxb0KIjt0Qea4514AkCbp/ohFrYeXc0VSb20N3cmn+7UPA0Wj5oMREY2rWzQeM858F89hTM2kSaxDMsRGbZ9DalNb5lm0LyAaji/eLCGrGWQbbkRE3dG0YlPnU7ROtPmW8rYqkiu0Gmcx9t41otB8n8wSFis4WdtZvHxOzQK2t/D3uzZ2JzyOfnZlGgNoWfbpdEBPmbasJVfw2cxiB0kGl0DflDlGpatAqusDAxTnbZhVhvWNZ9wt/sEdaqqcFnfCYt6Hgbfbr4TPTNoZoL1N+lBkCGSX//JRwSXfCN1Ros1NgDJg/0y3Mu/R1g2Tiy0z/sxrz9R217 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: This will make it easier to free objects in situations when they can come from either kmalloc() or kmem_cache_alloc(), and also allow kfree_rcu() for freeing objects from kmem_cache_alloc(). For the SLAB and SLUB allocators this was always possible so with SLOB gone, we can document it as supported. Signed-off-by: Vlastimil Babka Cc: Mike Rapoport Cc: Jonathan Corbet Cc: "Paul E. McKenney" Cc: Frederic Weisbecker Cc: Neeraj Upadhyay Cc: Josh Triplett Cc: Steven Rostedt Cc: Mathieu Desnoyers Cc: Lai Jiangshan Cc: Joel Fernandes --- Documentation/core-api/memory-allocation.rst | 15 +++++++++++---- include/linux/rcupdate.h | 6 ++++-- mm/slab_common.c | 5 +---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Documentation/core-api/memory-allocation.rst b/Documentation/core-api/memory-allocation.rst index 5954ddf6ee13..f9e8d352ed67 100644 --- a/Documentation/core-api/memory-allocation.rst +++ b/Documentation/core-api/memory-allocation.rst @@ -170,7 +170,14 @@ should be used if a part of the cache might be copied to the userspace. After the cache is created kmem_cache_alloc() and its convenience wrappers can allocate memory from that cache. -When the allocated memory is no longer needed it must be freed. You can -use kvfree() for the memory allocated with `kmalloc`, `vmalloc` and -`kvmalloc`. The slab caches should be freed with kmem_cache_free(). And -don't forget to destroy the cache with kmem_cache_destroy(). +When the allocated memory is no longer needed it must be freed. Objects +allocated by `kmalloc` can be freed by `kfree` or `kvfree`. +Objects allocated by `kmem_cache_alloc` can be freed with `kmem_cache_free` +or also by `kfree` or `kvfree`, which can be more convenient as it does +not require the kmem_cache pointed. +The rules for _bulk and _rcu flavors of freeing functions are analogical. + +Memory allocated by `vmalloc` can be freed with `vfree` or `kvfree`. +Memory allocated by `kvmalloc` can be freed with `kvfree`. +Caches created by `kmem_cache_create` should be freed with +`kmem_cache_destroy` only after freeing all the allocated objects first. diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 094321c17e48..dcd2cf1e8326 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -976,8 +976,10 @@ static inline notrace void rcu_read_unlock_sched_notrace(void) * either fall back to use of call_rcu() or rearrange the structure to * position the rcu_head structure into the first 4096 bytes. * - * Note that the allowable offset might decrease in the future, for example, - * to allow something like kmem_cache_free_rcu(). + * The object to be freed can be allocated either by kmalloc() or + * kmem_cache_alloc(). + * + * Note that the allowable offset might decrease in the future. * * The BUILD_BUG_ON check must not involve any function calls, hence the * checks are done in macros here. diff --git a/mm/slab_common.c b/mm/slab_common.c index 1522693295f5..607249785c07 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -989,12 +989,9 @@ EXPORT_SYMBOL(__kmalloc_node_track_caller); /** * kfree - free previously allocated memory - * @object: pointer returned by kmalloc. + * @object: pointer returned by kmalloc() or kmem_cache_alloc() * * If @object is NULL, no operation is performed. - * - * Don't free memory not originally allocated by kmalloc() - * or you will run into trouble. */ void kfree(const void *object) {