Re: [rdma-next 20/22] IB/mlx4: Check that reserved fields in mlx4_ib_create_qp_rss are zero

Leon Romanovsky
2017-08-13T09:58:32Z

[-- Attachment #1: Type: text/plain, Size: 1861 bytes --]

On Sun, Aug 13, 2017 at 12:17:54PM +0300, Yuval Shaia wrote:
> On Fri, Aug 11, 2017 at 01:50:01PM +0300, Leon Romanovsky wrote:
> > From: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> >
> > According to mlx4 convention, need to fail the command due to a non-zero
> > value in the user data which is expected to be zero.
> >
> > Fixes: 3078f5f1bd8b ("IB/mlx4: Add support for RSS QP")
> > Signed-off-by: Guy Levi <guyle-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> > Signed-off-by: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> > ---
> > drivers/infiniband/hw/mlx4/qp.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
> > index 44d2d0a2d5e0..e992251b4ef1 100644
> > --- a/drivers/infiniband/hw/mlx4/qp.c
> > +++ b/drivers/infiniband/hw/mlx4/qp.c
> > @@ -792,6 +792,7 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,
> > struct mlx4_ib_create_qp_rss ucmd = {};
> > size_t required_cmd_sz;
> > int err;
> > + int i;
> >
> > if (!udata) {
> > pr_debug("RSS QP with NULL udata\n");
> > @@ -813,6 +814,10 @@ static struct ib_qp *_mlx4_ib_create_qp_rss(struct ib_pd *pd,
> > return ERR_PTR(-EFAULT);
> > }
> >
> > + for (i = 0; i < sizeof(ucmd.reserved); i++)
> > + if (ucmd.reserved[i])
> > + return ERR_PTR(-EOPNOTSUPP);
> > +
>
> Found this interesting function you might want to consider using:
> /**
> * memchr_inv - Find an unmatching character in an area of memory.
> * @start: The memory area
> * @c: Find a character other than c
> * @bytes: The size of the area.
> *
> * returns the address of the first character other than @c, or %NULL
> * if the whole buffer contains just @c.
> */
> void *memchr_inv(const void *start, int c, size_t bytes)
>

Thanks, I reuse this function and will submit new version.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]