aboutsummaryrefslogtreecommitdiffstats
path: root/net/9p/trans_virtio.c
diff options
context:
space:
mode:
authorEric Van Hensbergen <ericvh@opteron.homeip.net>2008-02-06 20:25:07 -0500
committerEric Van Hensbergen <ericvh@opteron.homeip.net>2008-02-06 20:25:07 -0500
commit7c7d90f2dda6daec5a6aaf8f97aacc10ee4deb77 (patch)
tree918b84a88cb4515de1e46125534e6a266f567b29 /net/9p/trans_virtio.c
parentc55703d807a8c6c239a5fea7b9cd7da08c27d7a9 (diff)
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>
Diffstat (limited to 'net/9p/trans_virtio.c')
-rw-r--r--net/9p/trans_virtio.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 0f590227943b..7853c31bd690 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,
232 232
233 rdata = (char *)*rc+sizeof(struct p9_fcall); 233 rdata = (char *)*rc+sizeof(struct p9_fcall);
234 234
235 spin_lock_irqsave(&chan->lock, flags);
236 n = P9_NOTAG; 235 n = P9_NOTAG;
237 if (tc->id != P9_TVERSION) { 236 if (tc->id != P9_TVERSION) {
238 n = p9_idpool_get(chan->tagpool); 237 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,
240 return -ENOMEM; 239 return -ENOMEM;
241 } 240 }
242 241
242 spin_lock_irqsave(&chan->lock, flags);
243 req = p9_lookup_tag(chan, n); 243 req = p9_lookup_tag(chan, n);
244 spin_unlock_irqrestore(&chan->lock, flags); 244 spin_unlock_irqrestore(&chan->lock, flags);
245 245