Re: [PATCH] RDMA/core: Fix a violation of the C standard

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

 



On Mon, Jul 02, 2018 at 10:28:22AM -0700, Bart Van Assche wrote:
> This patch avoids that sparse reports the following:
> 
> drivers/infiniband/core/uverbs_std_types_cq.c:206:1: error: directive in argument list
> drivers/infiniband/core/uverbs_std_types_cq.c:209:1: error: directive in argument list

Huh. Yes, that should be fixed..

> Additionally, this patch also avoids that sparse warns about defined
> but not used functions with CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI=n.

But I don't think this should be.. With kconfig We want to compile as
much code as possible and have the compiler eliminate it - so we get
stable compilation coverage..

> Fixes: 185899ee8d00 ("IB/uverbs: Enable ioctl() uAPI by default for new verbs")
> Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxx>
> Cc: Matan Barak <matanb@xxxxxxxxxxxx>
> Cc: Leon Romanovsky <leonro@xxxxxxxxxxxx>
>  drivers/infiniband/core/uverbs_std_types_cq.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/infiniband/core/uverbs_std_types_cq.c b/drivers/infiniband/core/uverbs_std_types_cq.c
> index 3d293d01afea..3fc1838d6cb1 100644
> +++ b/drivers/infiniband/core/uverbs_std_types_cq.c
> @@ -53,6 +53,7 @@ static int uverbs_free_cq(struct ib_uobject *uobject,
>  	return ret;
>  }
>  
> +#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI)
>  static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev,
>  						   struct ib_uverbs_file *file,
>  						   struct uverbs_attr_bundle *attrs)
> @@ -199,13 +200,18 @@ static DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_CQ_DESTROY,
>  	&UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_DESTROY_CQ_RESP,
>  			     UVERBS_ATTR_TYPE(struct ib_uverbs_destroy_cq_resp),
>  			     UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY)));
> +#endif
>  
> +#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI)
>  DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_CQ,
>  			    &UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object), 0,
>  						      uverbs_free_cq),
> -#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI)
>  			    &UVERBS_METHOD(UVERBS_METHOD_CQ_CREATE),
>  			    &UVERBS_METHOD(UVERBS_METHOD_CQ_DESTROY)
> -#endif
>  			   );
> -
> +#else
> +DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_CQ,
> +			    &UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object), 0,
> +						      uverbs_free_cq),
> +			   );
> +#endif

Humm.

I have a series that reworks these macros some more and eliminates the
need for DECLARE_UVERBS_NAMED_OBJECT and handles
CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI automatically.

However maybe that is still a bit far off..

Do you think this is urgent to fix?

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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