xen-scsifront: don't deadlock if the ring becomes full

scsifront_action_handler() will deadlock on host->host_lock, if the
ring is full and it has to wait for entries to become available.

Signed-off-by: David Vrabel <[email protected]>
Reviewed-by: Juergen Gross <[email protected]>
This commit is contained in:
David Vrabel 2014-09-11 14:20:04 +01:00
commit 7921a11c7b

View file

@ -541,8 +541,9 @@ static int scsifront_action_handler(struct scsi_cmnd *sc, uint8_t act)
if (!shadow)
return FAILED;
spin_lock_irq(host->host_lock);
for (;;) {
spin_lock_irq(host->host_lock);
if (!RING_FULL(&info->ring)) {
ring_req = scsifront_command2ring(info, sc, shadow);
if (ring_req)