Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

+13 -11
+13 -11
drivers/input/touchscreen/goodix_berlin_spi.c
··· 36 36 struct spi_transfer xfers; 37 37 struct spi_message spi_msg; 38 38 const u32 *reg = reg_buf; /* reg is stored as native u32 at start of buffer */ 39 - u8 *buf; 40 39 int error; 41 40 42 41 if (reg_size != GOODIX_BERLIN_REGISTER_WIDTH) 43 42 return -EINVAL; 44 43 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); 46 47 if (!buf) 47 48 return -ENOMEM; 48 49 ··· 63 62 spi_message_add_tail(&xfers, &spi_msg); 64 63 65 64 error = spi_sync(spi, &spi_msg); 66 - if (error < 0) 65 + if (error < 0) { 67 66 dev_err(&spi->dev, "spi transfer error, %d", error); 68 - else 69 - memcpy(val_buf, buf + GOODIX_BERLIN_SPI_READ_PREFIX_LEN, val_size); 67 + return error; 68 + } 70 69 71 - kfree(buf); 70 + memcpy(val_buf, buf + GOODIX_BERLIN_SPI_READ_PREFIX_LEN, val_size); 72 71 return error; 73 72 } 74 73 ··· 80 79 struct spi_transfer xfers; 81 80 struct spi_message spi_msg; 82 81 const u32 *reg = data; /* reg is stored as native u32 at start of buffer */ 83 - u8 *buf; 84 82 int error; 85 83 86 - buf = kzalloc(GOODIX_BERLIN_SPI_WRITE_PREFIX_LEN + len, GFP_KERNEL); 84 + u8 *buf __free(kfree) = 85 + kzalloc(GOODIX_BERLIN_SPI_WRITE_PREFIX_LEN + len, GFP_KERNEL); 87 86 if (!buf) 88 87 return -ENOMEM; 89 88 ··· 101 100 spi_message_add_tail(&xfers, &spi_msg); 102 101 103 102 error = spi_sync(spi, &spi_msg); 104 - if (error < 0) 103 + if (error < 0) { 105 104 dev_err(&spi->dev, "spi transfer error, %d", error); 105 + return error; 106 + } 106 107 107 - kfree(buf); 108 - return error; 108 + return 0; 109 109 } 110 110 111 111 static const struct regmap_config goodix_berlin_spi_regmap_conf = {