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 DD559C6379F for ; Tue, 14 Feb 2023 10:33:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5FC0C6B0078; Tue, 14 Feb 2023 05:33:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 584186B007B; Tue, 14 Feb 2023 05:33:26 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3FE446B007D; Tue, 14 Feb 2023 05:33:26 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 2E4716B0078 for ; Tue, 14 Feb 2023 05:33:26 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B9D9CAB4AA for ; Tue, 14 Feb 2023 10:33:25 +0000 (UTC) X-FDA: 80465535570.09.30CD592 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf12.hostedemail.com (Postfix) with ESMTP id 916A940003 for ; Tue, 14 Feb 2023 10:33:23 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ZrVFCzpj; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="R/JJ/7wM"; spf=pass (imf12.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=1676370804; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BdyhHxCFHNdKTeaDsahoGwV349kyBnkEf6Wsf/DdUp4=; b=6E0qDSKPNJXrcRKYZZsTQaxUDk0tHYDbWdonpu/r81NR25iCvE2k/kU1efvaZE80sT20k9 Pjp5g3BD7ZUCwaB0udaMUpZeXflfZ28lRdfIR3bS4hAVKKK5AsJG2T3V9fSSeXqMg6win/ Mzk93KwTMHVwTsdDffOkkSgjRrXmZ0w= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ZrVFCzpj; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="R/JJ/7wM"; spf=pass (imf12.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=1676370804; a=rsa-sha256; cv=none; b=wr1nFaqmZM8TOXHd/85WccPwEwyn6aJftp0IOR6lfTkzbQJpvrE38HkzOJN5HFi/iU9ClI a9onQlpKebFJaOGlDS7RvgdliIkBLsoFnkXy0DmYBsJ0SccHheVCw4jqDwMAL/keq+8944 Ld3CGIfNtmhnpjhUlVGNlvy1gmwdIKc= 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 DC8931FD69; Tue, 14 Feb 2023 10:33:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1676370801; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BdyhHxCFHNdKTeaDsahoGwV349kyBnkEf6Wsf/DdUp4=; b=ZrVFCzpjTL3J8gSulNtXS2mh2kgcT7WHAq5LHTfrtNFkFq6wfrp4mp8yGLa3udbidoE1RF RLKG1iaxVuabrCswm+gfKKB9dH5fqD4Pg064zexbQ0faHqbrSt+1W2q0gkyP8flbaJR6KM ImqS+TtNKaaYbw7Pnf7nXP4jfe4qUGM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1676370801; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BdyhHxCFHNdKTeaDsahoGwV349kyBnkEf6Wsf/DdUp4=; b=R/JJ/7wMTu3FKN0WvMLDKTcggvyH1bA7cXDHvmflWbFa/njAGf9534r0yNPfUL19yJGapw WxmAlrpDpvL135AA== 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 B4EBC138E3; Tue, 14 Feb 2023 10:33:21 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id EpBoK3Fj62MjZAAAMHmgww (envelope-from ); Tue, 14 Feb 2023 10:33:21 +0000 Message-ID: Date: Tue, 14 Feb 2023 11:33:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH] mm/slab: always use cache from obj Content-Language: en-US To: "Jiazi.Li" , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: "Jiazi.Li" , linux-mm@kvack.org, Kees Cook , Kernel Hardening References: <20230214101949.7461-1-jiazi.li@transsion.com> From: Vlastimil Babka In-Reply-To: <20230214101949.7461-1-jiazi.li@transsion.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: d48u8prci7bemfsdjsynxj8ikjhhqmrp X-Rspam-User: X-Rspamd-Queue-Id: 916A940003 X-Rspamd-Server: rspam06 X-HE-Tag: 1676370803-670087 X-HE-Meta: U2FsdGVkX19S3p70Y3Z+CDwL7DS2F0tNv2+50X5gwLoVnBWsKjHxCRmlDL7CmZxDg408AxmeXnDd1LVJFso5OfE0AmwuMnxvq0yNsAbPv8k09C4sFxALkJghAy94AGSpyH71QDgbO1OaKyUxlmAQsL0wvmI6C2qF8AALqCfx7cpUX1TVSjiCPvuo9ikDD5UtgdbZ7Wj/SrfqPnUYsltKhoa+b1QfTQyCeYbPqjg5YVT3vrI+W1/eFZk5vUmpdGy4oof4/gGnjjsKajRsQdmb9BFWKV76ckoiPX6ViI2RdAo4k8fL/fpE2ZQVi+uwiRwiWgHkUyBLkuSx6suGNZ0AmESNx2tBh6IIYHoXm7ZhTH5884JI06lpWklvRtpT9qxwIHD4qwVtj4Y9nFJylP5HwUppJYMkaHq2SLKMJtiSCIFaFFjwxVWPkz1d35Kbft4+lL74I66OzdUU5UPImuMkv2xjpHp1E0Tm7ozJHc3kjI/RfAKowYjoamdzqaHr1yIPs4S2oD7H0AW/7Xw/RjD7DK0uJd2lBXAJGetkS0oFL+yTZc3tqkH0D02Vw8R4NkMqr4n+E5Ysaqg+6LN2Ofi0G0SuYnaP4KDIOYUIj5DwfK8Iy+v1TvcGXhh1qZ5BYszF4BVmC80TGNzEXUBj1mxz2brnXJJ6gb6uVqMj8xAgnWPaEQ4v2kJ6MrxSp/rKtQ99Qgbn/KmWuM2GpVdwO74cXNDnrV+zi0QkAhRtGU9dq7L6IdGxAjchjQ17GnPM7qX4w1maklLeSEWlgsy4nDBGPE6xCacWx8+iQYFWFiKOV96xHb8LA3V+rseyfDv4wjcaVdlGd89+deJXyduKe8yis24cu1ba9czfcYgYEoYzYdpSQEMOIwl7Aw4R6ImyeODxy8BfxcJrxwVg8odr3QnFmTbJE5dVOSkbP7qd5R74iJSWCWnqstvgqMGMLYJwsbU3I3u/elGxwgc4qW12A0b 9PwBNXG9 5KoBDIOkqM1vQpgedVqDp1DedW41YPmE+lEyWGurmbCDJFDYCUkXwkt/rzQsJOtzJzkl/mZg++AyZrYLUK+lrZNUMDuSyR2YtB0zjwR/DMOgM2aUJw6fUQoNT7irZK0PeFsz1zbJBCQvokQmvUudp7fFe65TKFv4xzLPVoqTC66IewFY+cUWBF+ZZlOiPa51CoBjQrAOev+oYna13VYKYkJ/eT7hP36leTH6aRkYtTAq/gE2YYd6+e1l42z/dRfGW8qv3/cHbX0KD060AxVdI329k99tG6n6u/dm9A9QkOeP3DsIi645bzexd8fW8i/Kp19dAmIje9dnCVoSNS3NVQw5CJQ== 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: On 2/14/23 11:19, Jiazi.Li wrote: > If free obj to a wrong cache, in addition random, different offset > and object_size will also cause problems: > 1. The offset of a cache with a ctor is not zero, free an object from > this cache to cache with offset zero, will write next freepointer to > wrong location, resulting in confusion of freelist. Kernels hardened against freelist corruption will enable CONFIG_SLAB_FREELIST_HARDENED, so that's already covered, no? > 2. If wrong cache want init on free, and cache->object_size is large > than obj size, which may lead to overwrite issue. In general, being defensive against usage errors is part of either hardening or debugging, which is what the existing code takes into account. > Compared with adding a lot of if-else, it may be better to use obj's > cache directly. > > Signed-off-by: Jiazi.Li > --- > mm/slab.h | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/mm/slab.h b/mm/slab.h > index 63fb4c00d529..ed39b2e4f27b 100644 > --- a/mm/slab.h > +++ b/mm/slab.h > @@ -670,10 +670,6 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) > { > struct kmem_cache *cachep; > > - if (!IS_ENABLED(CONFIG_SLAB_FREELIST_HARDENED) && > - !kmem_cache_debug_flags(s, SLAB_CONSISTENCY_CHECKS)) > - return s; > - > cachep = virt_to_cache(x); > if (WARN(cachep && cachep != s, > "%s: Wrong slab cache. %s but object is from %s\n",