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 267BCC28B30 for ; Sun, 23 Mar 2025 10:26:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 80EE2280002; Sun, 23 Mar 2025 06:26:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7C020280001; Sun, 23 Mar 2025 06:26:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 687A0280002; Sun, 23 Mar 2025 06:26:09 -0400 (EDT) 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 49FF3280001 for ; Sun, 23 Mar 2025 06:26:09 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id B295C1CE425 for ; Sun, 23 Mar 2025 10:26:10 +0000 (UTC) X-FDA: 83252435700.25.E19418B Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by imf22.hostedemail.com (Postfix) with ESMTP id C4AFFC0003 for ; Sun, 23 Mar 2025 10:26:08 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bJ2wgL3V; spf=pass (imf22.hostedemail.com: domain of david.laight.linux@gmail.com designates 209.85.221.51 as permitted sender) smtp.mailfrom=david.laight.linux@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742725568; 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=cT+El6wDpvl0q+mSd1WIC6cyQoXjbajGs/lsGcnnTno=; b=muPswHBAwzJRU19GjmsYScp3w8igt+f4uomQX5yWSPI0+btlaF/s8+lsUBPF0dq1GMOUVS mwBRjrFOd/XkOVqEzDMEJpzsOX8J8QMNywVoPL3EIabst0W/JeAUX2KXKykmd5I4tpnPyu plhoojo28l2wSwBsPl2SQcOZsoVUfgY= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bJ2wgL3V; spf=pass (imf22.hostedemail.com: domain of david.laight.linux@gmail.com designates 209.85.221.51 as permitted sender) smtp.mailfrom=david.laight.linux@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742725568; a=rsa-sha256; cv=none; b=tOQQT/ZC1oW5FNvbjTGt317FsThOflUCTFaql8XYvl425vHgXVQjq9ivn58YwDg5lWfPkc O+tihbKrm2sLUaHWg4T8KttVwedDv5T8BKVfD62ZTCI7xX2tvSRmf7f+iG0sUnxRrtiKLK nfPKRdw54OCGce9Zf34fMlb9R5dkVcc= Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-391342fc148so2252156f8f.2 for ; Sun, 23 Mar 2025 03:26:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742725567; x=1743330367; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=cT+El6wDpvl0q+mSd1WIC6cyQoXjbajGs/lsGcnnTno=; b=bJ2wgL3VkCUex+sMjWPWXQrxJvYRKUzUdTOrDd+f9asBKOXviRfRW7+5yYU6j4aKaT CEhRrGiN0lzfUHXgQQWU2xLz1ArKMzZ8w2X3vT0JHRZEB9iXq7btkIi/WwD1ejRyjFm0 oH0Fr1TayLE4zIfjJZpMAedpZFA/H7t6mo5UAT2XMJrTvxRMGnt+Ph7/TquXety9Ib54 BTM4EJKG1diY3RWVccCkqhKW0h01i9v071kdTrXOwgAIpLthKxT59Mrde2o/VscsNS8T sWgGelXFBsIdh3gCmt+WPfqpAtx63bCMYnaohCo+1ox/VWZp2sUR8W1DdHG9oaZvdWKe pUsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742725567; x=1743330367; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cT+El6wDpvl0q+mSd1WIC6cyQoXjbajGs/lsGcnnTno=; b=YT2706hm9D/ys1V8skZsl/gqNqVjTTn81/3YZ4Cj1d96b74gcxddI6GV3gsZdJT4MB /Gaa+B+Tk5d0QX37oijslE7IZ9kHa9an70B7TM4t0iROeWiSC1v6UE1j18k/YdMfbKEW nMtPPAUzz9+7TPCX5xaB8bRniZLbK/MEqauFQbVMF+dDpIuwDL9Q/VQNUvPi4vXLrSVR C6wLQUvRMBl07uZ3tb+avGeOhtBvZElsRL5C2EnMKYI/YG2frmKB1XwqO3ailhAWvUNl QLRCxEfV+10+quuMiTk2vTN0Rcr2BpxusnJuMWFoyZcoP9WOmbTQ9R+DsX1iOan0NDUq wZMA== X-Forwarded-Encrypted: i=1; AJvYcCW4hFmHiCiq8BTeRNwfGCA1uREDMWZoCuk3m/svU2MVeUHs4gVzL0fRmHvLTXAGX90K9Tw0KCBXow==@kvack.org X-Gm-Message-State: AOJu0Yy2Rnz/mVjUiS0T5TeCBetkAiG3SblSIHw00shgWctl5BQvCXag wJTXB2oKVwUoNyYxid5eTezxTmrMRNVErpvKT4TT+m9sWEnZBedq X-Gm-Gg: ASbGncvptTMK6rSEZ4P1qTRFvOYifg3uMu3UzKfHHhjnB6LfSb7FQrKEj+OIq4bV0V7 WeVX2pmbiXhVtscusZdTgaCanJPP3aS8v2VOheguSqn+b/z5PZDf46IAB+L4PzuwVIIX6Vq5cPg rFYYtgsGmjxyZGBxY7NquwMxf1zVng10fo2XTZAKXLSWsVEKKsNvYIJT+Qxfrh0ppBa+6+RUOec p8aIZ8sscV7fk63TQgoC5PswYG0QrUh1uwFLQnIn2VtSa5dVHgo6dHqO/WHq4aMYz4iETEao87v XCyT+foqaZ21POZfwy1utTL96C8AZkVpo8XvBaz8fSV0AQllarEjkVKEEHfbbrtRvcnIZUDcZ2W vw8mxkx4= X-Google-Smtp-Source: AGHT+IHNBffE5W1DcvHicFO4RpE77hhDJuAALyW8zJfQAJNq2tW3CgjO9FW8TVxp1ssD8/P6xesKHA== X-Received: by 2002:a5d:5f46:0:b0:399:7918:541a with SMTP id ffacd0b85a97d-3997f8f5c13mr8866185f8f.10.1742725566950; Sun, 23 Mar 2025 03:26:06 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3997f9e6667sm7502555f8f.72.2025.03.23.03.26.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Mar 2025 03:26:05 -0700 (PDT) Date: Sun, 23 Mar 2025 10:26:04 +0000 From: David Laight To: Kees Cook Cc: Vlastimil Babka , Christoph Lameter , Miguel Ojeda , Nathan Chancellor , Marco Elver , Nick Desaulniers , Przemek Kitszel , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-hardening@vger.kernel.org Subject: Re: [PATCH 1/5] treewide: Replace kfree() casts with union members Message-ID: <20250323102604.5103c649@pumpkin> In-Reply-To: <20250321204105.1898507-1-kees@kernel.org> References: <20250321202620.work.175-kees@kernel.org> <20250321204105.1898507-1-kees@kernel.org> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: C4AFFC0003 X-Rspamd-Server: rspam05 X-Rspam-User: X-Stat-Signature: dtu7c9df9og57xp94uw7y617swruip94 X-HE-Tag: 1742725568-431513 X-HE-Meta: U2FsdGVkX1+Fh4Ic8L/CirCYxagIVLwgNjLXZi7T5UBVvQaPHw4ceWgUK6Cuvvz1vJuHSChD8G7q/3jwHq6nbo4uqF5ymq/iSuKBf2k+/HFmuhyVKtHijNi443upmtxruFYSTWvwd4dndDyDH5PQeCXSt0J98r25naMVx9YgVfZTyJfyKKULCQGMVRleeg+PDdeIOI/BDzmnRwcaaPfEo/IaZg1iWb5Nro/kDN5hiBo6MPxcG9PN4XFZPhMBrAoGEJ48IMrq0WnGGpMgPrKSa8OrB5hTgzX90edDPC1rn3rOHFzDY9KOBGOAf6bM5qAMj6y4dkPJ90t+8Up/GOezHJYxLdvccVEudiUhXeqFze6o91snmr4PNvD67tJBZdWJJNB2kp3h+TMtzx/fcxKEiV5njLumk6o51AK5kLH4wpy2bExVnVuYH7zCrCImc+H5ODLuF+90tVgmcHHpzvvDxSovfWuQUowuRvWqXdE8EBtwgRXtDtdomJDsLpWmh0dRCNpui2q8Nj2o0eTl6/fiUX6ZypN2OMZq+VTJYVZsbEGTaJMOi9apBOIajKf8B9NETfbR2W2E9hUSj2/KDPaSHNcbU7h3x/TNYaPdbLe8SVQJJWN58650y2pDjMX3fDSXeAHqaUjeFGoBxc4v2epsKlDvmDEunVDZgWKiRpyZfhsSq+GIpzdouMihwfhC2Newk9KlAE3g2GXPssdJ/Sr3q/x8qjPBPjxCKNtriEJnH92+LSeCMOg+K/GcWMyd3J4PlSXsTt5j7Fdevy5mFUqZeMqem1WNSkgmxC27S58fYOv0UL3kqFflQ/n5VydJDI4iaA+OotPvq0vievyZ0Txjh4Ov4nSkf4mWuC7P713fISXrfVNW8xTacmvqtKchbUco+bjlBiQFCXdIDy2JVTjRUC0LetI6uSqTccEpPyEfgndCq9GeEzgImc2H/bndiDM4kkfHMcMu5C96uNbNAsn 92Rf1xaK mvKlaxxlacGPakC3UoX6p+synHDHKo7fd8sEURu5w6OS5f6QI2iyuFHRO23/iNoMNsBwiqTRa7lSQOcYCPR4ud4TU/g== 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 Fri, 21 Mar 2025 13:40:57 -0700 Kees Cook wrote: > As a prerequisite to being able to optionally take the address of any > lvalues used in a call to kfree(), replace casts to the kfree() argument > with unions to include an actual pointer. Having different names for the argument to kfree() and other uses of the data is just brain-dead and will make reading code harder and writing code that access data after it is freed so much easier. David > > This is an example subset. There are another handful remaining: > > $ git grep '\bkfree((void \*)' > arch/mips/alchemy/common/dbdma.c: kfree((void *)ctp->cdb_membase); > arch/s390/kernel/crash_dump.c: kfree((void *)(unsigned long)addr); > drivers/crypto/atmel-sha204a.c: kfree((void *)i2c_priv->hwrng.priv); > drivers/infiniband/hw/cxgb4/mem.c: kfree((void *) (unsigned long) mhp->kva); > drivers/isdn/mISDN/fsm.c: kfree((void *) fsm->jumpmatrix); > drivers/misc/altera-stapl/altera.c: kfree((void *)vars[variable_id]); > drivers/misc/altera-stapl/altera.c: kfree((void *)vars[i]); > drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h: kfree((void *)x); \ > drivers/net/ethernet/qlogic/qed/qed_main.c: kfree((void *)cdev); > drivers/net/usb/cx82310_eth.c: kfree((void *)dev->partial_data); > drivers/net/usb/cx82310_eth.c: kfree((void *)dev->partial_data); > drivers/scsi/snic/snic_io.c: kfree((void *)rqi->sge_va); > drivers/scsi/snic/snic_io.c: kfree((void *)rqi->sge_va); > drivers/staging/rtl8723bs/os_dep/os_intfs.c: /* kfree((void *)padapter); */ > drivers/video/fbdev/grvga.c: kfree((void *)virtual_start); > drivers/video/fbdev/grvga.c: kfree((void *)info->screen_base); > drivers/xen/grant-table.c: kfree((void *)page_private(pages[i])); > net/ieee802154/nl802154.c: kfree((void *)cb->args[0]); > net/sched/em_ipset.c: kfree((void *) em->data); > net/sched/em_meta.c: kfree((void *) v->val); > > Signed-off-by: Kees Cook > --- > include/linux/netlink.h | 1 + > include/net/pkt_cls.h | 5 ++++- > net/sched/ematch.c | 2 +- > net/wireless/nl80211.c | 2 +- > 4 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/include/linux/netlink.h b/include/linux/netlink.h > index c3ae84a77e16..26eb9eea8a74 100644 > --- a/include/linux/netlink.h > +++ b/include/linux/netlink.h > @@ -295,6 +295,7 @@ struct netlink_callback { > bool strict_check; > union { > u8 ctx[NETLINK_CTX_SIZE]; > + void * ptr; > > /* args is deprecated. Cast a struct over ctx instead > * for proper type safety. > diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h > index c64fd896b1f9..4faf8d6eed1d 100644 > --- a/include/net/pkt_cls.h > +++ b/include/net/pkt_cls.h > @@ -403,7 +403,10 @@ struct tcf_ematch_ops; > */ > struct tcf_ematch { > struct tcf_ematch_ops * ops; > - unsigned long data; > + union { > + unsigned long data; > + void * ptr; > + }; > unsigned int datalen; > u16 matchid; > u16 flags; > diff --git a/net/sched/ematch.c b/net/sched/ematch.c > index 5c1235e6076a..f4b00e7aca6a 100644 > --- a/net/sched/ematch.c > +++ b/net/sched/ematch.c > @@ -411,7 +411,7 @@ void tcf_em_tree_destroy(struct tcf_ematch_tree *tree) > if (em->ops->destroy) > em->ops->destroy(em); > else if (!tcf_em_is_simple(em)) > - kfree((void *) em->data); > + kfree(em->ptr); > module_put(em->ops->owner); > } > } > diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c > index d7d3da0f6833..b5a3ae07d84c 100644 > --- a/net/wireless/nl80211.c > +++ b/net/wireless/nl80211.c > @@ -3270,7 +3270,7 @@ static int nl80211_dump_wiphy(struct sk_buff *skb, struct netlink_callback *cb) > > static int nl80211_dump_wiphy_done(struct netlink_callback *cb) > { > - kfree((void *)cb->args[0]); > + kfree(cb->ptr); > return 0; > } >