patch "iio: imu: adis: Fix NULL pointer dereference in adis_init" added to char-misc-linus
This is a note to let you know that I've just added the patch titled
iio: imu: adis: Fix NULL pointer dereference in adis_init
to my char-misc git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
in the char-misc-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 9990cd4f8827bd1ae3fb6eb7407630d8d463c430 Mon Sep 17 00:00:00 2001
From: Radu Sabau <[email protected]>
Date: Fri, 20 Feb 2026 16:16:41 +0200
Subject: iio: imu: adis: Fix NULL pointer dereference in adis_init
The adis_init() function dereferences adis->ops to check if the individual function pointers (write, read, reset) are NULL, but does not first check if adis->ops itself is NULL.
Drivers like adis16480, adis16490, adis16545 and others do not set custom ops and rely on adis_init() assigning the defaults. Since struct adis is zero-initialized by devm_iio_device_alloc(), adis->ops is NULL when adis_init() is called, causing a NULL pointer dereference:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
pc : adis_init+0xc0/0x118
Call trace:
adis_init+0xc0/0x118
adis16480_probe+0xe0/0x670Fix this by checking if adis->ops is NULL before dereferencing it, falling through to assign the default ops in that case.
--- drivers/iio/imu/adis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/imu/adis.c +1 -1
@@ -526,7 +526,7 @@ int adis_init(struct adis *adis, struct iio_dev *indio_dev, adis->spi = spi; adis->data = data; -if (!adis->ops->write && !adis->ops->read && !adis->ops->reset) +if (!adis->ops) adis->ops = &adis_default_ops;else if (!adis->ops->write || !adis->ops->read || !adis->ops->reset)return -EINVAL ;
Signature · 1 line
2.53.0