diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c index 0f590227943ba86ca63c39f5836dadb92497d1f3..7853c31bd690f5744c3824904ccce34e0baa9824 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);