mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
iio: adc: ti-ads1018: reject devices without match data
SPI driver_override allows a device to bind to this driver without matching either the OF or SPI device ID table. In that case, spi_get_device_match_data() returns NULL. ads1018_spi_probe() immediately dereferences the returned chip information to initialize the IIO device, causing a NULL pointer dereference. Commit572a008526("iio: dac: ad5686: missing NULL check on match data") fixed the same driver_override issue in another SPI driver. Reject devices without match data before allocating the IIO device. Fixes:bf0bba486b("iio: adc: Add ti-ads1018 driver") Cc: stable@vger.kernel.org Signed-off-by: Jiale Yao <yaojiale02@163.com> Reviewed-by: Kurt Borja <kuurtb@gmail.com> Signed-off-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
This commit is contained in:
parent
4ac257f2fd
commit
156898c0f9
|
|
@ -624,12 +624,16 @@ static int ads1018_trigger_setup(struct iio_dev *indio_dev)
|
|||
|
||||
static int ads1018_spi_probe(struct spi_device *spi)
|
||||
{
|
||||
const struct ads1018_chip_info *info = spi_get_device_match_data(spi);
|
||||
const struct ads1018_chip_info *info;
|
||||
struct device *dev = &spi->dev;
|
||||
struct iio_dev *indio_dev;
|
||||
struct ads1018 *ads1018;
|
||||
int ret;
|
||||
|
||||
info = spi_get_device_match_data(spi);
|
||||
if (!info)
|
||||
return -ENODATA;
|
||||
|
||||
indio_dev = devm_iio_device_alloc(dev, sizeof(*ads1018));
|
||||
if (!indio_dev)
|
||||
return -ENOMEM;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user