Skip to content

Commit 03db842

Browse files
committed
Input: goodix_berlin - use __free() cleanup in SPI transport
Switch the driver to use __free(kfree) cleanup facility instead of freeing memory by hand. Link: https://lore.kernel.org/r/Zmk1SGwVt3rIbbMU@google.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
1 parent 68bf7a8 commit 03db842

1 file changed

Lines changed: 13 additions & 11 deletions

File tree

drivers/input/touchscreen/goodix_berlin_spi.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,14 @@ static int goodix_berlin_spi_read(void *context, const void *reg_buf,
3636
struct spi_transfer xfers;
3737
struct spi_message spi_msg;
3838
const u32 *reg = reg_buf; /* reg is stored as native u32 at start of buffer */
39-
u8 *buf;
4039
int error;
4140

4241
if (reg_size != GOODIX_BERLIN_REGISTER_WIDTH)
4342
return -EINVAL;
4443

45-
buf = kzalloc(GOODIX_BERLIN_SPI_READ_PREFIX_LEN + val_size, GFP_KERNEL);
44+
u8 *buf __free(kfree) =
45+
kzalloc(GOODIX_BERLIN_SPI_READ_PREFIX_LEN + val_size,
46+
GFP_KERNEL);
4647
if (!buf)
4748
return -ENOMEM;
4849

@@ -62,12 +63,12 @@ static int goodix_berlin_spi_read(void *context, const void *reg_buf,
6263
spi_message_add_tail(&xfers, &spi_msg);
6364

6465
error = spi_sync(spi, &spi_msg);
65-
if (error < 0)
66+
if (error < 0) {
6667
dev_err(&spi->dev, "spi transfer error, %d", error);
67-
else
68-
memcpy(val_buf, buf + GOODIX_BERLIN_SPI_READ_PREFIX_LEN, val_size);
68+
return error;
69+
}
6970

70-
kfree(buf);
71+
memcpy(val_buf, buf + GOODIX_BERLIN_SPI_READ_PREFIX_LEN, val_size);
7172
return error;
7273
}
7374

@@ -79,10 +80,10 @@ static int goodix_berlin_spi_write(void *context, const void *data,
7980
struct spi_transfer xfers;
8081
struct spi_message spi_msg;
8182
const u32 *reg = data; /* reg is stored as native u32 at start of buffer */
82-
u8 *buf;
8383
int error;
8484

85-
buf = kzalloc(GOODIX_BERLIN_SPI_WRITE_PREFIX_LEN + len, GFP_KERNEL);
85+
u8 *buf __free(kfree) =
86+
kzalloc(GOODIX_BERLIN_SPI_WRITE_PREFIX_LEN + len, GFP_KERNEL);
8687
if (!buf)
8788
return -ENOMEM;
8889

@@ -100,11 +101,12 @@ static int goodix_berlin_spi_write(void *context, const void *data,
100101
spi_message_add_tail(&xfers, &spi_msg);
101102

102103
error = spi_sync(spi, &spi_msg);
103-
if (error < 0)
104+
if (error < 0) {
104105
dev_err(&spi->dev, "spi transfer error, %d", error);
106+
return error;
107+
}
105108

106-
kfree(buf);
107-
return error;
109+
return 0;
108110
}
109111

110112
static const struct regmap_config goodix_berlin_spi_regmap_conf = {

0 commit comments

Comments
 (0)