From 7c7d90f2dda6daec5a6aaf8f97aacc10ee4deb77 Mon Sep 17 00:00:00 2001
From: Eric Van Hensbergen <ericvh@opteron.homeip.net>
Date: Wed, 6 Feb 2008 19:25:07 -0600
Subject: [PATCH] 9p: Fix soft lockup in virtio transport

This fixes a poorly placed spinlock which could result in a
soft lockup condition.

Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
---
 net/9p/trans_virtio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 0f590227943ba..7853c31bd690f 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -232,7 +232,6 @@ p9_virtio_rpc(struct p9_trans *t, struct p9_fcall *tc, struct p9_fcall **rc,
 
 	rdata = (char *)*rc+sizeof(struct p9_fcall);
 
-	spin_lock_irqsave(&chan->lock, flags);
 	n = P9_NOTAG;
 	if (tc->id != P9_TVERSION) {
 		n = p9_idpool_get(chan->tagpool);
@@ -240,6 +239,7 @@ p9_virtio_rpc(struct p9_trans *t, struct p9_fcall *tc, struct p9_fcall **rc,
 			return -ENOMEM;
 	}
 
+	spin_lock_irqsave(&chan->lock, flags);
 	req = p9_lookup_tag(chan, n);
 	spin_unlock_irqrestore(&chan->lock, flags);
 
-- 
GitLab