Skip to content

Commit 70c9774

Browse files
Yang Yingliangjic23
authored andcommitted
iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove
When ACPI type is ACPI_SMO8500, the data->dready_trig will not be set, the memory allocated by iio_triggered_buffer_setup() will not be freed, and cause memory leak as follows: unreferenced object 0xffff888009551400 (size 512): comm "i2c-SMO8500-125", pid 911, jiffies 4294911787 (age 83.852s) hex dump (first 32 bytes): 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 20 e2 e5 c0 ff ff ff ff ........ ....... backtrace: [<0000000041ce75ee>] kmem_cache_alloc_trace+0x16d/0x360 [<000000000aeb17b0>] iio_kfifo_allocate+0x41/0x130 [kfifo_buf] [<000000004b40c1f5>] iio_triggered_buffer_setup_ext+0x2c/0x210 [industrialio_triggered_buffer] [<000000004375b15f>] kxcjk1013_probe+0x10c3/0x1d81 [kxcjk_1013] Fix it by remove data->dready_trig condition in probe and remove. Reported-by: Hulk Robot <[email protected]> Fixes: a25691c ("iio: accel: kxcjk1013: allow using an external trigger") Signed-off-by: Yang Yingliang <[email protected]> Cc: <[email protected]> Reviewed-by: Hans de Goede <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jonathan Cameron <[email protected]>
1 parent fa55b7d commit 70c9774

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

drivers/iio/accel/kxcjk-1013.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1595,8 +1595,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
15951595
return 0;
15961596

15971597
err_buffer_cleanup:
1598-
if (data->dready_trig)
1599-
iio_triggered_buffer_cleanup(indio_dev);
1598+
iio_triggered_buffer_cleanup(indio_dev);
16001599
err_trigger_unregister:
16011600
if (data->dready_trig)
16021601
iio_trigger_unregister(data->dready_trig);
@@ -1618,8 +1617,8 @@ static int kxcjk1013_remove(struct i2c_client *client)
16181617
pm_runtime_disable(&client->dev);
16191618
pm_runtime_set_suspended(&client->dev);
16201619

1620+
iio_triggered_buffer_cleanup(indio_dev);
16211621
if (data->dready_trig) {
1622-
iio_triggered_buffer_cleanup(indio_dev);
16231622
iio_trigger_unregister(data->dready_trig);
16241623
iio_trigger_unregister(data->motion_trig);
16251624
}

0 commit comments

Comments
 (0)