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 88F44C4345F for ; Tue, 30 Apr 2024 12:50:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A3576B0095; Tue, 30 Apr 2024 08:50:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 054B56B0096; Tue, 30 Apr 2024 08:50:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E5D026B0098; Tue, 30 Apr 2024 08:50:49 -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 C97446B0095 for ; Tue, 30 Apr 2024 08:50:49 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 58608C0768 for ; Tue, 30 Apr 2024 12:50:49 +0000 (UTC) X-FDA: 82066182618.11.6815B15 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by imf13.hostedemail.com (Postfix) with ESMTP id 613062001A for ; Tue, 30 Apr 2024 12:50:47 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=uxlsaW4V; spf=pass (imf13.hostedemail.com: domain of dan.carpenter@linaro.org designates 209.85.218.50 as permitted sender) smtp.mailfrom=dan.carpenter@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714481447; 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=PiyLrbcdCVqy4NleK3Wr91InaBV+aCWg5BCtmdVPUws=; b=0JLhrjuUE+XffPMJvF5YgvWg1DTo/yxKK8/kAi1eSlS1nxRVmdMrURbT7yeIdZo9vRTBpJ JncxUy3+gCXNpvN+o9zIwiNA2fpG2vnsxNTs8Fbjox70Vz0yhxaz+ShOIjjbc9MWlEpHUV 1nVx45Ygb7wWWArQImnv1WUZ4N3WioY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714481447; a=rsa-sha256; cv=none; b=6QqguIMvZB1Jnb6hm/ZXC0+ze6GJorFn96HHNHwQrHJOq+U8qvrI8mzHMnlNytrNzAeE6g Lf7edkf9TifYCWnn8FfTkc5bQqJ2LrQTq2S8K4VyxWP6SveBNI1aUJ7AZmxSfgWrjO5+Rw rz9mD/8+LJG+js+l9f7p++Votw8tuvw= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=uxlsaW4V; spf=pass (imf13.hostedemail.com: domain of dan.carpenter@linaro.org designates 209.85.218.50 as permitted sender) smtp.mailfrom=dan.carpenter@linaro.org; dmarc=pass (policy=none) header.from=linaro.org Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a55bf737cecso669189566b.0 for ; Tue, 30 Apr 2024 05:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714481446; x=1715086246; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=PiyLrbcdCVqy4NleK3Wr91InaBV+aCWg5BCtmdVPUws=; b=uxlsaW4VOxBTncjZngS1q2rEbvI/farELdAVczVyN8k7fTfXiKlfu+5wQPVtImDiPV VC0woE+58hPyHJH8Gu6cRA2I1Mqb1Zz8IoF4nejG9u/zZu7x/zrWd3CanyTnS/JFW760 c59ZeC/+NOSQE9SQ0TPJJqtXlOWW5GYrs4XTpqqSHAXadNeo7nCoYb66NuIyTHWtwIq4 YIolZKq4xPxqj5o43DODyPW3L5V5EU7pxL5msOadrw0Ss7X6T23DK/egMoO+Ei8D/J5g OMCpTwRz7vzU4x+WVx7QGHs6gc7782ONUBT/HmxitkeaUMFs/GI9xuDbHB+2IAj14FHh 4RTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714481446; x=1715086246; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=PiyLrbcdCVqy4NleK3Wr91InaBV+aCWg5BCtmdVPUws=; b=X50WFi6as341y6Scc1sTfcgZPLVi3V7wvRtJILrEROVFhJtpDvLmMIpqJV0IXjHhQR 9gVxwqjaLhx4OABPvplvL3Wgx55u+HHKTcYcm6ttWcfrNnqtBUZIv9wtPvIPLAoJYwYq +wTKkn4tDeypqeT4WQNXMkAY+j2tBJmWEaTkNZyE2q0RI3MPFGxpSa7WB8m05wEU4SI3 Uf81nvv2SB5XEDCA0xN3W7qfrhJ5q/7qjIhbJaqOKX8+h0+z/b/64cqRaimsT/fHulKA z1plTHDsguZBLZ5WnCuyza+VDHYLP0bevRGGjcpSLCllzrhKvRfFtsAr0jRF1OzNSNBj OAFQ== X-Forwarded-Encrypted: i=1; AJvYcCUh2W+hEmULVtSGqWGHmH53RWYB+BZfoqnbws/wTNc4yyszIUd77z8TrMoe9yVZ3ZQb1KonoDyyARDyAX2wo1qgEJI= X-Gm-Message-State: AOJu0YxEGFkg8/UIE8vqL3iQDZ60NZelLpzhmI3E1yM8hg0asO4YEyTZ 6Et9g/wV6EIriFaxl9Z57vAKScxXuXEzMoChcXGKNsmxZVmykA1zIuXFGbJDreM= X-Google-Smtp-Source: AGHT+IGXHVEzHP4YowE90reqc5tdTfM/OhXF9If/ZUuwRokjnwdtEkX7kyOqr5GK1QsclcwOixY0YA== X-Received: by 2002:a17:906:dfc5:b0:a58:bd1b:a05f with SMTP id jt5-20020a170906dfc500b00a58bd1ba05fmr9322033ejc.68.1714481445375; Tue, 30 Apr 2024 05:50:45 -0700 (PDT) Received: from localhost ([102.222.70.76]) by smtp.gmail.com with ESMTPSA id d18-20020a1709064c5200b00a58aff25d77sm6340151ejw.193.2024.04.30.05.50.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Apr 2024 05:50:44 -0700 (PDT) Date: Tue, 30 Apr 2024 15:50:40 +0300 From: Dan Carpenter To: Vlastimil Babka Cc: Matthew Wilcox , Christoph Lameter , Peter Zijlstra , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Bartosz Golaszewski , "Lameter, Christopher" Subject: Re: [PATCH] mm/slab: make __free(kfree) accept error pointers Message-ID: <49e072da-3d2c-4246-8b7e-7f25513afde3@moroto.mountain> References: <285fee25-b447-47a1-9e00-3deb8f9af53e@moroto.mountain> <6a10be7d-b556-42a9-852c-b6ed821ec41e@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6a10be7d-b556-42a9-852c-b6ed821ec41e@suse.cz> X-Rspam-User: X-Stat-Signature: t97aor474z6e1hy8zsxkhcm714gu8f1i X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 613062001A X-HE-Tag: 1714481447-915469 X-HE-Meta: U2FsdGVkX1/eFfWak9LTD+4Jz62VJQKaukPw0TbJG/3FhsEhCEmpSW3OtckT1hdmbHwnbrbNinEwYRNl2r+8fVYFi4cvtl1C/6u7+s//HSafaWjWimRS01xDFAFc2uW3PUcbIGWQsJxJdtZO1AUZmwWcJYzuf62k0s3khtS1NfwcjmsuaFDWMyVZpjn9dKzsN5XR7GoNg1UG+BS0htXukgRPfxVjB8mvAcfxm9um+Ls9XVrxnAhL2Aw/Hmnmfmxh3gfocLcZwY8RjV3xjV642y5Ys/6CfLRqhiDU/z/+Yj9jtSQIc9Dp59xfdz/E8RjiAJ+qhlRAbFMOdkh8zO9QI6Jvz02oaeniyFzO1m4V6DyLWNSqkmfR79IhDAJfUUQoats67G+x7eAlzv5Ubeo+y8vIFxtau+ssAU9fXM66OEkss9tCkC+EdNeBZglKcsTjugs0Qn37iDbGNnHqzZPvUEr462WNyeOY63dRjCQgnNFgS4O5HUPA7J3Y37JRgWd7E8E1y9CaSwCMKMRF3yBBQqEYKXpSU2bqsOJ0AdjBnd8U3b0MRm5V0SF1BIjfgrJ6rWAH4elwviEXq4C1f6a99nOB9ZsTJVzqWKF7v7VyqhBOz6CB5fXSd6CZ9eM+HO5sFx3vZz/LScYQQMZVOLDcZiJ/7x1s+CiAe6xiO7GCG25YEaKcVnFD9mGNraHcz0D/Lh3uiHDkEv6G6HbFi1TvQODCjW8Er7m49Xw1dB8ox3Yk1ByfyaHicReao9V6l1cz1C8NAjJkmVp5vqkhTRMsUiKm6fMfCKvFOxsHtVCtR09u8g3c4imKCjbrtXVE4i6/iox2U5uRLS9UoRv64/YEYfkx2uI+KpZcC1+h3TD0Hld8O+G+4kFaJcyhIKulJfmtqxy3h3q9JjqKjUWTr8oqWULsQMBO1LLTckUtQs0cQ8DhwHcC2yTTOfzmg7MNlKRwP6I0v5vl7wSrSQOYy90 UKvbuL1b uTHeUR5TPm3b1DWr862EgPkAUVo8yPhNd3BMVJNZQKUp16YBHBWKu0zIMxLtP/mubQjtZ0+58ftDDFgGKN3BtwP3ysmEHMMLfLTFemVTyD3kfd5+hgobw3UZ38VvKMRTRCJuMjzkXfNbfkp0RbkRcqG1AHnK5gNPjx6M18w3QEDsUSl77QPa4xXXJQwd2cpeGa4WhVNPgJPz6PpmAPdtTId6tY7NFt7iavF9+Kl3kuMS0RMHXIcCPCW297lbDBGo9+Qfdz90KZCjqarY0BbOX8AFtE9aUgXGxXOcx47tK+1PUG6SchA4ntWX6Fqw4gA5HUI4/8rqVhFPf3o9ThjtxEv9Z/oiyRGjVbFKx5joXKricAez+w+lDQb32lI9ZV2ExaGTRJRem0vUGkdRCxZ/Wx4BuUl/xW1rvWffJ3+RFrwdgJC0YhlhzsZSjISLUT80AdKYDJBoahaH+8NF/Kkl2qRA8qa8oB6ToCbJtgzq03UGGTRd5fcauPUP/R+oq4aaFigfumD0cMxMFVhrUNOKzvhUUoLNYAXT9514E 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, Apr 30, 2024 at 02:09:10PM +0200, Vlastimil Babka wrote: > On 4/29/24 5:03 AM, Matthew Wilcox wrote: > > On Sun, Apr 28, 2024 at 05:26:44PM +0300, Dan Carpenter wrote: > >> Currently, if an automatically freed allocation is an error pointer that > >> will lead to a crash. An example of this is in wm831x_gpio_dbg_show(). > >> > >> 171 char *label __free(kfree) = gpiochip_dup_line_label(chip, i); > >> 172 if (IS_ERR(label)) { > >> 173 dev_err(wm831x->dev, "Failed to duplicate label\n"); > >> 174 continue; > >> 175 } > >> > >> The auto clean up function should check for error pointers as well, > >> otherwise we're going to keep hitting issues like this. > >> > >> Fixes: 54da6a092431 ("locking: Introduce __cleanup() based infrastructure") > >> Cc: > >> Signed-off-by: Dan Carpenter > >> --- > >> Obviously, the fixes tag isn't very fair but it will tell the -stable > >> tools how far to backport this. > >> > >> include/linux/slab.h | 4 ++-- > >> 1 files changed, 2 insertions(+), 2 deletions(-) > >> > >> diff --git a/include/linux/slab.h b/include/linux/slab.h > >> index 4cc37ef22aae..5f5766219375 100644 > >> --- a/include/linux/slab.h > >> +++ b/include/linux/slab.h > >> @@ -279,7 +279,7 @@ void kfree(const void *objp); > >> void kfree_sensitive(const void *objp); > >> size_t __ksize(const void *objp); > >> > >> -DEFINE_FREE(kfree, void *, if (_T) kfree(_T)) > >> +DEFINE_FREE(kfree, void *, if (!IS_ERR_OR_NULL(_T)) kfree(_T)) > > > > Wait, why do we check 'if (_T)' at all? kfree() already handles NULL > > pointers just fine. I wouldn't be averse to making it handle error > > pointers either. > > Making kfree() handle IS_ERR() is perhaps a discussion for something else > than a stable fix. But Christoph has a point that kfree() checks > ZERO_OR_NULL_PTR. Here we check IS_ERR_OR_NULL. How about we checked only > IS_ERR here so it makes some sense? > I wondered why Peter Z wrote it like this as well... I think he did it so the compiler can figure out which calls to kfree() are unnecessary and remove them. These functions are inline and kfree() is not. I haven't measured to see if it actually results in a space savings but the theory is sound. regards, dan carpenter