Skip to content

Commit

Permalink
[PARISC] Fix double free when removing HIL drivers
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Kyle McMartin authored and Kyle McMartin committed Mar 30, 2006
1 parent 4da9f13 commit cd7a920
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 5 deletions.
3 changes: 1 addition & 2 deletions drivers/input/keyboard/hil_kbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -240,9 +240,8 @@ static void hil_kbd_disconnect(struct serio *serio)
return;
}

input_unregister_device(kbd->dev);
serio_close(serio);
input_free_device(kbd->dev);
input_unregister_device(kbd->dev);
kfree(kbd);
}

Expand Down
1 change: 0 additions & 1 deletion drivers/input/keyboard/hilkbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,6 @@ static void __exit hil_exit(void)

input_unregister_device(hil_dev.dev);

input_free_device(hil_dev.dev);
hil_dev.dev = NULL;

#if defined(CONFIG_PARISC)
Expand Down
3 changes: 1 addition & 2 deletions drivers/input/mouse/hil_ptr.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down

0 comments on commit cd7a920

Please sign in to comment.