From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10959C369B2 for ; Thu, 17 Apr 2025 07:41:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9A5F96B008C; Thu, 17 Apr 2025 03:41:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9539F6B0092; Thu, 17 Apr 2025 03:41:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8426C6B0093; Thu, 17 Apr 2025 03:41:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 674A66B008C for ; Thu, 17 Apr 2025 03:41:22 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E5FE814142E for ; Thu, 17 Apr 2025 07:41:23 +0000 (UTC) X-FDA: 83342740446.04.1791360 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by imf04.hostedemail.com (Postfix) with ESMTP id C794440006 for ; Thu, 17 Apr 2025 07:41:21 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=lT2x5n3p; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=lm6HnBSc; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=2SmKcDVB; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=1eJfHZ65; spf=pass (imf04.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 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=1744875682; 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:references:dkim-signature; bh=/RzgBhCz5ui1KZaKvUXf1dvF2W7M5uxN4m6PpQhkJT0=; b=YSTQzGKfQGDej8GN7u/Vf9uiKJ5i0Q0pR/2YvIDoMdOglwENWRO+F3B7qE/+6ZhOb5+ox1 cneReC6CYqyhTMcZp2UBF/PKQ9LPDqw+XAYojkNyG8mkUM0tP+BPh25SI1lL3VoVek7bIB c8H45WChXZ2hyZgKejYYflHkBBDisRI= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=lT2x5n3p; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=lm6HnBSc; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=2SmKcDVB; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=1eJfHZ65; spf=pass (imf04.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744875682; a=rsa-sha256; cv=none; b=yVLRzNYiwH1FfA/V3HijjRq4wq83hFLGpRVKjIXFDHjCOaT+AvQ2TGaBDz6qR66omQ6gnO dvoBvgfJffUbDqhiJ5qnJcdNJ+6kL2pLPvjxuPQ2msu3KUlskl6gInCGyok4k6G3VmSYtn ntrOPp0elIz36rhoqyCw8izQMnWFCNY= Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id E27931F457; Thu, 17 Apr 2025 07:41:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1744875680; 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; bh=/RzgBhCz5ui1KZaKvUXf1dvF2W7M5uxN4m6PpQhkJT0=; b=lT2x5n3pNqoZoeLyn7Jd5q/WkTQ8Orwqwuav0POjjDu2UlEC1E0UCkn063qocsQwYqS9Dv jHvNIUZxZ1S7SSwTq7HUhNbW/5c41qjNCzyC6g4rIxWA26704TWogiu5zGKlgOSl0Z71ie 7CqEo3mlKxwgFIEqm/WAwz39JhkLqCw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1744875680; 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; bh=/RzgBhCz5ui1KZaKvUXf1dvF2W7M5uxN4m6PpQhkJT0=; b=lm6HnBScRgtkCADTSZVmzo0HyffK2d+0uE1IlC+QvfJsvGYDeCmBzQtE35LiNi1YG3/F/Y M5mGl4OHcJMh00Cw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1744875679; 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; bh=/RzgBhCz5ui1KZaKvUXf1dvF2W7M5uxN4m6PpQhkJT0=; b=2SmKcDVBXX+LvbDamUX38HBf1jVDsE2z7GyD21RkSsISgE5xAE2gzCIzWJbZLXZXtsoNp8 nDA+Bjh0UPTuYgxZUUMPzU22jbMevSQMJqgk/cNBYiUF/Rw7rG8FpYU1CTQwulTAiDc5Gq E0UiAgdE/3GAU2GQhjTl7l76bdtVzng= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1744875679; 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; bh=/RzgBhCz5ui1KZaKvUXf1dvF2W7M5uxN4m6PpQhkJT0=; b=1eJfHZ65xoW30Cf8sGhMPhws+ooN7TT4g9o7WJVqKiQYGMO+bYGDpywi0zp1RwujJIPRQK wFLDTjnEXwxvjyBg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D0624137CF; Thu, 17 Apr 2025 07:41:19 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id cJiWMp+wAGgoVAAAD6G6ig (envelope-from ); Thu, 17 Apr 2025 07:41:19 +0000 From: Vlastimil Babka To: Matthew Wilcox , linux-mm@kvack.org Cc: Harry Yoo , David Rientjes , Christoph Lameter , Andrew Morton , Vlastimil Babka Subject: [PATCH RFC] mm, slab: warn when increasing refcount on large kmalloc page Date: Thu, 17 Apr 2025 09:41:03 +0200 Message-ID: <20250417074102.4543-2-vbabka@suse.cz> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: C794440006 X-Stat-Signature: 638z35zmf3ki3drsgkjqoirroaessdfg X-HE-Tag: 1744875681-677638 X-HE-Meta: U2FsdGVkX18GxBTUxt7YBpzOTtCi3FxFqssuhUfwTfjjT1yCb/xiB7qpVRD9dfSW6cyvwzFBSztEvvwVVF/tYRl5W+ITcbQQfGyHrUhrMIqplEMSq1bdPXrc3R1nKbpPXgCpsR7ivakzEhJhC3tA7Ua1Lkd+aJqL4cK++4GLntbJGosooV0SefNieNRtse1H2fbPqAEnihPcDMvd8ih2xYBMuo2rR3ZdsoG+4ttz3Oq3ABr00y7xnps2HMILrnXtJzDa79tynmf37119XzMvefODLu1l09ysnGN++Q9657e6AeB/+aJt9cSsILv+9LYNWJMS5eGA1eEwCQIzJXYoD986M63czBAtaDOGa7Qv1kKrtyao8NXAye2NjMXlu76+ddvEFqy4OCFqXO/yDg9MvU9ADCQJ04UuIxwHUDHWWhAQIQT/YxGJAPWLZVyGEZBKpfpV9vXfs8e7t7iUhMrcU3Kj1PuMlWTE8gxwKxqVkNQbsvadAmtVBycHd1gyMtC8YqKOXTbHM/po5kvupVl5vTA0fZKuUF4685msHRtcwcvFB5k/GM+FO/JeIej+APOqeYDur7+Y9PGeMj59uFtpySVGH1fZ58QVM1VHTklRE4OSX5es01+v4pXObnMrxPstgnrqRS9sq+0O7KTBCOJ/h8kvvln9Z/m/dG2DKGxXE5bxPav9Dwqd70/SGO66l6vjUH0waUZEP4NtAU+5MKZHG+ZfHbw7UD115vlN/8uH9w4F5WSrqhrKIiHHCeWGvj7ADDuRMyVmlm9SYdu7ye0jdTXfb5OR6q75e+8ukwR+fF26lFvhB3QKYFB0WqP1TNOJSC1KEvJKiT4vjobAcLe7HLO6neFFfUEWwKDs0omqFg/ygL2D0yRGpkWOCUrmbxxYpbq/m8SIEiqdtkpGd5wEz2Tno1oE++dXOeUI9lLz1ub+2i22vh2tmKq9+/zn0yGeMRbZqzGDbQ7i8vZVLPu Y++7llqN 2xQaNO0Z6YSaiHhZxUUjtDE060QN0dRzZKPIF4y5QVjNp6Y5+NlJpwdPcDckte1YZrCEG2o2TQ9QDue//glWyiWWPNDJIwkK+ASmO2287g71Ny2/kDrIBzL6vlR3r4YyaUvhuuWPc1iwz/KDDwAWTGGpUt4HmrJXJ0OCqYrn4NodWJPPD2llIZb5loLA/W1SijGIQXeaNd5uf4ysnsSdKZYEIp+JR5uT7gYf3XaNYV94AoGw= 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: List-Subscribe: List-Unsubscribe: Since slab pages are now frozen, increasing refcount on a page containing a kmalloc() allocation is not possible anymore. Large kmalloc pages should ideally behave the same, because the decision for which allocation size to use them is the slab allocator's implementation detail, and sizes passed to kmalloc() might depend on e.g. user input. Because of some unexpected fallout in the slab pages case (see commit b9c0e49abfca ("mm: decline to manipulate the refcount on a slab page"), let's take a more cautious approach and before making large kmalloc pages actually frozen, start warning about code that would try to increase refcount on them. Signed-off-by: Vlastimil Babka --- I'd like to expose this via slab-next and see if there are any reports. If not for few weeks, maybe proceed immediately to freezing refcount and handling it in get_page/put_page exactly like folio_test_slab. Thoughts? include/linux/mm.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index b7f13f087954..664c67346484 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1532,6 +1532,7 @@ static inline void get_page(struct page *page) struct folio *folio = page_folio(page); if (WARN_ON_ONCE(folio_test_slab(folio))) return; + WARN_ON_ONCE(folio_test_large_kmalloc(folio)); folio_get(folio); } -- 2.49.0