Skip to content

Commit

Permalink
RDMA/mlx5: Fix definition of mlx5_ib_create_qp_resp
Browse files Browse the repository at this point in the history
This structure is pushed down the ex and the non-ex path, so it needs to be
aligned to 8 bytes to go through ex without implicit padding.

Old user space will provide 4 bytes of resp on !ex and 8 bytes on ex, so
take the approach of just copying the minimum length.

New user space will consistently provide 8 bytes in both cases.

Signed-off-by: Leon Romanovsky <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
  • Loading branch information
jgunthorpe committed Apr 3, 2018
1 parent 689a8e3 commit 41d902c
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/infiniband/hw/mlx5/qp.c
Original file line number Diff line number Diff line change
Expand Up @@ -880,7 +880,7 @@ static int create_user_qp(struct mlx5_ib_dev *dev, struct ib_pd *pd,
goto err_free;
}

err = ib_copy_to_udata(udata, resp, sizeof(*resp));
err = ib_copy_to_udata(udata, resp, min(udata->outlen, sizeof(*resp)));
if (err) {
mlx5_ib_dbg(dev, "copy failed\n");
goto err_unmap;
Expand Down Expand Up @@ -1468,7 +1468,7 @@ static int create_rss_raw_qp_tir(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
return -EOPNOTSUPP;
}

err = ib_copy_to_udata(udata, &resp, min_resp_len);
err = ib_copy_to_udata(udata, &resp, min(udata->outlen, sizeof(resp)));
if (err) {
mlx5_ib_dbg(dev, "copy failed\n");
return -EINVAL;
Expand Down
1 change: 1 addition & 0 deletions include/uapi/rdma/mlx5-abi.h
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ struct mlx5_ib_create_qp_rss {

struct mlx5_ib_create_qp_resp {
__u32 bfreg_index;
__u32 reserved;
};

struct mlx5_ib_alloc_mw {
Expand Down

0 comments on commit 41d902c

Please sign in to comment.