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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251216005112.GA31492@ziepe.ca>
Date: Mon, 15 Dec 2025 20:51:12 -0400
From: Jason Gunthorpe <jgg@...pe.ca>
To: Abhijit Gangurde <abhijit.gangurde@....com>
Cc: Allen Hubbe <allen.hubbe@....com>, Leon Romanovsky <leon@...nel.org>,
	linux-rdma@...r.kernel.org, linux-kernel@...r.kernel.org,
	Thorsten Blum <thorsten.blum@...ux.dev>
Subject: Re: [PATCH] RDMA/ionic: Replace cpu_to_be64 + le64_to_cpu with swab64

On Fri, Dec 12, 2025 at 01:54:17PM +0530, Abhijit Gangurde wrote:
> 
> On 12/12/25 12:19, Jason Gunthorpe wrote:
> > On Wed, Dec 10, 2025 at 02:14:29PM +0100, Thorsten Blum wrote:
> > > Replace cpu_to_be64(le64_to_cpu()) with swab64() to simplify
> > > ionic_prep_reg().  No functional changes.
> > > 
> > > Signed-off-by: Thorsten Blum <thorsten.blum@...ux.dev>
> > > ---
> > >   drivers/infiniband/hw/ionic/ionic_datapath.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/infiniband/hw/ionic/ionic_datapath.c b/drivers/infiniband/hw/ionic/ionic_datapath.c
> > > index aa2944887f23..1a1cf82d1745 100644
> > > --- a/drivers/infiniband/hw/ionic/ionic_datapath.c
> > > +++ b/drivers/infiniband/hw/ionic/ionic_datapath.c
> > > @@ -1105,7 +1105,7 @@ static int ionic_prep_reg(struct ionic_qp *qp,
> > >   	wqe->reg_mr.length = cpu_to_be64(mr->ibmr.length);
> > >   	wqe->reg_mr.offset = ionic_pgtbl_off(&mr->buf, mr->ibmr.iova);
> > >   	dma_addr = ionic_pgtbl_dma(&mr->buf, mr->ibmr.iova);
> > > -	wqe->reg_mr.dma_addr = cpu_to_be64(le64_to_cpu(dma_addr));
> > > +	wqe->reg_mr.dma_addr = swab64(dma_addr);
> > This doesn't make any sense to me. The original code looks wrong and
> > would fail sparse, switching to swab just highlights how nonsense it
> > is, there is no way that is right on BE and LE.
> > 
> > Pensando guys what is the right thing to do here??
> 
> The original code does not have sparse failure. ionic_pgtbl_dma() is
> returning __le64, which is what swapped to __be64 for wqe->reg_me.dma_addr.
> However the proposed fix is definitely going to throw sparse warning.

Okay, so Throsten, please don't send patches for changing to swab.

If you want to improve it then the primitive should be

 le64_to_be64(x)

(and maybe vice versa) With proper sparse annotations.

Jason

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ