]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: gyro: mpu3050: Fix out-of-sequence free_irq()
authorEthan Tidmore <ethantidmore06@gmail.com>
Tue, 24 Feb 2026 22:48:18 +0000 (16:48 -0600)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 1 Mar 2026 11:20:11 +0000 (11:20 +0000)
The triggered buffer is initialized before the IRQ is requested. The
removal path currently calls iio_triggered_buffer_cleanup() before
free_irq(). This violates the expected LIFO.

Place free_irq() in the correct location relative to
iio_triggered_buffer_cleanup().

Fixes: 3904b28efb2c7 ("iio: gyro: Add driver for the MPU-3050 gyroscope")
Suggested-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/gyro/mpu3050-core.c

index 2e92daf047bd413c66fbf4ce08c8f1e21f2dc9df..d84e04e4b431421676fe4063449e6184c82df5a1 100644 (file)
@@ -1278,9 +1278,9 @@ void mpu3050_common_remove(struct device *dev)
        pm_runtime_get_sync(dev);
        pm_runtime_put_noidle(dev);
        pm_runtime_disable(dev);
-       iio_triggered_buffer_cleanup(indio_dev);
        if (mpu3050->irq)
                free_irq(mpu3050->irq, mpu3050->trig);
+       iio_triggered_buffer_cleanup(indio_dev);
        mpu3050_power_down(mpu3050);
 }