From nobody Thu Sep 24 12:53:02 2026 Received: from mout.web.de (mout.web.de [217.72.192.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2DD39422533; Thu, 24 Sep 2026 07:17:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.72.192.78 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790234254; cv=none; b=YrfFsZsa3fvpuFcvTsM9A7M7CuMSZF74qTSZz3Cqfs2vhhfk0f926HFrIA1qaH6vjDTDGxUBlg7jbhjErkLtK7GeaKDukXspJdC9m/CLAD7EMta7uxGCgKGybmWC1ezgzh2V8uWS/aNfu1V0TZ9iauVwFhoxCmL6jC6fil1cYQs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790234254; c=relaxed/simple; bh=qXcS9oLAZKB6olEYpMZDyG1dstmpAwZ4Bxdqnh70MdI=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=mEEb6ojAt4OqpRBPkVW7zf43jB+A53GS3x/mgbYZ2gviUMoRp8iwzikXl518Li90/n54x9X8VKem8UgV1iD7If87+RaqPTWS+Kr2GTiZ+vQH9C2XVnVSECpzQh1p+Xtzv989eNwl90QCMo43ll6bahpoTMo7WbyvLkC/IT2tdPI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de; spf=pass smtp.mailfrom=web.de; dkim=pass (2048-bit key) header.d=web.de header.i=markus.elfring@web.de header.b=nsN52tMa; arc=none smtp.client-ip=217.72.192.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=web.de header.i=markus.elfring@web.de header.b="nsN52tMa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1790234248; x=1790839048; i=markus.elfring@web.de; bh=0t7YOYeSnpVlNJjWBSQP4LBSfpfHSi2gjM6NX4GmRgY=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:From:To: Cc:References:In-Reply-To:Content-Type:Content-Transfer-Encoding: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=nsN52tMaqaMF2SHl7YJScNZljYStNHREhoffIOt7bWhixaj0Qb4h+1DpcfDumw6A Dwb6qWvH7XShy5MU4t3g26+k00FGXLDSoNrcsU/DYN2YoZuSsnjkGDuhomSAaZ0ZK n+rfEXV/YgfmAeCBFC4PvRxi3ILaRPZ2edrYBCw5O2LChiJP/tDl4c3VPpDLfM9KQ LJBKa96rSkw7hdp7SG0rVQty9j15VtbnieQWx8YMRcSgGdi4JWIW33A10IGp/O2tU S1aiEn0/JQ1N87In68gtC7M+TzQQ56Dfd6R2Zvr9ukBn/w7RHWKFRObBO7w6XiMhz iai/GZoCHyxWCuKS+Q== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from client.hidden.invalid by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MMpCg-1xQ48C0nxs-00MjcY; Thu, 24 Sep 2026 09:17:28 +0200 Message-ID: <7862715c-da53-49ba-9fc1-6ca5c5d39dde@web.de> Date: Thu, 24 Sep 2026 09:17:26 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 1/2] soc: fsl: dpio: Use scope-based resource management in dpaa2_io_store_create() From: Markus Elfring To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, Christophe Leroy , Dan Carpenter , Ioana Ciornei , Roy Pledge Cc: LKML , kernel-janitors@vger.kernel.org, Peter Zijlstra References: <6c08552a-49e9-4ee0-b1ba-b27e17ade9c5@web.de> Content-Language: en-GB, de-DE In-Reply-To: <6c08552a-49e9-4ee0-b1ba-b27e17ade9c5@web.de> Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:+rMhZgZMkKvSzMOsFbb8Jp/BAOed9W/APFxOyOXc468CLAS1jnd BT1xLN0/XRLMDyWhZZUec4+7WHBJakilSSmnh8gItEsNNHCq8oyHqxm6bAIlWOJthd1nmjs ulcKPvXFWDu2jvCpj889joeOEn6TGVfAQs1n4lwOhoJ2xF+OXDSpzA4oDWp/HSSaCly0EXS CoSAn97bJ+oiGq4W1qKYA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Fc5/6CW58bY=;IFMcXgCiqasdJDdCJZO7rhjKwid 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 SpT4CFlQ0uLhXoPww== Content-Type: text/plain; charset="utf-8" From: Markus Elfring Date: Wed, 23 Sep 2026 15:48:11 +0200 Scope-based resource management became supported for some programming interfaces by contributions of Peter Zijlstra on 2023-05-26. See also the commit 54da6a0924311c7cf5015533991e44fb8eb12773 ("locking: Introduce __cleanup() based infrastructure"). * Move some source code from the implementation of the function =E2=80=9Cdpaa2_io_store_create=E2=80=9D to a new function. * Use the attribute =E2=80=9C__free(kfree)=E2=80=9D for the local variable = =E2=80=9Cret=E2=80=9D. * Omit two kfree() calls accordingly. * Replace a return statement by the macro call =E2=80=9Creturn_ptr(ret)=E2= =80=9D. Signed-off-by: Markus Elfring --- drivers/soc/fsl/dpio/dpio-service.c | 49 +++++++++++++++-------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/drivers/soc/fsl/dpio/dpio-service.c b/drivers/soc/fsl/dpio/dpi= o-service.c index 317ca50b0c2b..cb870aae30b4 100644 --- a/drivers/soc/fsl/dpio/dpio-service.c +++ b/drivers/soc/fsl/dpio/dpio-service.c @@ -4,6 +4,7 @@ * Copyright 2016-2019 NXP * */ +#include #include #include #include @@ -638,37 +639,20 @@ EXPORT_SYMBOL_GPL(dpaa2_io_service_acquire); * assist with parsing those results. */ =20 -/** - * dpaa2_io_store_create() - Create the dma memory storage for dequeue res= ult. - * @max_frames: the maximum number of dequeued result for frames, must be = <=3D 32. - * @dev: the device to allow mapping/unmapping the DMAable region. - * - * The size of the storage is "max_frames*sizeof(struct dpaa2_dq)". - * The 'dpaa2_io_store' returned is a DPIO service managed object. - * - * Return pointer to dpaa2_io_store struct for successfully created storage - * memory, or NULL on error. - */ -struct dpaa2_io_store *dpaa2_io_store_create(unsigned int max_frames, - struct device *dev) +static inline +struct dpaa2_io_store *dpaa2_io_store_create_impl(unsigned int max_frames,= struct device *dev) { - struct dpaa2_io_store *ret; size_t size; + struct dpaa2_io_store *ret __free(kfree) =3D kmalloc_obj(*ret); =20 - if (!max_frames || (max_frames > 32)) - return NULL; - - ret =3D kmalloc_obj(*ret); if (!ret) return NULL; =20 ret->max =3D max_frames; size =3D max_frames * sizeof(struct dpaa2_dq) + 64; ret->alloced_addr =3D kzalloc(size, GFP_KERNEL); - if (!ret->alloced_addr) { - kfree(ret); + if (!ret->alloced_addr) return NULL; - } =20 ret->vaddr =3D PTR_ALIGN(ret->alloced_addr, 64); ret->paddr =3D dma_map_single(dev, ret->vaddr, @@ -676,14 +660,33 @@ struct dpaa2_io_store *dpaa2_io_store_create(unsigned= int max_frames, DMA_FROM_DEVICE); if (dma_mapping_error(dev, ret->paddr)) { kfree(ret->alloced_addr); - kfree(ret); return NULL; } =20 ret->idx =3D 0; ret->dev =3D dev; =20 - return ret; + return_ptr(ret); +} + +/** + * dpaa2_io_store_create() - Create the dma memory storage for dequeue res= ult. + * @max_frames: the maximum number of dequeued result for frames, must be = <=3D 32. + * @dev: the device to allow mapping/unmapping the DMAable region. + * + * The size of the storage is "max_frames*sizeof(struct dpaa2_dq)". + * The 'dpaa2_io_store' returned is a DPIO service managed object. + * + * Return pointer to dpaa2_io_store struct for successfully created storage + * memory, or NULL on error. + */ +struct dpaa2_io_store *dpaa2_io_store_create(unsigned int max_frames, + struct device *dev) +{ + if (!max_frames || (max_frames > 32)) + return NULL; + + return dpaa2_io_store_create_impl(max_frames, dev); } EXPORT_SYMBOL_GPL(dpaa2_io_store_create); =20 --=20 2.55.0 From nobody Thu Sep 24 12:53:02 2026 Received: from mout.web.de (mout.web.de [212.227.17.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A53533C198; Thu, 24 Sep 2026 07:19:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790234396; cv=none; b=HnRenb3UaoY01pekhG/GW1WH9xBh3a2IBEB4UL/d7E2E4xoQPWS8ZjaGCLCJufJA5rSDJW5f97IwW95tc8oMTZnOCTkEgJhbygMM6Jv4zuvS+lzHoEBy4axdJYlR9Jh3bd/kdz6GSm7cBK+aPv/ztDkB8WOTEjxkvBoa28+NiB4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790234396; c=relaxed/simple; bh=P3mLKOXfCKL0ocyDgeDS20m1NH38zUMx8w/9z6D9cS4=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=Qa1lJeaPpkD7odji5YA4N/1QYLZGzNmdjXEaP7UOiLmiPxvDGVrRp5Om/eW0Nmqg4tSvwyH+WbZ4lf5WTHjpHvoF37oDsto697bfTmt3bTXbHc4kUh2e15HIflwc/rOLaPLSg0ihSkUnw0A3ZVSQWjxjuV/WtWnMhTZF7uu5wHs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de; spf=pass smtp.mailfrom=web.de; dkim=pass (2048-bit key) header.d=web.de header.i=markus.elfring@web.de header.b=f7SYQF6L; arc=none smtp.client-ip=212.227.17.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=web.de header.i=markus.elfring@web.de header.b="f7SYQF6L" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1790234364; x=1790839164; i=markus.elfring@web.de; bh=0XUgHBKl+8aNjpnuXAg3u8yjXgijKHdoDznpTqDalNM=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:From:To: Cc:References:In-Reply-To:Content-Type:Content-Transfer-Encoding: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=f7SYQF6Lo8dA1BKUG4ZeB//SXZeERtICUdzQLL2S436Fz9/Ucr95g/qxjW2UORd9 5B3yX7XAYEUH5tEByalbCbR//bgBn9zW5D60/j9wV+1v5JAgRuKQTGsuRqvdXY4BW gW0qKHWB28c9c4M1rlqllu2OB/VPvLYAzTYYKKXs29NL7ZkWhrD9rqNQ2qfEpuunK 2pRA9uTtCa0CU91g9vBu0Yu9jaFlIqQEJo1Npto6JzGGP49cXMVpFvKOUXKpm3npj YFVi+5ViWee+69fGAKRIUazTExvIZ4+DkSvo44pKlc0RFywF6sMO2Xpw5f1K46xR3 jSiZS7yuJkkdNdfmOQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from client.hidden.invalid by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MlsOP-1wSMYh3Qgd-00naCI; Thu, 24 Sep 2026 09:19:24 +0200 Message-ID: <1c14d2a2-895e-4acd-9469-e518d2dda1ad@web.de> Date: Thu, 24 Sep 2026 09:19:21 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 2/2] soc: fsl: dpio: Use scope-based resource management in dpaa2_io_create() From: Markus Elfring To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, Christophe Leroy , Dan Carpenter , Ioana Ciornei , Roy Pledge Cc: LKML , kernel-janitors@vger.kernel.org, Peter Zijlstra References: <6c08552a-49e9-4ee0-b1ba-b27e17ade9c5@web.de> Content-Language: en-GB, de-DE In-Reply-To: <6c08552a-49e9-4ee0-b1ba-b27e17ade9c5@web.de> Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:XaTPsWKm/lHJ41HrppNk3GbFDvoBtakRL2oGWScPPXpcbHwuA3w +Px3i5pSDiNpoaS9GgUElzEixmMCJC9nCQ7gi1+63mwewmowpEArngId4K1ohmvLBMGV7Um CGp0CT+y/lsOUaSSeUg92NDhv5R0wfo26occutN8RIl0psDLTONeol86JR1/qy2wHS/q6Wp zNgRbALL1RyeGyUj42F9g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ETiO0FwLrHE=;q5/FzNVVDjL/nOFSr9NehwmAQjq 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 Content-Type: text/plain; charset="utf-8" From: Markus Elfring Date: Thu, 24 Sep 2026 08:42:19 +0200 Scope-based resource management became supported for some programming interfaces by contributions of Peter Zijlstra on 2023-05-26. See also the commit 54da6a0924311c7cf5015533991e44fb8eb12773 ("locking: Introduce __cleanup() based infrastructure"). * Move some source code from the implementation of the function =E2=80=9Cdpaa2_io_create=E2=80=9D to a new function. * Use the attribute =E2=80=9C__free(kfree)=E2=80=9D for the local variable = =E2=80=9Cobj=E2=80=9D. * Omit two kfree() calls accordingly. * Replace a return statement by the macro call =E2=80=9Creturn_ptr(obj)=E2= =80=9D. Signed-off-by: Markus Elfring --- drivers/soc/fsl/dpio/dpio-service.c | 48 +++++++++++++++-------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/drivers/soc/fsl/dpio/dpio-service.c b/drivers/soc/fsl/dpio/dpi= o-service.c index cb870aae30b4..8085c42c74ce 100644 --- a/drivers/soc/fsl/dpio/dpio-service.c +++ b/drivers/soc/fsl/dpio/dpio-service.c @@ -121,31 +121,15 @@ static void dpaa2_io_dim_work(struct work_struct *w) dim->state =3D DIM_START_MEASURE; } =20 -/** - * dpaa2_io_create() - create a dpaa2_io object. - * @desc: the dpaa2_io descriptor - * @dev: the actual DPIO device - * - * Activates a "struct dpaa2_io" corresponding to the given config of an a= ctual - * DPIO object. - * - * Return a valid dpaa2_io object for success, or NULL for failure. - */ -struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc, - struct device *dev) +static inline +struct dpaa2_io *dpaa2_io_create_impl(const struct dpaa2_io_desc *desc, st= ruct device *dev) { - struct dpaa2_io *obj =3D kmalloc_obj(*obj); u32 qman_256_cycles_per_ns; + struct dpaa2_io *obj __free(kfree) =3D kmalloc_obj(*obj); =20 if (!obj) return NULL; =20 - /* check if CPU is out of range (-1 means any cpu) */ - if (desc->cpu !=3D DPAA2_IO_ANY_CPU && desc->cpu >=3D num_possible_cpus()= ) { - kfree(obj); - return NULL; - } - obj->dpio_desc =3D *desc; obj->swp_desc.cena_bar =3D obj->dpio_desc.regs_cena; obj->swp_desc.cinh_bar =3D obj->dpio_desc.regs_cinh; @@ -160,10 +144,8 @@ struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io= _desc *desc, obj->swp_desc.qman_256_cycles_per_ns =3D qman_256_cycles_per_ns; obj->swp =3D qbman_swp_init(&obj->swp_desc); =20 - if (!obj->swp) { - kfree(obj); + if (!obj->swp) return NULL; - } =20 INIT_LIST_HEAD(&obj->node); spin_lock_init(&obj->lock_mgmt_cmd); @@ -192,7 +174,27 @@ struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io= _desc *desc, obj->bytes =3D 0; obj->frames =3D 0; =20 - return obj; + return_ptr(obj); +} + +/** + * dpaa2_io_create() - create a dpaa2_io object. + * @desc: the dpaa2_io descriptor + * @dev: the actual DPIO device + * + * Activates a "struct dpaa2_io" corresponding to the given config of an a= ctual + * DPIO object. + * + * Return a valid dpaa2_io object for success, or NULL for failure. + */ +struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc, + struct device *dev) +{ + /* check if CPU is out of range (-1 means any cpu) */ + if (desc->cpu !=3D DPAA2_IO_ANY_CPU && desc->cpu >=3D num_possible_cpus()) + return NULL; + + return dpaa2_io_create_impl(desc, dev); } =20 /** --=20 2.55.0