All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] drivers: Simplify cleanup paths using __free
@ 2026-03-10 20:05 Sanjay Chitroda
  2026-03-10 20:05 ` [PATCH 1/7] staging: greybus: simplify cleanup " Sanjay Chitroda
                   ` (9 more replies)
  0 siblings, 10 replies; 23+ messages in thread
From: Sanjay Chitroda @ 2026-03-10 20:05 UTC (permalink / raw)
  To: jic23, m.tretter, mchehab, p.zabel, tiffany.lin, andrew-ct.chen,
	yunfei.dong, matthias.bgg, angelogioacchino.delregno, johan,
	elder, gregkh, pure.logic
  Cc: dlechner, nuno.sa, andy, kernel, kees, nabijaczleweli,
	marcelo.schmitt1, maudspierings, hverkuil+cisco, ribalda,
	straube.linux, dan.carpenter, lukagejak5, ethantidmore06,
	samasth.norway.ananda, karanja99erick, s9430939, tglx, mingo,
	sun.jian.kdev, weibu, linux-iio, linux-kernel, linux-media,
	linux-arm-kernel, linux-mediatek, greybus-dev, linux-staging,
	sanjayembeddedse, skhan

From: Sanjay Chitroda <sanjayembeddedse@gmail.com>

Hi all,

This patch series replaces manual cleanup and explicit kfree() calls with
the __free attribute from <linux/cleanup.h>. This modernizes the memory
management style and simplifies common error paths without altering any
functional behavior.

The __free attribute provides automatic scope-based cleanup, making
resource management clearer and reducing the chances of missing cleanup
on early returns.

No functional changes are intended in this series.

Testing:
  - Compiled with W=1
  - Build-tested on i86_64

Based on:
  <linux-v7.0-rc2>

Feel free to share your valuable input in context of the cleanup API.

Thanks,
Sanjay Chitroda

Sanjay Chitroda (7):
  staging: greybus: simplify cleanup using __free
  iio: ssp_sensors: simplify cleanup using __free
  iio: st_sensors: simplify cleanup using __free
  media: mediatek: vcodec: simplify cleanup using __free
  media: chips-media: coda: simplify cleanup using __free
  media: allegro: simplify cleanup using __free
  staging: rtl8723bs: simplify cleanup using __free

 drivers/iio/common/ssp_sensors/ssp_spi.c      |  9 +-
 .../iio/common/st_sensors/st_sensors_core.c   |  7 +-
 .../media/platform/allegro-dvt/allegro-core.c | 95 +++++--------------
 .../platform/chips-media/coda/coda-bit.c      |  4 +-
 .../platform/chips-media/coda/coda-jpeg.c     | 39 ++++----
 .../mediatek/vcodec/common/mtk_vcodec_dbgfs.c |  3 +-
 drivers/staging/greybus/camera.c              | 27 ++----
 drivers/staging/greybus/loopback.c            | 35 +++-----
 drivers/staging/greybus/raw.c                 |  6 +-
 .../staging/rtl8723bs/hal/rtl8723b_hal_init.c | 13 +--
 drivers/staging/rtl8723bs/hal/sdio_ops.c      | 37 ++------
 11 files changed, 78 insertions(+), 197 deletions(-)

-- 
2.34.1



^ permalink raw reply	[flat|nested] 23+ messages in thread
* Re: [PATCH 2/7] iio: ssp_sensors: simplify cleanup using __free
@ 2026-03-13  0:23 kernel test robot
  0 siblings, 0 replies; 23+ messages in thread
From: kernel test robot @ 2026-03-13  0:23 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310200513.2162018-3-sanjayembedded@gmail.com>
References: <20260310200513.2162018-3-sanjayembedded@gmail.com>
TO: Sanjay Chitroda <sanjayembeddedse@gmail.com>
TO: jic23@kernel.org
TO: m.tretter@pengutronix.de
TO: mchehab@kernel.org
TO: p.zabel@pengutronix.de
TO: tiffany.lin@mediatek.com
TO: andrew-ct.chen@mediatek.com
TO: yunfei.dong@mediatek.com
TO: matthias.bgg@gmail.com
TO: angelogioacchino.delregno@collabora.com
TO: johan@kernel.org
TO: elder@kernel.org
TO: gregkh@linuxfoundation.org
TO: pure.logic@nexus-software.ie
CC: dlechner@baylibre.com
CC: nuno.sa@analog.com
CC: andy@kernel.org
CC: kernel@pengutronix.de
CC: kees@kernel.org
CC: nabijaczleweli@nabijaczleweli.xyz
CC: marcelo.schmitt1@gmail.com
CC: maudspierings@gocontroll.com
CC: hverkuil+cisco@kernel.org
CC: ribalda@chromium.org
CC: straube.linux@gmail.com
CC: dan.carpenter@linaro.org
CC: lukagejak5@gmail.com
CC: ethantidmore06@gmail.com
CC: samasth.norway.ananda@oracle.com
CC: karanja99erick@gmail.com
CC: s9430939@naver.com

Hi Sanjay,

kernel test robot noticed the following build warnings:

[auto build test WARNING on staging/staging-linus]
[also build test WARNING on jic23-iio/togreg linuxtv-media-pending/master linus/master v7.0-rc3 next-20260311]
[cannot apply to staging/staging-testing staging/staging-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Sanjay-Chitroda/staging-greybus-simplify-cleanup-using-__free/20260311-041028
base:   staging/staging-linus
patch link:    https://lore.kernel.org/r/20260310200513.2162018-3-sanjayembedded%40gmail.com
patch subject: [PATCH 2/7] iio: ssp_sensors: simplify cleanup using __free
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-161-20260313 (https://download.01.org/0day-ci/archive/20260313/202603130821.Hr894lI1-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9004-gb810ac53

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603130821.Hr894lI1-lkp@intel.com/

smatch warnings:
drivers/iio/common/ssp_sensors/ssp_spi.c:420 ssp_irq_msg() warn: statement has no effect 'char * buffer'
drivers/iio/common/ssp_sensors/ssp_spi.c:434 ssp_irq_msg() warn: inconsistent indenting

vim +420 drivers/iio/common/ssp_sensors/ssp_spi.c

50dd64d57eee8a Karol Wrona     2015-01-28  330  
50dd64d57eee8a Karol Wrona     2015-01-28  331  /* threaded irq */
50dd64d57eee8a Karol Wrona     2015-01-28  332  int ssp_irq_msg(struct ssp_data *data)
50dd64d57eee8a Karol Wrona     2015-01-28  333  {
50dd64d57eee8a Karol Wrona     2015-01-28  334  	u8 msg_type;
50dd64d57eee8a Karol Wrona     2015-01-28  335  	int ret;
50dd64d57eee8a Karol Wrona     2015-01-28  336  	u16 length, msg_options;
a25d525c685021 Jakob Koschel   2022-04-01  337  	struct ssp_msg *msg = NULL, *iter, *n;
50dd64d57eee8a Karol Wrona     2015-01-28  338  
50dd64d57eee8a Karol Wrona     2015-01-28  339  	ret = spi_read(data->spi, data->header_buffer, SSP_HEADER_BUFFER_SIZE);
50dd64d57eee8a Karol Wrona     2015-01-28  340  	if (ret < 0) {
50dd64d57eee8a Karol Wrona     2015-01-28  341  		dev_err(SSP_DEV, "header read fail\n");
50dd64d57eee8a Karol Wrona     2015-01-28  342  		return ret;
50dd64d57eee8a Karol Wrona     2015-01-28  343  	}
50dd64d57eee8a Karol Wrona     2015-01-28  344  
50dd64d57eee8a Karol Wrona     2015-01-28  345  	length = le16_to_cpu(data->header_buffer[1]);
50dd64d57eee8a Karol Wrona     2015-01-28  346  	msg_options = le16_to_cpu(data->header_buffer[0]);
50dd64d57eee8a Karol Wrona     2015-01-28  347  
50dd64d57eee8a Karol Wrona     2015-01-28  348  	if (length == 0) {
50dd64d57eee8a Karol Wrona     2015-01-28  349  		dev_err(SSP_DEV, "length received from mcu is 0\n");
50dd64d57eee8a Karol Wrona     2015-01-28  350  		return -EINVAL;
50dd64d57eee8a Karol Wrona     2015-01-28  351  	}
50dd64d57eee8a Karol Wrona     2015-01-28  352  
50dd64d57eee8a Karol Wrona     2015-01-28  353  	msg_type = SSP_GET_MESSAGE_TYPE(msg_options);
50dd64d57eee8a Karol Wrona     2015-01-28  354  
50dd64d57eee8a Karol Wrona     2015-01-28  355  	switch (msg_type) {
50dd64d57eee8a Karol Wrona     2015-01-28  356  	case SSP_AP2HUB_READ:
50dd64d57eee8a Karol Wrona     2015-01-28  357  	case SSP_AP2HUB_WRITE:
50dd64d57eee8a Karol Wrona     2015-01-28  358  		/*
50dd64d57eee8a Karol Wrona     2015-01-28  359  		 * this is a small list, a few elements - the packets can be
50dd64d57eee8a Karol Wrona     2015-01-28  360  		 * received with no order
50dd64d57eee8a Karol Wrona     2015-01-28  361  		 */
50dd64d57eee8a Karol Wrona     2015-01-28  362  		mutex_lock(&data->pending_lock);
a25d525c685021 Jakob Koschel   2022-04-01  363  		list_for_each_entry_safe(iter, n, &data->pending_list, list) {
a25d525c685021 Jakob Koschel   2022-04-01  364  			if (iter->options == msg_options) {
a25d525c685021 Jakob Koschel   2022-04-01  365  				list_del(&iter->list);
a25d525c685021 Jakob Koschel   2022-04-01  366  				msg = iter;
50dd64d57eee8a Karol Wrona     2015-01-28  367  				break;
50dd64d57eee8a Karol Wrona     2015-01-28  368  			}
50dd64d57eee8a Karol Wrona     2015-01-28  369  		}
50dd64d57eee8a Karol Wrona     2015-01-28  370  
a25d525c685021 Jakob Koschel   2022-04-01  371  		if (!msg) {
50dd64d57eee8a Karol Wrona     2015-01-28  372  			/*
50dd64d57eee8a Karol Wrona     2015-01-28  373  			 * here can be implemented dead messages handling
50dd64d57eee8a Karol Wrona     2015-01-28  374  			 * but the slave should not send such ones - it is to
50dd64d57eee8a Karol Wrona     2015-01-28  375  			 * check but let's handle this
50dd64d57eee8a Karol Wrona     2015-01-28  376  			 */
6fc0e576e4fd07 Sanjay Chitroda 2026-03-11  377  			char *buffer __free(kfree) = kmalloc(length, GFP_KERNEL | GFP_DMA);
50dd64d57eee8a Karol Wrona     2015-01-28  378  			if (!buffer) {
50dd64d57eee8a Karol Wrona     2015-01-28  379  				ret = -ENOMEM;
50dd64d57eee8a Karol Wrona     2015-01-28  380  				goto _unlock;
50dd64d57eee8a Karol Wrona     2015-01-28  381  			}
50dd64d57eee8a Karol Wrona     2015-01-28  382  
50dd64d57eee8a Karol Wrona     2015-01-28  383  			/* got dead packet so it is always an error */
50dd64d57eee8a Karol Wrona     2015-01-28  384  			ret = spi_read(data->spi, buffer, length);
50dd64d57eee8a Karol Wrona     2015-01-28  385  			if (ret >= 0)
50dd64d57eee8a Karol Wrona     2015-01-28  386  				ret = -EPROTO;
50dd64d57eee8a Karol Wrona     2015-01-28  387  
50dd64d57eee8a Karol Wrona     2015-01-28  388  			dev_err(SSP_DEV, "No match error %x\n",
50dd64d57eee8a Karol Wrona     2015-01-28  389  				msg_options);
50dd64d57eee8a Karol Wrona     2015-01-28  390  
50dd64d57eee8a Karol Wrona     2015-01-28  391  			goto _unlock;
50dd64d57eee8a Karol Wrona     2015-01-28  392  		}
50dd64d57eee8a Karol Wrona     2015-01-28  393  
50dd64d57eee8a Karol Wrona     2015-01-28  394  		if (msg_type == SSP_AP2HUB_READ)
50dd64d57eee8a Karol Wrona     2015-01-28  395  			ret = spi_read(data->spi,
50dd64d57eee8a Karol Wrona     2015-01-28  396  				       &msg->buffer[SSP_HEADER_SIZE_ALIGNED],
50dd64d57eee8a Karol Wrona     2015-01-28  397  				       msg->length);
50dd64d57eee8a Karol Wrona     2015-01-28  398  
50dd64d57eee8a Karol Wrona     2015-01-28  399  		if (msg_type == SSP_AP2HUB_WRITE) {
50dd64d57eee8a Karol Wrona     2015-01-28  400  			ret = spi_write(data->spi,
50dd64d57eee8a Karol Wrona     2015-01-28  401  					&msg->buffer[SSP_HEADER_SIZE_ALIGNED],
50dd64d57eee8a Karol Wrona     2015-01-28  402  					msg->length);
50dd64d57eee8a Karol Wrona     2015-01-28  403  			if (msg_options & SSP_AP2HUB_RETURN) {
50dd64d57eee8a Karol Wrona     2015-01-28  404  				msg->options =
50dd64d57eee8a Karol Wrona     2015-01-28  405  					SSP_AP2HUB_READ | SSP_AP2HUB_RETURN;
50dd64d57eee8a Karol Wrona     2015-01-28  406  				msg->length = 1;
50dd64d57eee8a Karol Wrona     2015-01-28  407  
50dd64d57eee8a Karol Wrona     2015-01-28  408  				list_add_tail(&msg->list, &data->pending_list);
50dd64d57eee8a Karol Wrona     2015-01-28  409  				goto _unlock;
50dd64d57eee8a Karol Wrona     2015-01-28  410  			}
50dd64d57eee8a Karol Wrona     2015-01-28  411  		}
50dd64d57eee8a Karol Wrona     2015-01-28  412  
50dd64d57eee8a Karol Wrona     2015-01-28  413  		if (msg->done)
50dd64d57eee8a Karol Wrona     2015-01-28  414  			if (!completion_done(msg->done))
50dd64d57eee8a Karol Wrona     2015-01-28  415  				complete(msg->done);
50dd64d57eee8a Karol Wrona     2015-01-28  416  _unlock:
50dd64d57eee8a Karol Wrona     2015-01-28  417  		mutex_unlock(&data->pending_lock);
50dd64d57eee8a Karol Wrona     2015-01-28  418  		break;
50dd64d57eee8a Karol Wrona     2015-01-28  419  	case SSP_HUB2AP_WRITE:
6fc0e576e4fd07 Sanjay Chitroda 2026-03-11 @420  		char *buffer __free(kfree) = kzalloc(length, GFP_KERNEL | GFP_DMA);
50dd64d57eee8a Karol Wrona     2015-01-28  421  		if (!buffer)
50dd64d57eee8a Karol Wrona     2015-01-28  422  			return -ENOMEM;
50dd64d57eee8a Karol Wrona     2015-01-28  423  
50dd64d57eee8a Karol Wrona     2015-01-28  424  		ret = spi_read(data->spi, buffer, length);
50dd64d57eee8a Karol Wrona     2015-01-28  425  		if (ret < 0) {
50dd64d57eee8a Karol Wrona     2015-01-28  426  			dev_err(SSP_DEV, "spi read fail\n");
50dd64d57eee8a Karol Wrona     2015-01-28  427  			break;
50dd64d57eee8a Karol Wrona     2015-01-28  428  		}
50dd64d57eee8a Karol Wrona     2015-01-28  429  
50dd64d57eee8a Karol Wrona     2015-01-28  430  		ret = ssp_parse_dataframe(data, buffer, length);
50dd64d57eee8a Karol Wrona     2015-01-28  431  
50dd64d57eee8a Karol Wrona     2015-01-28  432  		break;
50dd64d57eee8a Karol Wrona     2015-01-28  433  
50dd64d57eee8a Karol Wrona     2015-01-28 @434  	default:
50dd64d57eee8a Karol Wrona     2015-01-28  435  		dev_err(SSP_DEV, "unknown msg type\n");
50dd64d57eee8a Karol Wrona     2015-01-28  436  		return -EPROTO;
50dd64d57eee8a Karol Wrona     2015-01-28  437  	}
50dd64d57eee8a Karol Wrona     2015-01-28  438  
50dd64d57eee8a Karol Wrona     2015-01-28  439  	return ret;
50dd64d57eee8a Karol Wrona     2015-01-28  440  }
50dd64d57eee8a Karol Wrona     2015-01-28  441  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2026-03-19 21:09 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-10 20:05 [PATCH 0/7] drivers: Simplify cleanup paths using __free Sanjay Chitroda
2026-03-10 20:05 ` [PATCH 1/7] staging: greybus: simplify cleanup " Sanjay Chitroda
2026-03-10 21:07   ` Andy Shevchenko
2026-03-11  6:51     ` Dan Carpenter
2026-03-11  7:06       ` Greg KH
2026-03-10 20:05 ` [PATCH 2/7] iio: ssp_sensors: " Sanjay Chitroda
2026-03-10 21:11   ` Andy Shevchenko
2026-03-10 20:05 ` [PATCH 3/7] iio: st_sensors: " Sanjay Chitroda
2026-03-11  0:04   ` David Lechner
2026-03-12 20:52   ` kernel test robot
2026-03-13  0:23   ` kernel test robot
2026-03-10 20:05 ` [PATCH 4/7] media: mediatek: vcodec: " Sanjay Chitroda
2026-03-19 21:08   ` Nicolas Dufresne
2026-03-10 20:05 ` [PATCH 5/7] media: chips-media: coda: " Sanjay Chitroda
2026-03-10 20:05 ` [PATCH 6/7] media: allegro: " Sanjay Chitroda
2026-03-10 20:05 ` [PATCH 7/7] staging: rtl8723bs: " Sanjay Chitroda
2026-03-10 21:42   ` Andrew Lunn
2026-03-11  6:45   ` Greg KH
2026-03-10 21:04 ` [PATCH 0/7] drivers: Simplify cleanup paths " Andy Shevchenko
2026-03-10 21:52 ` David Lechner
2026-03-11  1:57   ` Sanjay Chitroda
2026-03-11  5:42 ` Luka Gejak
  -- strict thread matches above, loose matches on Subject: below --
2026-03-13  0:23 [PATCH 2/7] iio: ssp_sensors: simplify cleanup " kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.