diff mbox series

[v2] RDMA/srp (gcc13): move large values to a new enum

Message ID 20221212120411.13750-1-jirislaby@kernel.org (mailing list archive)
State Accepted
Headers show
Series [v2] RDMA/srp (gcc13): move large values to a new enum | expand

Commit Message

Jiri Slaby Dec. 12, 2022, 12:04 p.m. UTC
Since gcc13, each member of an enum has the same type as the enum [1]. And
that is inherited from its members. Provided these two:
  SRP_TAG_NO_REQ        = ~0U,
  SRP_TAG_TSK_MGMT	= 1U << 31
all other members are unsigned ints.

Esp. with SRP_MAX_SGE and SRP_TSK_MGMT_SQ_SIZE and their use in min(),
this results in the following warnings:
  include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast
  drivers/infiniband/ulp/srp/ib_srp.c:563:42: note: in expansion of macro 'min'

  include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast
  drivers/infiniband/ulp/srp/ib_srp.c:2369:27: note: in expansion of macro 'min'

So move the large values away to a separate enum, so that they don't
affect other members.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36113

Cc: Martin Liska <mliska@suse.cz>
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Leon Romanovsky <leon@kernel.org>
Cc: linux-rdma@vger.kernel.org
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
---

Notes:
    [v2] move to a new enum instead of min_t()s (Bart)

 drivers/infiniband/ulp/srp/ib_srp.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Comments

Bart Van Assche Dec. 12, 2022, 7:28 p.m. UTC | #1
On 12/12/22 04:04, Jiri Slaby (SUSE) wrote:
> Since gcc13, each member of an enum has the same type as the enum [1]. And
> that is inherited from its members. Provided these two:
>    SRP_TAG_NO_REQ        = ~0U,
>    SRP_TAG_TSK_MGMT	= 1U << 31
> all other members are unsigned ints.
> 
> Esp. with SRP_MAX_SGE and SRP_TSK_MGMT_SQ_SIZE and their use in min(),
> this results in the following warnings:
>    include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast
>    drivers/infiniband/ulp/srp/ib_srp.c:563:42: note: in expansion of macro 'min'
> 
>    include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast
>    drivers/infiniband/ulp/srp/ib_srp.c:2369:27: note: in expansion of macro 'min'
> 
> So move the large values away to a separate enum, so that they don't
> affect other members.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Leon Romanovsky Dec. 29, 2022, 7:10 a.m. UTC | #2
On Mon, 12 Dec 2022 13:04:11 +0100, Jiri Slaby (SUSE) wrote:
> Since gcc13, each member of an enum has the same type as the enum [1]. And
> that is inherited from its members. Provided these two:
>   SRP_TAG_NO_REQ        = ~0U,
>   SRP_TAG_TSK_MGMT	= 1U << 31
> all other members are unsigned ints.
> 
> Esp. with SRP_MAX_SGE and SRP_TSK_MGMT_SQ_SIZE and their use in min(),
> this results in the following warnings:
>   include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast
>   drivers/infiniband/ulp/srp/ib_srp.c:563:42: note: in expansion of macro 'min'
> 
> [...]

Applied, thanks!

[1/1] RDMA/srp (gcc13): move large values to a new enum
      https://git.kernel.org/rdma/rdma/c/fb5b88f5b78192

Best regards,
diff mbox series

Patch

diff --git a/drivers/infiniband/ulp/srp/ib_srp.h b/drivers/infiniband/ulp/srp/ib_srp.h
index 00b0068fda20..5d94db453df3 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.h
+++ b/drivers/infiniband/ulp/srp/ib_srp.h
@@ -62,9 +62,6 @@  enum {
 	SRP_DEFAULT_CMD_SQ_SIZE = SRP_DEFAULT_QUEUE_SIZE - SRP_RSP_SQ_SIZE -
 				  SRP_TSK_MGMT_SQ_SIZE,
 
-	SRP_TAG_NO_REQ		= ~0U,
-	SRP_TAG_TSK_MGMT	= 1U << 31,
-
 	SRP_MAX_PAGES_PER_MR	= 512,
 
 	SRP_MAX_ADD_CDB_LEN	= 16,
@@ -79,6 +76,11 @@  enum {
 				  sizeof(struct srp_imm_buf),
 };
 
+enum {
+	SRP_TAG_NO_REQ		= ~0U,
+	SRP_TAG_TSK_MGMT	= BIT(31),
+};
+
 enum srp_target_state {
 	SRP_TARGET_SCANNING,
 	SRP_TARGET_LIVE,