mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 17:11:46 +00:00
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>
This commit is contained in:
parent
c55703d807
commit
7c7d90f2dd
1 changed files with 1 additions and 1 deletions
|
@ -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);
|
rdata = (char *)*rc+sizeof(struct p9_fcall);
|
||||||
|
|
||||||
spin_lock_irqsave(&chan->lock, flags);
|
|
||||||
n = P9_NOTAG;
|
n = P9_NOTAG;
|
||||||
if (tc->id != P9_TVERSION) {
|
if (tc->id != P9_TVERSION) {
|
||||||
n = p9_idpool_get(chan->tagpool);
|
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;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spin_lock_irqsave(&chan->lock, flags);
|
||||||
req = p9_lookup_tag(chan, n);
|
req = p9_lookup_tag(chan, n);
|
||||||
spin_unlock_irqrestore(&chan->lock, flags);
|
spin_unlock_irqrestore(&chan->lock, flags);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue