video: adf: use rb_erase in adf_obj_destroy.
authorAlistair Strachan <alistair.strachan@imgtec.com>
Mon, 21 Apr 2014 20:09:23 +0000 (13:09 -0700)
committerGreg Hackmann <ghackmann@google.com>
Wed, 23 Apr 2014 16:36:53 +0000 (16:36 +0000)
commitc1bceaea3e32167babd4c89c7085f4c2f6ad473f
tree0d5284c32e4dc29d64ff0d1146b92f8111763f44
parente8430cbed3ef15fdb1ac26cfd020e010aa5f1c35
video: adf: use rb_erase in adf_obj_destroy.

Not calling rb_erase() can cause slab corruption, as the rb_first() call
after kfree() in adf_obj_destroy() can return the same node twice unless
it is erased.

This problem was reproduced by unloading a kernel module that used the
adf framework *after* a vsync event was registered. A crash would occur
in rb_first(). (Just loading and immediately unloading the module without
the vsync event worked correctly.)

Change-Id: I9fa7cb5d7519691e38a281439844aa193da13d1b
Signed-off-by: Alistair Strachan <alistair.strachan@imgtec.com>
Cc: Jonathan Hamilton <jonathan.hamilton@imgtec.com>
Cc: Greg Hackmann <ghackmann@google.com>
drivers/video/adf/adf.c