ChangeSet 1.2181.4.17, 2005/03/17 17:49:09-08:00, [EMAIL PROTECTED]
[PATCH] USB: Patch for ub to fix oops after disconnect
This patch was developed by Glenn Maynard for his oops back in December,
but for some reason I forgot about it and had it reimplemented when I
stepped
on this problem myself. In my case, there was no oops, but a warning
about
slab corruption.
Signed-off-by: Pete Zaitcev <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
ub.c | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff -Nru a/drivers/block/ub.c b/drivers/block/ub.c
--- a/drivers/block/ub.c 2005-03-30 15:07:44 -08:00
+++ b/drivers/block/ub.c 2005-03-30 15:07:44 -08:00
@@ -496,6 +496,11 @@
*/
static void ub_cleanup(struct ub_dev *sc)
{
+ request_queue_t *q;
+
+ /* I don't think queue can be NULL. But... Stolen from sx8.c */
+ if ((q = sc->disk->queue) != NULL)
+ blk_cleanup_queue(q);
/*
* If we zero disk->private_data BEFORE put_disk, we have to check
@@ -2056,7 +2061,6 @@
{
struct ub_dev *sc = usb_get_intfdata(intf);
struct gendisk *disk = sc->disk;
- request_queue_t *q = disk->queue;
unsigned long flags;
/*
@@ -2099,13 +2103,8 @@
*/
if (disk->flags & GENHD_FL_UP)
del_gendisk(disk);
- if (q)
- blk_cleanup_queue(q);
/*
- * We really expect blk_cleanup_queue() to wait, so no amount
- * of paranoya is too much.
- *
* Taking a lock on a structure which is about to be freed
* is very nonsensual. Here it is largely a way to do a debug freeze,
* and a bracket which shows where the nonsensual code segment ends.
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html