[PATCH v10 rdma-next] RDMA: Change capability fields in ib_device_attr from int to u32

Andy Shevchenko andriy.shevchenko at linux.intel.com
Thu Jul 9 01:31:55 PDT 2026


On Wed, Jul 08, 2026 at 10:51:29PM -0700, Erni Sri Satya Vennela wrote:
> The capability counter fields in struct ib_device_attr are declared
> as signed int, but these values are inherently non-negative. Drivers
> maintain their cached caps as u32 and assign them directly into these
> int fields; if a cap exceeds INT_MAX the implicit narrowing yields a
> negative value visible to the IB core.
> 
> Change the signed int capability fields to u32 to match the
> underlying nature of the data. Also update consumers across the IB
> core, ULPs, NVMe-oF target, RDS, and NFS/RDMA so the new u32 values
> are not forced back through signed int or u8 via min()/min_t() or
> narrowing local variables.
> 
> The nvmet-rdma consumer of max_srq clamps it against
> ib_device.num_comp_vectors, which stays a signed int, so that site
> uses min_t() instead of min() to handle the signed/unsigned mismatch.

Assuming the functionality is left untouched, from code perspective LGTM,
Reviewed-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>

...

>  int ipoib_cm_dev_init(struct net_device *dev)
>  {
>  	struct ipoib_dev_priv *priv = ipoib_priv(dev);
> -	int max_srq_sge, i;
> +	u32 max_srq_sge;
> +	int i;
>  	u8 addr;

This can keep the reversed xmas tree ordering.

...

>  static int srq_size_set(const char *val, const struct kernel_param *kp)
>  {
> -	int n = 0, ret;
> +	unsigned int n;
> +	int ret;
>  
> -	ret = kstrtoint(val, 10, &n);
> +	ret = kstrtouint(val, 10, &n);
>  	if (ret != 0 || n < 256)
>  		return -EINVAL;

Side note (perhaps another patch?)

	ret = kstrtouint(val, 10, &n);
	if (ret)
		return ret;
	if (n < 256)
		return -ERANGE,

> -	return param_set_int(val, kp);
> +	return param_set_uint(val, kp);
>  }

...

Have you considered also replacing min_not_zero() or do some refactoring
around there?

-- 
With Best Regards,
Andy Shevchenko





More information about the Linux-nvme mailing list