mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 04:12:04 -04:00
iio: pressure: bmp280: Tolerate IRQ before registering
[ Upstream commit 97b31a6f5fb95b1ec6575b78a7240baddba34384 ]
With DEBUG_SHIRQ enabled we have a kernel crash
[ 116.482696] BUG: kernel NULL pointer dereference, address: 0000000000000000
...
[ 116.606571] Call Trace:
[ 116.609023] <IRQ>
[ 116.611047] complete+0x34/0x50
[ 116.614206] bmp085_eoc_irq+0x9/0x10 [bmp280]
because DEBUG_SHIRQ mechanism fires an IRQ before registration and drivers
ought to be able to handle an interrupt happening before request_irq() returns.
Fixes: aae9539496 ("iio: pressure: bmp280: add support for BMP085 EOC interrupt")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
2e714a547e
commit
8bd207bb1a
1 changed files with 4 additions and 1 deletions
|
|
@ -706,7 +706,7 @@ static int bmp180_measure(struct bmp280_data *data, u8 ctrl_meas)
|
|||
unsigned int ctrl;
|
||||
|
||||
if (data->use_eoc)
|
||||
init_completion(&data->done);
|
||||
reinit_completion(&data->done);
|
||||
|
||||
ret = regmap_write(data->regmap, BMP280_REG_CTRL_MEAS, ctrl_meas);
|
||||
if (ret)
|
||||
|
|
@ -962,6 +962,9 @@ static int bmp085_fetch_eoc_irq(struct device *dev,
|
|||
"trying to enforce it\n");
|
||||
irq_trig = IRQF_TRIGGER_RISING;
|
||||
}
|
||||
|
||||
init_completion(&data->done);
|
||||
|
||||
ret = devm_request_threaded_irq(dev,
|
||||
irq,
|
||||
bmp085_eoc_irq,
|
||||
|
|
|
|||
Loading…
Reference in a new issue