RDMA/uverbs: Fix an error flow in ib_uverbs_poll_cq
authorJason Gunthorpe <jgg@mellanox.com>
Thu, 14 Feb 2019 20:13:31 +0000 (20:13 +0000)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 15 Feb 2019 22:54:46 +0000 (15:54 -0700)
The new output_written block was wrongly placed before the ret=0, causing
the error code to be lost. uverbs_output_written is not expected to fail,
and even if it does fail it has no significant impact on the userspace
flow.

Reported-by: Bart Van Assche <bvanassche@acm.org>
Fixes: d6f4a21f309d ("RDMA/uverbs: Mark ioctl responses with UVERBS_ATTR_F_VALID_OUTPUT")
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
drivers/infiniband/core/uverbs_cmd.c

index c2e7733..4947d14 100644 (file)
@@ -1186,12 +1186,11 @@ static int ib_uverbs_poll_cq(struct uverbs_attr_bundle *attrs)
                ret = -EFAULT;
                goto out_put;
        }
+       ret = 0;
 
        if (uverbs_attr_is_valid(attrs, UVERBS_ATTR_CORE_OUT))
                ret = uverbs_output_written(attrs, UVERBS_ATTR_CORE_OUT);
 
-       ret = 0;
-
 out_put:
        uobj_put_obj_read(cq);
        return ret;