Re: [PATCH] Input: Fix a ref counting issue

From: Christophe JAILLET
Date: Sun Nov 29 2020 - 15:16:24 EST



Le 29/11/2020 à 20:49, Dmitry Torokhov a écrit :
Hi Christophe,

On Sun, Nov 29, 2020 at 09:45:16AM +0100, Christophe JAILLET wrote:
In case of a managed resource, 'devm_input_device_release()' already has a
'input_put_device(dev)' call.

Avoid a double reference decrement by explicitly calling
'input_put_device()' only on non-managed input device.
This patch is incorrect, as devres_destroy() that is used in
input_free_device(), unlike devres_releasde(), does not actually call
the "release" function. It simply destroys the devres object, but does
not clear associated resources.

Crystal clear.
Thanks for the explanation and sorry for the noise.

CJ

Fixes: 2be975c6d920 ("Input: introduce managed input devices (add devres support)")
Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
---
This patch is completely speculative and compile tested only.
---
drivers/input/input.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/input/input.c b/drivers/input/input.c
index 3cfd2c18eebd..c09c9f020667 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -1920,7 +1920,8 @@ void input_free_device(struct input_dev *dev)
devm_input_device_release,
devm_input_device_match,
dev));
- input_put_device(dev);
+ else
+ input_put_device(dev);
}
}
EXPORT_SYMBOL(input_free_device);
--
2.27.0

Thanks.