From: Yishai Hadas <yish...@mellanox.com>

[ Upstream commit cf26deff9036cd3270af562dbec545239e5c7f07 ]

Fix udata response upon SRQ creation to use the UAPI structure (i.e.
mlx5_ib_create_srq_resp). It did not zero the reserved field in userspace.

Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
Link: https://lore.kernel.org/r/20200406173540.1466477-1-l...@kernel.org
Signed-off-by: Yishai Hadas <yish...@mellanox.com>
Signed-off-by: Leon Romanovsky <leo...@mellanox.com>
Signed-off-by: Jason Gunthorpe <j...@mellanox.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/infiniband/hw/mlx5/srq.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/mlx5/srq.c b/drivers/infiniband/hw/mlx5/srq.c
index 4e7fde86c96b3..c29c1f7da4a14 100644
--- a/drivers/infiniband/hw/mlx5/srq.c
+++ b/drivers/infiniband/hw/mlx5/srq.c
@@ -310,12 +310,18 @@ int mlx5_ib_create_srq(struct ib_srq *ib_srq,
        srq->msrq.event = mlx5_ib_srq_event;
        srq->ibsrq.ext.xrc.srq_num = srq->msrq.srqn;
 
-       if (udata)
-               if (ib_copy_to_udata(udata, &srq->msrq.srqn, sizeof(__u32))) {
+       if (udata) {
+               struct mlx5_ib_create_srq_resp resp = {
+                       .srqn = srq->msrq.srqn,
+               };
+
+               if (ib_copy_to_udata(udata, &resp, min(udata->outlen,
+                                    sizeof(resp)))) {
                        mlx5_ib_dbg(dev, "copy to user failed\n");
                        err = -EFAULT;
                        goto err_core;
                }
+       }
 
        init_attr->attr.max_wr = srq->msrq.max - 1;
 
-- 
2.25.1



Reply via email to