aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/mouse
diff options
context:
space:
mode:
authorKyle McMartin <kyle@parisc-linux.org>2006-03-30 11:47:32 -0500
committerKyle McMartin <kyle@hera.kernel.org>2006-03-30 17:48:59 +0000
commitcd7a9202a5a6e7712df2b80ed5ebd7b078130fc3 (patch)
treec7e2504dd6de0d2412815dce658468f7add77173 /drivers/input/mouse
parent[PARISC] Add atomic_sub_and_test (diff)
downloadlinux-dev-cd7a9202a5a6e7712df2b80ed5ebd7b078130fc3.tar.xz
linux-dev-cd7a9202a5a6e7712df2b80ed5ebd7b078130fc3.zip
[PARISC] Fix double free when removing HIL drivers
On Thu, Mar 30, 2006 at 08:31:02AM -0500, Dmitry Torokhov wrote: > Don't do that, its double free. input_unregister_device() normally > causes release() to be called and free the device. input_free_device > is only to be called when input_register_device has not been called or > failed. > > Plus you might want to unregister device after closing serio port, > otherwise your interrupt routine might be referencing already freed > memory. Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'drivers/input/mouse')
-rw-r--r--drivers/input/mouse/hil_ptr.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/input/mouse/hil_ptr.c b/drivers/input/mouse/hil_ptr.c
index a648f9fe3d95..bfb564fd8fe2 100644
--- a/drivers/input/mouse/hil_ptr.c
+++ b/drivers/input/mouse/hil_ptr.c
@@ -233,9 +233,8 @@ static void hil_ptr_disconnect(struct serio *serio)
return;
}
- input_unregister_device(ptr->dev);
serio_close(serio);
- input_free_device(ptr->dev);
+ input_unregister_device(ptr->dev);
kfree(ptr);
}