Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c7d90f2 authored by Eric Van Hensbergen's avatar Eric Van Hensbergen
Browse files

9p: Fix soft lockup in virtio transport



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

Signed-off-by: default avatarEric Van Hensbergen <ericvh@gmail.com>
parent c55703d8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);