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 B591CC25B78 for ; Wed, 5 Jun 2024 00:49:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 06DDE6B0098; Tue, 4 Jun 2024 20:49:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F38C66B009B; Tue, 4 Jun 2024 20:49:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB28F6B009C; Tue, 4 Jun 2024 20:49:28 -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 BB3F06B0098 for ; Tue, 4 Jun 2024 20:49:28 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 41EC3C0D5F for ; Wed, 5 Jun 2024 00:49:28 +0000 (UTC) X-FDA: 82195001616.30.4B8DD44 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf19.hostedemail.com (Postfix) with ESMTP id 08D7B1A0006 for ; Wed, 5 Jun 2024 00:49:25 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=MrP0zECe; spf=pass (imf19.hostedemail.com: domain of kees@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=kees@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717548566; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ucx0GPSA5HE0Wjd+vELpgu507AfJEN0NGInIEXksQ0w=; b=6oJPANNV9m3Nwdt77R9F+8p/554hbwP5yFwAyl//Tew4Vq5aqT/nqcL5yAPALRvo4bReLC kfFymIzfaEcKZ6dWMSfqN3DAdk3UL0xAdRuPzAWkKaK0tLMrt9ackgl/ZcJ3NDtes8tYhf n1El2KV88LUDOF+iBB80BRCpOKMqFAw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=MrP0zECe; spf=pass (imf19.hostedemail.com: domain of kees@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=kees@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717548566; a=rsa-sha256; cv=none; b=V8YIqUnYRatlIJJm+RdbCuIEtvNJjtu22+dSOZuqguc0m71OfMXnqlFMqbCg/PHY7LdHAP roJajXH6f3YlkPBPMx0/VhnMY0BRXcfwBq0lrV3QQ4n22GQlFXfufXIcIm/0YirwtIygDn 4Rl+0rRJ4Z1CPYR3tHDBuP6eUbV+S0Q= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id B6424CE1369; Wed, 5 Jun 2024 00:49:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 75901C2BBFC; Wed, 5 Jun 2024 00:49:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717548561; bh=CR+MCqNdStHiS0XLFyUo6nxzn/REAjoufJhdXky59KA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=MrP0zECelgyKwrURJfgOosDnxpIQQ5F5AK1p/r00kffo/Mgut/vP1+QwIgHoCtlYg VLgMqlp2VbEdHQnyVdddKLExUxaZQHSOObBXvsKo/O3dZf9aafy/JJCliTn3rqiDEr 58va7PeALemCo5HmhjUJcE32TjpUGEeYenj+LIjpv/LaaZTFxAfdc9HxSgg+Hgfm1p vVBe7wojcXtK3JR9K6E0CgkXP231fblNe/4/bvWy8+cvaeaEdcfMndba79P1/YpXUA 2p4T7ckStMD2as5t+zPkOF1g/TGq4y+CyxfKIShA2rwvn3BwTFsjDWdYNG75C9r0vT 7zTEzC8+/5VyQ== Date: Tue, 4 Jun 2024 17:49:20 -0700 From: Kees Cook To: Tycho Andersen Cc: Simon Horman , Vlastimil Babka , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , jvoisin , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, "GONG, Ruiqi" , Xiu Jianfeng , Suren Baghdasaryan , Kent Overstreet , Jann Horn , Matteo Rizzo , Thomas Graf , Herbert Xu , linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, netdev@vger.kernel.org Subject: Re: [PATCH v4 4/6] mm/slab: Introduce kmem_buckets_create() and family Message-ID: <202406041749.27CAE270@keescook> References: <20240531191304.it.853-kees@kernel.org> <20240531191458.987345-4-kees@kernel.org> <20240604150228.GS491852@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: 6ektyj9wzj9yyjy3ckuxffqrisoge9j7 X-Rspamd-Queue-Id: 08D7B1A0006 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1717548565-309773 X-HE-Meta: U2FsdGVkX19fRVekZZgiHIctKOtUof7BjtNR74ObDLUWh9+P9kdDC34U7Jybmun9UbWVNCkH1a5agO0cjqsg2/Hd8tNOK2KKmzVxgbv8c9pb2oGAN7njnjKXzRk7fZ+Y7UMSnXvaQMFOmI1ljTpQjz9QPd16Je/ihEpigCpTb42nttR4/9hOFSe0reLj3BW+tX8IjSKHqNrClangwX0SQ++ShSAL0iwi7Js25Z7Jn+MrHuJEmC0IQZBoppwLjRui/DfzrgcMCR9uA51WvfkH+Hebvbecj60Nb3/Kz6jCc4jTWgmcRl0nzOeG417fg3BNzuB6Ui8j6WxlWoFwM28EGHHwC2zUjRFWD1v4CN/x4ZkV/56MmKVfhxqQAlZf0XB8LqYcG04lTCDhbaaY3w4DL7c8RLxzMoh78ERYXqyyQNfxKjqk4/V9IqQUPGLXt0cJUJpOyPP2QSaEDPgha1al+0FLsH2Mr/dHtjuw5L47xfsMFkPoZPrQrbppDcaBLQxb+DuWTHKeemwNCcJvoUJu7+c/4sK4b15qWOGryI/EQbEsjZAq1k6ZJaGHaPsXyip7yJ5aW4wIupKTQgmEwWHLZ84gEgiEEDFEWufNOYgd2GrkrIFfkG57H/jmqk3I+5/xNNDgsp/78PrHDpbmqCIpp0374d0rS8XEbSPRhI58ovBP8UE7ow7roesTE+xGx4MhDgTxDlu/eJsQzNhCYfP9V4fwosVTTQ3eixDT2UHo4By+xTBEgzvZLR/kV+d2R1kWFSlxFDG7LuynBUwyjUxg26hDX5zsQaGAy2sGfOuRRbKKs71Y7qUWttgx8n/KtYNpKnyHAvt42yQIvVkXNR/NO5cpLsWPWFJJhPAEtE2cV+rdiqGA1vXmoWMgy8/g8rlH62YXV6PM0mNpzxwAB0JncQxqffZsY8Q+KO5H6d0SkgK5jafVPt9JHCaQh+/zg+YtAlS0V4bV7FQvoRZK70b Q8PSZnaJ SvME7bmgCLN4p6890hrCDCmVMsOKzjex77H69qd8hmh0AB3i9drGOlJk1/l1WHSUce6x9E78f5STHqE4JNgprh5V/OxtHpVpOcwjOPJVWsmJAPIqrqwzlfbvgvbviS8lAZYv4vsPeyDoZmS96PiZaRZY+AOYpUbaI0tW9c5TClaBYS2tdO6H7varaDLGJVIlA+xHfopzcxNy1NXHsQPSz276NsNurZHGy5eCCyQuhhU6vOpxxxT2g5OQz81qcdk4Sm1vS+UDdsl1NSq+Bza0w2ariy/pxGuJb1DL5T3cV8/1Owwr7upWuCvMZYQ== 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: On Tue, Jun 04, 2024 at 04:13:32PM -0600, Tycho Andersen wrote: > On Tue, Jun 04, 2024 at 04:02:28PM +0100, Simon Horman wrote: > > On Fri, May 31, 2024 at 12:14:56PM -0700, Kees Cook wrote: > > > + for (idx = 0; idx < ARRAY_SIZE(kmalloc_caches[KMALLOC_NORMAL]); idx++) { > > > + char *short_size, *cache_name; > > > + unsigned int cache_useroffset, cache_usersize; > > > + unsigned int size; > > > + > > > + if (!kmalloc_caches[KMALLOC_NORMAL][idx]) > > > + continue; > > > + > > > + size = kmalloc_caches[KMALLOC_NORMAL][idx]->object_size; > > > + if (!size) > > > + continue; > > > + > > > + short_size = strchr(kmalloc_caches[KMALLOC_NORMAL][idx]->name, '-'); > > > + if (WARN_ON(!short_size)) > > > + goto fail; > > > + > > > + cache_name = kasprintf(GFP_KERNEL, "%s-%s", name, short_size + 1); > > > + if (WARN_ON(!cache_name)) > > > + goto fail; > > > + > > > + if (useroffset >= size) { > > > + cache_useroffset = 0; > > > + cache_usersize = 0; > > > + } else { > > > + cache_useroffset = useroffset; > > > + cache_usersize = min(size - cache_useroffset, usersize); > > > + } > > > + (*b)[idx] = kmem_cache_create_usercopy(cache_name, size, > > > + align, flags, cache_useroffset, > > > + cache_usersize, ctor); > > > + kfree(cache_name); > > > + if (WARN_ON(!(*b)[idx])) > > > + goto fail; > > > + } > > > + > > > + return b; > > > + > > > +fail: > > > + for (idx = 0; idx < ARRAY_SIZE(kmalloc_caches[KMALLOC_NORMAL]); idx++) { > > > + if ((*b)[idx]) > > > + kmem_cache_destroy((*b)[idx]); > > > > nit: I don't think it is necessary to guard this with a check for NULL. > > Isn't it? What if a kasprintf() fails halfway through the loop? He means that kmem_cache_destroy() already checks for NULL. Quite right! void kmem_cache_destroy(struct kmem_cache *s) { int err = -EBUSY; bool rcu_set; if (unlikely(!s) || !kasan_check_byte(s)) return; -- Kees Cook