Re: [BUG] Oops when SCSI device under multipath is removed

From: Alan Stern
Date: Thu Aug 11 2011 - 10:59:16 EST

On Thu, 11 Aug 2011, James Bottomley wrote:

> > If the reason you moved scsi_free_queue into scsi_remove_device
> > is marking the queue dead, how about the following patch?
> > Do you think it's acceptable?
> Well, it's just hiding the problem. The essential problem is that only
> block has the correctly refcounted knowledge to know the last release of
> the queue reference. Until that time, the holder of the reference can
> use the queue regardless of whether blk_cleanup_queue() has been called.
> This is the race you complain about since use of the queue involves the
> lock which should be guarded by QUEUE_DEAD checks.
> This is essentially unfixable with function calls. The only way to fix
> it is to have a callback model for freeing the external lock.

Assuming the queue is associated with a device, the queue could take a
reference to the device, dropping that reference when the queue is
freed. Then the lock could safely be freed at the same time as the

Alan Stern

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at