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 4CE8DC54E93 for ; Wed, 28 Aug 2024 10:32:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A67E86B0089; Wed, 28 Aug 2024 06:32:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A17B86B008A; Wed, 28 Aug 2024 06:32:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9065F6B008C; Wed, 28 Aug 2024 06:32:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 732096B0089 for ; Wed, 28 Aug 2024 06:32:56 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id EDBB9161DC8 for ; Wed, 28 Aug 2024 10:32:55 +0000 (UTC) X-FDA: 82501291110.12.A15EADF Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf08.hostedemail.com (Postfix) with ESMTP id 47262160005 for ; Wed, 28 Aug 2024 10:32:54 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rkDzbRiK; spf=pass (imf08.hostedemail.com: domain of alx@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=alx@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724841154; 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=W/E2z/AWfcpK4EMnatMuiQLoY6MvEqo3LJpCZzmYthM=; b=TjpkM32XKYL8MErFmInGMfrXyI6+lKfjhWBuQ47/vXPak/2i0+VHJOb++YJ7rJWFPK04v6 xTIzXnJlWuvPNI8AjK0UOQPVbqfXbNvhOHdkhk7TXU/qHhZi3nOzaDZHtdwc7RxjmrJEqL MytP69U6Tq+MYwgKE/chAs6HREFcZQI= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rkDzbRiK; spf=pass (imf08.hostedemail.com: domain of alx@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=alx@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724841154; a=rsa-sha256; cv=none; b=GZENAtekWm4sY38VoCdusTs9Gn9t6Cx3n4yAYsuEbY8up9ams+4w7bHlEcrwpge73T/rx4 hdOrw4Mb1w9z3vo7XAfgpg0Jy3n8n8UflHJo5his7HEwDd2Pz3nhMDGq+DuBzoPVPTLLex II/v1jg0VSMm36ZMvQr3WMu+1UoI/NU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 9A47AA43368; Wed, 28 Aug 2024 10:32:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D188C98EC2; Wed, 28 Aug 2024 10:32:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1724841173; bh=RAZiyHV0BW9WjoN1ECXpyLaENcTOjscCNA3CQ8WtSxg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=rkDzbRiKRlpXFmTZretmNOGGQgiy5srKWiQ0PRA0Tk0OZDkahXPqUd4Z9CUuUNqBo nYGxEXH3rwTgaamSsdtMI/ul4SgdEA45Mv5vcQ1jvnYqV8l67eUuZvJUhL0+SpOZLc CtR3OVviUoN03RcnZCIWKOV5FaDXwjOJQL/YcDD8pcTl4aTGvITIxAaQnIJVjL/dxH TEfdTsqMfwOnr6d/uYlOW+ygSijg0UhHigPd3keM8m3YwMUpZU+wsk3kDRnsPInXGr luK/ARDKw3REReStXJIPprYvfeemOfSSHFZLRQB2gkKHeej8wuLr70XMYRGbXclw6c riP3Ob2CZ89tw== Date: Wed, 28 Aug 2024 12:32:47 +0200 From: Alejandro Colomar To: Yafang Shao Cc: akpm@linux-foundation.org, torvalds@linux-foundation.org, justinstitt@google.com, ebiederm@xmission.com, alexei.starovoitov@gmail.com, rostedt@goodmis.org, catalin.marinas@arm.com, penguin-kernel@i-love.sakura.ne.jp, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, audit@vger.kernel.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org, bpf@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, Simon Horman , Matthew Wilcox Subject: Re: [PATCH v8 6/8] mm/util: Deduplicate code in {kstrdup,kstrndup,kmemdup_nul} Message-ID: References: <20240828030321.20688-1-laoar.shao@gmail.com> <20240828030321.20688-7-laoar.shao@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="fvf522dvf7ucivwn" Content-Disposition: inline In-Reply-To: <20240828030321.20688-7-laoar.shao@gmail.com> X-Rspam-User: X-Stat-Signature: qt6fjx5yprtujya6kmxgwr4zisegagf7 X-Rspamd-Queue-Id: 47262160005 X-Rspamd-Server: rspam11 X-HE-Tag: 1724841174-850084 X-HE-Meta: U2FsdGVkX193BYJh+at59mjae5erYeTZuqSwurrvih1oRbzZASB2TB6Q9co3A+3eClc2XL6kJznM4Iu0STQF8iuVu8WjsVHPcWrs1P/75OQE281snm5DnPhAmdA5ySHCdSZdcKkYKxOPkemGTQyw1Y4kqT5aiMWeeXS/XEmpjnGC/eqJKmEAJBlNpI7McBH3RrdQRRSM3/ALxdHWgCEiv46tYkYAmM3auaEF/5pHvhhxUeZPtfm692etCiJuzg2T8DB/F+JtR/m8q8s+QcXqWuzGlXFTNfqD3zhsl6Q4oRc5y/CcQVlKR9yzsH5f1mLKqPD05BhNpBKw+DbS8fk2jhp2xcFNioLDGbaxjxNJl35JT+uu1RBFnAxpTD7zoKNFESJID+0frsA+/elmXpd9Fg/EObshLeselqNysSViOLNN3rIWm3P0j1Tm1Dw+4hr06Q94Lq7KnePTgMZu1nLNYa4zq66i7mCb1yfj5rXPl48e/ZkaTZ9IQ7dvh97g4uSEkGA6OKMtGRb33W5OLXAwd32WeKl9DzZxpPb8S+wK6Zo5mLcCierf61gOn/uO2x+g0Yf3HJijTBcIQR0w/i7KdsbTdGeK/9NJZit7TMXMVini6lcWun5qY2BvtBLVaJz9+VTnmSASKocgr7uc8W0O2P2PRl10/uhfBpayBb3OgHzwYkXPPAZJr8ezfKsQPEX4ojW5s1lLXZaL1WoB5ArGfyHxvDdHTbTLzeP7uoXq4TUOo749KK1D/HsI7+2P8NuwmqWT/R+pAVCnPj0REDG61Nd2pERONn5ednGoraoaCXznLwyGZROZ6UTutcMK5bKCZN31d1EPbdg8jJeePvV9xM51qgrvaYnnOidsJaQVoo1V4t5oaY/aOQCvPaSIrcJM8aQIAl9KOhx/1yVX6Cbmn/j6WnUPaa+Ojk/JGxucYmEI2ErJDq+A/P9gnaKLAEOvkcL3tUg5nYpT9gT6P1n sppOUxwk HxGBD8tbJ6sKrlh76BYvP8Y8K0XrWRrTtzA5eVMSMiZT93/mY0JZjMZFV+mik4xIJBBLaHn7M+nor4jZnuIDpr/L4LdZO22WCOn8LXKWsq+J6j/pR9x83o8uuY88dC/yw9WxkfswKvxyTKtS485y5FJFdiTx/fGVAEpeCMNGuGE5Ugm41yxD2JIyji4CWDuWlYNHV30gtofUU4q0t+GpVfFMLY5DZT06wnsy6Xo2Y1lQSusRxrUoxSdurkzQnYxQmAVDzjDVxcyH86kqRTLjt51/6rXFxvPRPCEpw4TV/mo7hU/n2qJw3jW7MbtWjujYAqhUdlsTUb2NAfgUjjAOau94yiz+M/hj+RaxlZgKRRnowBh2eDgxlVy+MJEgaxzBNwWqmVqz9gpif6okOVbABb+Pb19F/Ta4xtw7P+rou6blMxQ0ZPoOZlDSWYRM0nbtM5Qk47s68ahG7MM9ba1G/rJJm2T5Rpt0JJ2bbsDsM/lm0dFcKooYpLB4Zq49unz224ej9/KCFasmTKPcSu9mKQNkPsUkgnc6ajYbjpMQ8NLFTq/5RMpw5HnPk38r+0Z8bVA13P1Bv47VZJP+ZwZdzjJoyrBjoZjG7W4PHPLmc4zI++saK8Wj621a5SAHvxVNz1KtALGtj4+Z3BJRYVwRlS2WoXXB2uBTfuB0+HwMzfGPPag8+hmjl1+snVAhv3A/u0IfNU1ViJPCiSD7i/9z6MW/sEObBKChdJhRS 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: --fvf522dvf7ucivwn Content-Type: text/plain; protected-headers=v1; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable From: Alejandro Colomar To: Yafang Shao Cc: akpm@linux-foundation.org, torvalds@linux-foundation.org, justinstitt@google.com, ebiederm@xmission.com, alexei.starovoitov@gmail.com, rostedt@goodmis.org, catalin.marinas@arm.com, penguin-kernel@i-love.sakura.ne.jp, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, audit@vger.kernel.org, linux-security-module@vger.kernel.org, selinux@vger.kernel.org, bpf@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, Simon Horman , Matthew Wilcox Subject: Re: [PATCH v8 6/8] mm/util: Deduplicate code in {kstrdup,kstrndup,kmemdup_nul} References: <20240828030321.20688-1-laoar.shao@gmail.com> <20240828030321.20688-7-laoar.shao@gmail.com> MIME-Version: 1.0 In-Reply-To: <20240828030321.20688-7-laoar.shao@gmail.com> On Wed, Aug 28, 2024 at 11:03:19AM GMT, Yafang Shao wrote: > These three functions follow the same pattern. To deduplicate the code, > let's introduce a common helper __kmemdup_nul(). >=20 > Suggested-by: Andrew Morton > Signed-off-by: Yafang Shao > Cc: Simon Horman > Cc: Matthew Wilcox > Cc: Alejandro Colomar > --- Reviewed-by: Alejandro Colomar Cheers, Alex > mm/util.c | 68 ++++++++++++++++++++++--------------------------------- > 1 file changed, 27 insertions(+), 41 deletions(-) >=20 > diff --git a/mm/util.c b/mm/util.c > index 9a77a347c385..42714fe13e24 100644 > --- a/mm/util.c > +++ b/mm/util.c > @@ -45,33 +45,41 @@ void kfree_const(const void *x) > EXPORT_SYMBOL(kfree_const); > =20 > /** > - * kstrdup - allocate space for and copy an existing string > - * @s: the string to duplicate > + * __kmemdup_nul - Create a NUL-terminated string from @s, which might b= e unterminated. > + * @s: The data to copy > + * @len: The size of the data, not including the NUL terminator > * @gfp: the GFP mask used in the kmalloc() call when allocating memory > * > - * Return: newly allocated copy of @s or %NULL in case of error > + * Return: newly allocated copy of @s with NUL-termination or %NULL in > + * case of error > */ > -noinline > -char *kstrdup(const char *s, gfp_t gfp) > +static __always_inline char *__kmemdup_nul(const char *s, size_t len, gf= p_t gfp) > { > - size_t len; > char *buf; > =20 > - if (!s) > + /* '+1' for the NUL terminator */ > + buf =3D kmalloc_track_caller(len + 1, gfp); > + if (!buf) > return NULL; > =20 > - len =3D strlen(s) + 1; > - buf =3D kmalloc_track_caller(len, gfp); > - if (buf) { > - memcpy(buf, s, len); > - /* During memcpy(), the string might be updated to a new value, > - * which could be longer than the string when strlen() is > - * called. Therefore, we need to add a NUL termimator. > - */ > - buf[len - 1] =3D '\0'; > - } > + memcpy(buf, s, len); > + /* Ensure the buf is always NUL-terminated, regardless of @s. */ > + buf[len] =3D '\0'; > return buf; > } > + > +/** > + * kstrdup - allocate space for and copy an existing string > + * @s: the string to duplicate > + * @gfp: the GFP mask used in the kmalloc() call when allocating memory > + * > + * Return: newly allocated copy of @s or %NULL in case of error > + */ > +noinline > +char *kstrdup(const char *s, gfp_t gfp) > +{ > + return s ? __kmemdup_nul(s, strlen(s), gfp) : NULL; > +} > EXPORT_SYMBOL(kstrdup); > =20 > /** > @@ -106,19 +114,7 @@ EXPORT_SYMBOL(kstrdup_const); > */ > char *kstrndup(const char *s, size_t max, gfp_t gfp) > { > - size_t len; > - char *buf; > - > - if (!s) > - return NULL; > - > - len =3D strnlen(s, max); > - buf =3D kmalloc_track_caller(len+1, gfp); > - if (buf) { > - memcpy(buf, s, len); > - buf[len] =3D '\0'; > - } > - return buf; > + return s ? __kmemdup_nul(s, strnlen(s, max), gfp) : NULL; > } > EXPORT_SYMBOL(kstrndup); > =20 > @@ -192,17 +188,7 @@ EXPORT_SYMBOL(kvmemdup); > */ > char *kmemdup_nul(const char *s, size_t len, gfp_t gfp) > { > - char *buf; > - > - if (!s) > - return NULL; > - > - buf =3D kmalloc_track_caller(len + 1, gfp); > - if (buf) { > - memcpy(buf, s, len); > - buf[len] =3D '\0'; > - } > - return buf; > + return s ? __kmemdup_nul(s, len, gfp) : NULL; > } > EXPORT_SYMBOL(kmemdup_nul); > =20 > --=20 > 2.43.5 >=20 --=20 --fvf522dvf7ucivwn Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE6jqH8KTroDDkXfJAnowa+77/2zIFAmbO/MkACgkQnowa+77/ 2zJ0rg/6A9w0pR/IBhWTYnFTKH8DiRQVQuPVpRuWDuTYTqrMqUR2OEtQ2gWcf10h TYl0N0mXcVo4vsCvdthueqs1ipa1bvOY3QN5aKpL5qXRq81NBe4JWd7ym/T8TU9Z EP6iBPimsQMYTPMNwgCK768HYPfu9lygO8CecifrGLoSZ5EDZ2GnyDz2xzCMZIq6 +KKTKJqyhww4ydIgm49fMi1bk59rI45fjg0GpVepcATmdR6bbPiE8yvdazxOJCT1 t6dAVGehLzNV1hGgDqiG8QS0GuqM1YMwEy6pWoi6zoHUjT8326bOP0UXuzB1NAxd M93w62xDoKpceGkLS22ajjH+0H7qgBtWyXBpd6QUVoqQ0lBWpnS7FfqMh9wJmd5L 55IaQKIPcaWDSBImqC/Mm2NYgH0DgcuF+JN/xaR6bhx+92rpzhE4/HM7Fll9OmuF NVDkfuQIuuuZ74Be1QOYCa4h+jeB6sksNlF18wmhH8OipYCzRVEjROxUSd4SSb2m bWd1Wpkx65jf1musgB9Q3oGofNPQvx9xnKYKk97o0n+UXyi7B7abukTl4oXKWbmB WisDpchUmGJAOm0uncet+rsM5Vod5zXbdf0aRXz5WPYAE1CDauPDzi9z2qKrYdHc gzn7xNZqVSRW8SsYctxEgro1zc1c8XxsHFiWJCQdjtwh9fOA1zU= =+sNM -----END PGP SIGNATURE----- --fvf522dvf7ucivwn--