Commit 03db8425 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

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: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 68bf7a8c
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -36,13 +36,14 @@ static int goodix_berlin_spi_read(void *context, const void *reg_buf,
	struct spi_transfer xfers;
	struct spi_message spi_msg;
	const u32 *reg = reg_buf; /* reg is stored as native u32 at start of buffer */
	u8 *buf;
	int error;

	if (reg_size != GOODIX_BERLIN_REGISTER_WIDTH)
		return -EINVAL;

	buf = kzalloc(GOODIX_BERLIN_SPI_READ_PREFIX_LEN + val_size, GFP_KERNEL);
	u8 *buf __free(kfree) =
		kzalloc(GOODIX_BERLIN_SPI_READ_PREFIX_LEN + val_size,
			GFP_KERNEL);
	if (!buf)
		return -ENOMEM;

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

	error = spi_sync(spi, &spi_msg);
	if (error < 0)
	if (error < 0) {
		dev_err(&spi->dev, "spi transfer error, %d", error);
	else
		memcpy(val_buf, buf + GOODIX_BERLIN_SPI_READ_PREFIX_LEN, val_size);
		return error;
	}

	kfree(buf);
	memcpy(val_buf, buf + GOODIX_BERLIN_SPI_READ_PREFIX_LEN, val_size);
	return error;
}

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

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

@@ -100,13 +101,14 @@ static int goodix_berlin_spi_write(void *context, const void *data,
	spi_message_add_tail(&xfers, &spi_msg);

	error = spi_sync(spi, &spi_msg);
	if (error < 0)
	if (error < 0) {
		dev_err(&spi->dev, "spi transfer error, %d", error);

	kfree(buf);
		return error;
	}

	return 0;
}

static const struct regmap_config goodix_berlin_spi_regmap_conf = {
	.reg_bits = 32,
	.val_bits = 8,