Commit 1aefe5c1 authored by Daisuke Matsuda's avatar Daisuke Matsuda Committed by Jason Gunthorpe
Browse files

RDMA/rxe: Prevent faulty rkey generation

If you create MRs more than 0x10000 times after loading the module,
responder starts to reply NAKs for RDMA/Atomic operations because of rkey
violation detected in check_rkey(). The root cause is that rkeys are
incremented each time a new MR is created and the value overflows into the
range reserved for MWs.

This commit also increases the value of RXE_MAX_MW that has been limited
unlike other parameters.

Fixes: 0994a1bc ("RDMA/rxe: Bump up default maximum values used via uverbs")
Link: https://lore.kernel.org/r/20221220080848.253785-2-matsuda-daisuke@fujitsu.com


Signed-off-by: default avatarDaisuke Matsuda <matsuda-daisuke@fujitsu.com>
Tested-by: default avatarLi Zhijian <lizhijian@fujitsu.com>
Reviewed-by: default avatarLi Zhijian <lizhijian@fujitsu.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 3a73746b
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -98,11 +98,11 @@ enum rxe_device_param {
	RXE_MAX_SRQ			= DEFAULT_MAX_VALUE - RXE_MIN_SRQ_INDEX,

	RXE_MIN_MR_INDEX		= 0x00000001,
	RXE_MAX_MR_INDEX		= DEFAULT_MAX_VALUE,
	RXE_MAX_MR			= DEFAULT_MAX_VALUE - RXE_MIN_MR_INDEX,
	RXE_MIN_MW_INDEX		= 0x00010001,
	RXE_MAX_MW_INDEX		= 0x00020000,
	RXE_MAX_MW			= 0x00001000,
	RXE_MAX_MR_INDEX		= DEFAULT_MAX_VALUE >> 1,
	RXE_MAX_MR			= RXE_MAX_MR_INDEX - RXE_MIN_MR_INDEX,
	RXE_MIN_MW_INDEX		= RXE_MAX_MR_INDEX + 1,
	RXE_MAX_MW_INDEX		= DEFAULT_MAX_VALUE,
	RXE_MAX_MW			= RXE_MAX_MW_INDEX - RXE_MIN_MW_INDEX,

	RXE_MAX_PKT_PER_ACK		= 64,