Skip to content

Commit

Permalink
iio:light:stk3310: move device register to end of probe
Browse files Browse the repository at this point in the history
iio_device_register should be the last operation during probe. Therefor
move up interrupt setup code and while at it, change the check for invalid
values of client->irq to be smaller than zero.
Fixes: 3dd477a ("iio: light: Add threshold interrupt support for STK3310")

As the device_register makes the userspace interfaces of the device available
it is possible for requests to come in before the probe sequence has finished.
This can lead to unhandled interrupts and similar.

Signed-off-by: Hartmut Knaack <knaack.h@gmx.de>
Reviewed-by: Tiberiu Breana <tiberiu.a.breana@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
  • Loading branch information
Hartmut Knaack authored and Jonathan Cameron committed Jul 19, 2015
1 parent c5d0db0 commit 037e966
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions drivers/iio/light/stk3310.c
Original file line number Diff line number Diff line change
Expand Up @@ -608,13 +608,7 @@ static int stk3310_probe(struct i2c_client *client,
if (ret < 0)
return ret;

ret = iio_device_register(indio_dev);
if (ret < 0) {
dev_err(&client->dev, "device_register failed\n");
stk3310_set_state(data, STK3310_STATE_STANDBY);
}

if (client->irq <= 0)
if (client->irq < 0)
client->irq = stk3310_gpio_probe(client);

if (client->irq >= 0) {
Expand All @@ -629,6 +623,12 @@ static int stk3310_probe(struct i2c_client *client,
client->irq);
}

ret = iio_device_register(indio_dev);
if (ret < 0) {
dev_err(&client->dev, "device_register failed\n");
stk3310_set_state(data, STK3310_STATE_STANDBY);
}

return ret;
}

Expand Down

0 comments on commit 037e966

Please sign in to comment.