All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH Linux-2.6.18] scsifront: avoid aquiring same lock twice if ring is full
@ 2015-01-13 16:22 Juergen Gross
  2015-01-13 18:53 ` Pasi Kärkkäinen
  2015-01-14  9:40 ` Jan Beulich
  0 siblings, 2 replies; 4+ messages in thread
From: Juergen Gross @ 2015-01-13 16:22 UTC (permalink / raw)
  To: xen-devel, jbeulich; +Cc: Juergen Gross

The locking in scsifront_dev_reset_handler() is obviously wrong. In
case of a full ring the host lock is aquired twice.

Fixing this issue enables to get rid of the endless fo loop with an
explicit break statement.

Signed-off-by: Juergen Gross <jgross@suse.com>
---

diff -r 078f1bb69ea5 drivers/xen/scsifront/scsifront.c
--- a/drivers/xen/scsifront/scsifront.c	Wed Dec 10 10:22:39 2014 +0100
+++ b/drivers/xen/scsifront/scsifront.c	Tue Jan 13 14:32:33 2015 +0100
@@ -447,12 +447,10 @@ static int scsifront_dev_reset_handler(s
 	uint16_t rqid;
 	int err = 0;
 
-	for (;;) {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
-		spin_lock_irq(host->host_lock);
+	spin_lock_irq(host->host_lock);
 #endif
-		if (!RING_FULL(&info->ring))
-			break;
+	while (RING_FULL(&info->ring)) {
 		if (err) {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
 			spin_unlock_irq(host->host_lock);

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-01-14  9:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-13 16:22 [PATCH Linux-2.6.18] scsifront: avoid aquiring same lock twice if ring is full Juergen Gross
2015-01-13 18:53 ` Pasi Kärkkäinen
2015-01-14  4:27   ` Juergen Gross
2015-01-14  9:40 ` Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.