Re: [PATCH for-rc] RDMA/vmw_pvrdma: Return the correct opcode when creating WR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 07, 2019 at 06:53:24PM +0000, Adit Ranadive wrote:
> From: Adit Ranadive <aditr@xxxxxxxxxx>
> 
> Since the IB_WR_REG_MR opcode value changed, set some of the PVRDMA device
> opcodes explicitly.
> 
> Reported-by: Ruishuang Wang <ruishuangw@xxxxxxxxxx>
> Fixes: 9a59739bd01f ("IB/rxe: Revise the ib_wr_opcode enum")
> Cc: stable@xxxxxxxxxxxxxxx
> Reviewed-by: Bryan Tan <bryantan@xxxxxxxxxx>
> Reviewed-by: Ruishuang Wang <ruishuangw@xxxxxxxxxx>
> Reviewed-by: Vishnu Dasa <vdasa@xxxxxxxxxx>
> Signed-off-by: Adit Ranadive <aditr@xxxxxxxxxx>
> ---
>  drivers/infiniband/hw/vmw_pvrdma/pvrdma.h | 21 ++++++++++++++++++++-
>  1 file changed, 20 insertions(+), 1 deletion(-)

So naughty!! How many other places in this driver are assuming the
intenal IB constants are stable?

Did you audit for other cases?
 
> diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h
> index 42b8685c997e..c2ed09e66d2b 100644
> --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h
> +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h
> @@ -427,7 +427,26 @@ static inline enum ib_qp_state pvrdma_qp_state_to_ib(enum pvrdma_qp_state state)
>  
>  static inline enum pvrdma_wr_opcode ib_wr_opcode_to_pvrdma(enum ib_wr_opcode op)
>  {
> -	return (enum pvrdma_wr_opcode)op;
> +	switch (op) {
> +	case IB_WR_LSO:
> +		return PVRDMA_WR_LSO;
> +	case IB_WR_SEND_WITH_INV:
> +		return PVRDMA_WR_SEND_WITH_INV;
> +	case IB_WR_RDMA_READ_WITH_INV:
> +		return PVRDMA_WR_RDMA_READ_WITH_INV;
> +	case IB_WR_LOCAL_INV:
> +		return PVRDMA_WR_LOCAL_INV;
> +	case IB_WR_REG_MR:
> +		return PVRDMA_WR_FAST_REG_MR;
> +	case IB_WR_MASKED_ATOMIC_CMP_AND_SWP:
> +		return PVRDMA_WR_MASKED_ATOMIC_CMP_AND_SWP;
> +	case IB_WR_MASKED_ATOMIC_FETCH_AND_ADD:
> +		return PVRDMA_WR_MASKED_ATOMIC_FETCH_AND_ADD;
> +	case IB_WR_REG_SIG_MR:
> +		return PVRDMA_WR_REG_SIG_MR;
> +	default:
> +		return (enum pvrdma_wr_opcode)op;

No default, lets write them all out please.

Jason




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux