In this case, we are marshaling an error status instead of the errno value. Reorganize the out and out_nofid labels to look like all the other cases. Coverity reports this because the "err = -ENOENT" and "err = -EINVAL" assignments above are dead, overwritten by the call to pdu_marshal.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- hw/9pfs/9p.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 99e9472..d028eca 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -3045,14 +3045,15 @@ static void coroutine_fn v9fs_lock(void *opaque) goto out; } status = P9_LOCK_SUCCESS; -out: - put_fid(pdu, fidp); -out_nofid: err = pdu_marshal(pdu, offset, "b", status); - if (err > 0) { - err += offset; + if (err < 0) { + goto out; } + err += offset; trace_v9fs_lock_return(pdu->tag, pdu->id, status); +out: + put_fid(pdu, fidp); +out_nofid: pdu_complete(pdu, err); v9fs_string_free(&flock.client_id); } -- 2.9.3