Re: Re: [PATCH] RDMA/siw: Fix compiler warnings on 32-bit due to u64/pointer abuse

From: Jason Gunthorpe
Date: Mon Aug 19 2019 - 09:52:17 EST


On Mon, Aug 19, 2019 at 01:36:11PM +0000, Bernard Metzler wrote:
> >If the value is really a kernel pointer, then it ought to be printed
> >with %p. We have been getting demanding on this point lately in RDMA
> >to enforce the ability to keep kernel pointers secret.
> >
> >> - wqe->sqe.sge[0].laddr = (u64)&wqe->sqe.sge[1];
> >> + wqe->sqe.sge[0].laddr = (uintptr_t)&wqe->sqe.sge[1];
> >
> >[..]
> >
> >> rv = siw_rx_kva(srx,
> >> - (void *)(sge->laddr + frx->sge_off),
> >> + (void *)(uintptr_t)(sge->laddr + frx->sge_off),
> >> sge_bytes);
> >
> >Bernard, this is nonsense, what is going on here with sge->laddr that
> >it can't be a void *?
> >
> siw_sge is defined in siw-abi.h. We make the address u64 to keep the ABI
> arch independent.

Eh? How does the siw-abi.h store a kernel pointer? Sounds like kernel
and user types are being mixed.

Jason