diff options
author | Eric Van Hensbergen <ericvh@opteron.homeip.net> | 2008-02-06 20:25:07 -0500 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@opteron.homeip.net> | 2008-02-06 20:25:07 -0500 |
commit | 7c7d90f2dda6daec5a6aaf8f97aacc10ee4deb77 (patch) | |
tree | 918b84a88cb4515de1e46125534e6a266f567b29 /net/9p/trans_virtio.c | |
parent | c55703d807a8c6c239a5fea7b9cd7da08c27d7a9 (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.c | 2 |
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 | ||