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. > > 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. -- Dmitry