HID: hidraw: correctly deallocate memory on device disconnect
authorManoj Chourasia <mchourasia@nvidia.com>
Mon, 22 Jul 2013 10:03:13 +0000 (15:33 +0530)
committerJiri Kosina <jkosina@suse.cz>
Fri, 9 Aug 2013 09:27:00 +0000 (11:27 +0200)
commit212a871a3934beccf43431608c27ed2e05a476ec
treed79f836e7c2f2ec64a36af5725bccd1ef74423ee
parent9854a6f929956c9099dcc837157fd344f6f1c227
HID: hidraw: correctly deallocate memory on device disconnect

This changes puts the commit 4fe9f8e203f back in place
with the fixes for slab corruption because of the commit.

When a device is unplugged, wait for all processes that
have opened the device to close before deallocating the device.

This commit was solving kernel crash because of the corruption in
rb tree of vmalloc. The rootcause was the device data pointer was
geting excessed after the memory associated with hidraw was freed.

The commit 4fe9f8e203f was buggy as it was also freeing the hidraw
first and then calling delete operation on the list associated with
that hidraw leading to slab corruption.

Signed-off-by: Manoj Chourasia <mchourasia@nvidia.com>
Tested-by: Peter Wu <lekensteyn@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hidraw.c