All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Farber, Eliav" <farbere@amazon.com>
To: Kuniyuki Iwashima <kuni1840@gmail.com>
Cc: "davem@davemloft.net" <davem@davemloft.net>,
	"edumazet@google.com" <edumazet@google.com>,
	"kuba@kernel.org" <kuba@kernel.org>,
	"Iwashima, Kuniyuki" <kuniyu@amazon.co.jp>,
	"kuznet@ms2.inr.ac.ru" <kuznet@ms2.inr.ac.ru>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"sashal@kernel.org" <sashal@kernel.org>,
	"yoshfuji@linux-ipv6.org" <yoshfuji@linux-ipv6.org>
Subject: RE: [PATCH] net/ipv4: fix type mismatch in inet_ehash_locks_alloc() causing build failure
Date: Mon, 9 Jun 2025 04:31:17 +0000	[thread overview]
Message-ID: <d5c2130c18b74a57bb23c4f37b901d2c@amazon.com> (raw)

> From: Kuniyuki Iwashima <kuni1840@gmail.com>
> Date: Sun,  8 Jun 2025 13:11:51 -0700
> > From: Eliav Farber <farbere@amazon.com>
> > Date: Sun, 8 Jun 2025 06:07:26 +0000
> > > Fix compilation warning:
> > >
> > > In file included from ./include/linux/kernel.h:15,
> > >                  from ./include/linux/list.h:9,
> > >                  from ./include/linux/module.h:12,
> > >                  from net/ipv4/inet_hashtables.c:12:
> > > net/ipv4/inet_hashtables.c: In function ‘inet_ehash_locks_alloc’:
> > > ./include/linux/minmax.h:20:35: warning: comparison of distinct pointer types lacks a cast
> > >    20 |         (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
> > >       |                                   ^~
> > > ./include/linux/minmax.h:26:18: note: in expansion of macro ‘__typecheck’
> > >    26 |                 (__typecheck(x, y) && __no_side_effects(x, y))
> > >       |                  ^~~~~~~~~~~
> > > ./include/linux/minmax.h:36:31: note: in expansion of macro ‘__safe_cmp’
> > >    36 |         __builtin_choose_expr(__safe_cmp(x, y), \
> > >       |                               ^~~~~~~~~~
> > > ./include/linux/minmax.h:52:25: note: in expansion of macro ‘__careful_cmp’
> > >    52 | #define max(x, y)       __careful_cmp(x, y, >)
> > >       |                         ^~~~~~~~~~~~~
> > > net/ipv4/inet_hashtables.c:946:19: note: in expansion of macro ‘max’
> > >   946 |         nblocks = max(nblocks, num_online_nodes() * PAGE_SIZE / locksz);
> > >       |                   ^~~
> > >   CC      block/badblocks.o
> > >
> > > When warnings are treated as errors, this causes the build to fail.
> > >
> > > The issue is a type mismatch between the operands passed to the max()
> > > macro. Here, nblocks is an unsigned int, while the expression
> > > num_online_nodes() * PAGE_SIZE / locksz is promoted to unsigned long.
> > >
> > > This happens because:
> > >  - num_online_nodes() returns int
> > >  - PAGE_SIZE is typically defined as an unsigned long (depending on the
> > >    architecture)
> > >  - locksz is unsigned int
> > >
> > > The resulting arithmetic expression is promoted to unsigned long.
> > >
> > > Thus, the max() macro compares values of different types: unsigned int
> > > vs unsigned long.
> > >
> > > This issue was introduced in commit b53d6e9525af ("tcp: bring back NUMA
> > > dispersion in inet_ehash_locks_alloc()") during the update from kernel
> > > v5.10.237 to v5.10.238.
> >
> > Please use the upstream SHA1, f8ece40786c9.
Fixed in V2

> > > It does not exist in newer kernel branches (e.g., v5.15.185 and all 6.x
> > > branches), because they include commit d53b5d862acd ("minmax: allow
> >
> > Same here, d03eba99f5bf.
Fixed in V2

> > But why not backport it to stable instead ?
>
> I just checked the 5.10.238 thread.
> https://lore.kernel.org/stable/2025060412-cursor-navigate-126d@gregkh/
>
> ---8<---
> > > For both of these, I'll just let them be as they are ok, it's just the
> > > mess of our min/max macro unwinding causes these issues.
> > >
> > > Unless they really bother someone, and in that case, a patch to add the
> > > correct type to the backport to make the noise go away would be greatly
> > > appreciated.
> >
> > Yeah that's a reasonable resolution, I will try to track down the missing
> > patches for minmax.h so we are warning free for the stable kernels.
>
> I tried in the past, it's non-trivial.  What would be easier is to just
> properly cast the variables in the places where this warning is showing
> up to get rid of that warning.  We've done that in some backports in the
> past as well.
> ---8<---
>
> So this should be fixed up in the backport, and I guess this patch
> targeted the stable trees ?
This patch is for v5.10.238. Newer kernels don't need it.

> If so, please clarify that by specifying the stable version in the
> subject and CCing the stable mainling list:
>
>   Subject: [PATCH 5.10.y] tcp: ...
>   Cc: stable@vger.kernel.org, ...
Done in v2

             reply	other threads:[~2025-06-09  4:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-09  4:31 Farber, Eliav [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-06-08  6:07 [PATCH] net/ipv4: fix type mismatch in inet_ehash_locks_alloc() causing build failure Eliav Farber
2025-06-08 20:11 ` Kuniyuki Iwashima
2025-06-08 20:30   ` Kuniyuki Iwashima

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d5c2130c18b74a57bb23c4f37b901d2c@amazon.com \
    --to=farbere@amazon.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=kuni1840@gmail.com \
    --cc=kuniyu@amazon.co.jp \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=sashal@kernel.org \
    --cc=yoshfuji@linux-ipv6.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.