--- 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) {