lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
 <PAXPR83MB0559406ED7CCDAFC0CAEC63DB4A22@PAXPR83MB0559.EURPRD83.prod.outlook.com>
Date: Tue, 16 Jul 2024 13:42:49 +0000
From: Konstantin Taranov <kotaranov@...rosoft.com>
To: Leon Romanovsky <leon@...nel.org>, Konstantin Taranov
	<kotaranov@...ux.microsoft.com>
CC: Wei Hu <weh@...rosoft.com>, "sharmaajay@...rosoft.com"
	<sharmaajay@...rosoft.com>, Long Li <longli@...rosoft.com>, "jgg@...pe.ca"
	<jgg@...pe.ca>, "linux-rdma@...r.kernel.org" <linux-rdma@...r.kernel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH rdma-next 1/1] RDMA/mana_ib: indicate that inline data is
 not supported

> > Set max_inline_data to zero during RC QP creation.
> >
> > Fixes: fdefb9184962 ("RDMA/mana_ib: Implement uapi to create and
> > destroy RC QP")
> > Signed-off-by: Konstantin Taranov <kotaranov@...rosoft.com>
> > ---
> >  drivers/infiniband/hw/mana/qp.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/infiniband/hw/mana/qp.c
> > b/drivers/infiniband/hw/mana/qp.c index 73d67c853b6f..d9f24a763e72
> > 100644
> > --- a/drivers/infiniband/hw/mana/qp.c
> > +++ b/drivers/infiniband/hw/mana/qp.c
> > @@ -426,6 +426,8 @@ static int mana_ib_create_rc_qp(struct ib_qp *ibqp,
> struct ib_pd *ibpd,
> >  	u64 flags = 0;
> >  	u32 doorbell;
> >
> > +	/* inline data is not supported */
> > +	attr->cap.max_inline_data = 0;
> 
> Can you please point to me to the flow where attr is not zeroed before?
>

Sorry, I do not understand the question. I cannot point to something that is not in the code.

It is to support the case when user asks for x bytes inlined
when it creates a QP, and we respond with actual allowed inline
data for the created QP. (as defined in: "The function ibv_create_qp()
will update the qp_init_attr->cap struct with the actual QP values of
the QP that was created;")

The kernel logic is inside "static int create_qp(struct uverbs_attr_bundle *attrs, struct ib_uverbs_ex_create_qp *cmd)"
where we do the following:
attr.cap.max_inline_data = cmd->max_inline_data;
qp = ib_create_qp_user(..,&attr,..);
resp.base.max_inline_data = attr.cap.max_inline_data;

So, my change makes sure that the response will have 0 and not the value the user asked,
as we do not support inlining. So without the fix, the user who was asking for inlining was falsely
seeing that we support it (example of such an application is rdma_server from librdmacm).

Thanks

> Thanks
> 
> >  	if (!udata || udata->inlen < sizeof(ucmd))
> >  		return -EINVAL;
> >
> > --
> > 2.43.0
> >

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ