[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] Sleeping with spinlock held
Hi, In drivers/xen/blkfront/blkfront.c, flush_scheduled_work(), that might sleep, is being called with a spinlock held, thus triggering a BUG. I think it's safe to just poke it out from the locked region, as it seems to me we won't be receiving any more work at this time. In case you agree, I'm attaching a simple patch that fix this. -- Glauber de Oliveira Costa Red Hat Inc. "Free as in Freedom" --- linux-2.6.18-orig/drivers/xen/blkfront//blkfront.c.orig 2006-10-07 10:28:25.000000000 -0400 +++ linux-2.6.18-orig/drivers/xen/blkfront//blkfront.c 2006-10-07 10:27:58.000000000 -0400 @@ -355,8 +355,8 @@ static void blkfront_closing(struct xenb blk_stop_queue(info->rq); /* No more gnttab callback work. */ gnttab_cancel_free_callback(&info->callback); - flush_scheduled_work(); spin_unlock_irqrestore(&blkif_io_lock, flags); + flush_scheduled_work(); xlvbd_del(info); @@ -714,8 +714,8 @@ static void blkif_free(struct blkfront_i blk_stop_queue(info->rq); /* No more gnttab callback work. */ gnttab_cancel_free_callback(&info->callback); - flush_scheduled_work(); spin_unlock_irq(&blkif_io_lock); + flush_scheduled_work(); /* Free resources associated with old device channel. */ if (info->ring_ref != GRANT_INVALID_REF) { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |