On 3/10/26 3:05 PM, Sanjay Chitroda wrote:
From: Sanjay Chitroda sanjayembeddedse@gmail.com
Replace manual cleanup logic with __free attribute from cleanup.h. This removes explicit kfree() calls and simplifies the error handling paths.
No functional change intended for kmalloc().
Signed-off-by: Sanjay Chitroda sanjayembeddedse@gmail.com
drivers/iio/common/st_sensors/st_sensors_core.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c index dac593be5695..f641b62e692b 100644 --- a/drivers/iio/common/st_sensors/st_sensors_core.c +++ b/drivers/iio/common/st_sensors/st_sensors_core.c @@ -501,14 +501,14 @@ static int st_sensors_read_axis_data(struct iio_dev *indio_dev, byte_for_channel = DIV_ROUND_UP(ch->scan_type.realbits + ch->scan_type.shift, 8);
- outdata = kmalloc(byte_for_channel, GFP_DMA | GFP_KERNEL);
- u8 *outdata __free(kfree) = kmalloc(byte_for_channel, GFP_DMA | GFP_KERNEL);
Even better would be to not alloc new memory at all.
We could probably reuse buffer_data from struct st_sensor_data for this.
if (!outdata) return -ENOMEM; err = regmap_bulk_read(sdata->regmap, ch->address, outdata, byte_for_channel); if (err < 0)
goto st_sensors_free_memory;
return err;if (byte_for_channel == 1) *data = (s8)*outdata; @@ -517,9 +517,6 @@ static int st_sensors_read_axis_data(struct iio_dev *indio_dev, else if (byte_for_channel == 3) *data = (s32)sign_extend32(get_unaligned_le24(outdata), 23); -st_sensors_free_memory:
- kfree(outdata);
- return err;
Should be able to change this to `return 0;` now.
}