FAILED: patch "[PATCH] iio:accel:mxc4005: rearrange iio trigger get and register" failed to apply to 4.19-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 9354c224c9b4f55847a0de3e968cba2ebf15af3b Mon Sep 17 00:00:00 2001
From: Dmitry Rokosov <[email protected]>
Date: Tue, 24 May 2022 18:14:43 +0000
Subject: [PATCH] iio:accel:mxc4005: rearrange iio trigger get and register
IIO trigger interface function iio_trigger_get() should be called after iio_trigger_register() (or its devm analogue) strictly, because of iio_trigger_get() acquires module refcnt based on the trigger->owner pointer, which is initialized inside iio_trigger_register() to THIS_MODULE.
If this call order is wrong, the next iio_trigger_put() (from sysfs callback or "delete module" path) will dereference "default" module refcnt, which is incorrect behaviour.
drivers/iio/accel/mxc4005.c +2 -2
@@ -456,8 +456,6 @@ static int mxc4005_probe(struct i2c_client *client, data->dready_trig->ops = &mxc4005_trigger_ops;iio_trigger_set_drvdata (data->dready_trig, indio_dev); - indio_dev->trig = data->dready_trig; -iio_trigger_get (indio_dev->trig); ret =devm_iio_trigger_register (&client->dev, data->dready_trig);if (ret) {
@@ -465,6 +463,8 @@ static int mxc4005_probe(struct i2c_client *client, "failed to register trigger\n");return ret; } + + indio_dev->trig =iio_trigger_get (data->dready_trig); }return devm_iio_device_register (&client->dev, indio_dev);