Skip to content

Commit

Permalink
V4L/DVB: pvrusb2: Fix kernel oops on device tear-down
Browse files Browse the repository at this point in the history
pvrusb2: Delete sysfs class device as the _very_ last step, after
we're sure that all driver contexts have gone away first.  This is
important because it appears that there isn't any protection from a
struct device instance reference a deleted struct class instance.  The
assumption in the kernel code appears to be that the class instance is
assumed to be around for the life of the device.  So we can't let the
class instance go away until all referencing device instances are
gone; this is ensured by delaying removal of the class instance until
after the driver contexts have all gone away.  This bug has been
present for a very long time but it didn't apparently become malignant
until recently (probably because of other changes in the kernel).

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Mike Isely authored and Mauro Carvalho Chehab committed Jun 1, 2010
1 parent 7a6ac34 commit e3a5ee7
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/media/video/pvrusb2/pvrusb2-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,12 +153,12 @@ static void __exit pvr_exit(void)

usb_deregister(&pvr_driver);

pvr2_context_global_done();

#ifdef CONFIG_VIDEO_PVRUSB2_SYSFS
pvr2_sysfs_class_destroy(class_ptr);
#endif /* CONFIG_VIDEO_PVRUSB2_SYSFS */

pvr2_context_global_done();

pvr2_trace(PVR2_TRACE_INIT,"pvr_exit complete");
}

Expand Down

0 comments on commit e3a5ee7

Please sign in to comment.