linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/11 6.1.y] Backport minmax.h updates from v6.17-rc7
@ 2025-10-03 12:15 Eliav Farber
  2025-10-03 12:15 ` [PATCH v4 01/11 6.1.y] minmax: don't use max() in situations that want a C constant expression Eliav Farber
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Eliav Farber @ 2025-10-03 12:15 UTC (permalink / raw)
  To: gregkh, kenneth.feng, alexander.deucher, christian.koenig,
	airlied, simona, linus.walleij, dmitry.torokhov, tglx, wens,
	jernej.skrabec, samuel, agk, snitzer, mpatocka, clm, dsterba,
	luc.vanoostenryck, pmladek, rostedt, andriy.shevchenko, linux,
	senozhatsky, akpm, lijo.lazar, asad.kamal, kevinyang.wang,
	David.Laight, amd-gfx, dri-devel, linux-kernel, linux-input,
	linux-arm-kernel, linux-sunxi, dm-devel, linux-btrfs,
	linux-sparse, stable, farbere

This series backports 11 patches to update minmax.h in the 6.1.y branch,
aligning it with v6.17-rc7.

The ultimate goal is to synchronize all longterm branches so that they
include the full set of minmax.h changes (6.12.y and 6.6.y were already
backported by me and are now aligned).

The key motivation is to bring in commit d03eba99f5bf ("minmax: allow
min()/max()/clamp() if the arguments have the same signedness"), which
is missing in older kernels.

In mainline, this change enables min()/max()/clamp() to accept mixed
argument types, provided both have the same signedness. Without it,
backported patches that use these forms may trigger compiler warnings,
which escalate to build failures when -Werror is enabled.

Changes in v4:
- Just swap the order of the first 2 patches in this chain, because
  commit cb04e8b1d2f2 ("minmax: don't use max() in situations that want
  a C constant expression") should come before commit dc1c8034e31b
  ("minmax: simplify min()/max()/clamp() implementation").

Changes in v3:
- v2 included 13 patches:
  https://lore.kernel.org/stable/20250929183358.18982-1-farbere@amazon.com/
- First 2 were accepted and are part of 6.1.155.
- 3rd caused build in drivers/md/ to fail:

In file included from ./include/linux/container_of.h:5,
                 from ./include/linux/list.h:5,
                 from ./include/linux/wait.h:7,
                 from ./include/linux/mempool.h:8,
                 from ./include/linux/bio.h:8,
                 from drivers/md/dm-bio-record.h:10,
                 from drivers/md/dm-integrity.c:9:
drivers/md/dm-integrity.c: In function ‘integrity_metadata’:
drivers/md/dm-integrity.c:131:105: error: ISO C90 forbids variable length array ‘checksums_onstack’ [-Werror=vla]
  131 | #define MAX_TAG_SIZE                    (JOURNAL_SECTOR_DATA - JOURNAL_MAC_PER_SECTOR - offsetof(struct journal_entry, last_bytes[MAX_SECTORS_PER_BLOCK]))
      |                                                                                                         ^~~~~~~~~~~~~
./include/linux/build_bug.h:78:56: note: in definition of macro ‘__static_assert’
   78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
      |                                                        ^~~~
./include/linux/minmax.h:56:9: note: in expansion of macro ‘static_assert’
   56 |         static_assert(__types_ok(x, y, ux, uy),         \
      |         ^~~~~~~~~~~~~
./include/linux/minmax.h:41:31: note: in expansion of macro ‘__is_noneg_int’
   41 |          __is_noneg_int(x) || __is_noneg_int(y))
      |                               ^~~~~~~~~~~~~~
./include/linux/minmax.h:56:23: note: in expansion of macro ‘__types_ok’
   56 |         static_assert(__types_ok(x, y, ux, uy),         \
      |                       ^~~~~~~~~~
./include/linux/minmax.h:61:9: note: in expansion of macro ‘__careful_cmp_once’
   61 |         __careful_cmp_once(op, x, y, __UNIQUE_ID(x_), __UNIQUE_ID(y_))
      |         ^~~~~~~~~~~~~~~~~~
./include/linux/minmax.h:92:25: note: in expansion of macro ‘__careful_cmp’
   92 | #define max(x, y)       __careful_cmp(max, x, y)
      |                         ^~~~~~~~~~~~~
drivers/md/dm-integrity.c:1797:40: note: in expansion of macro ‘max’
 1797 |                 char checksums_onstack[max((size_t)HASH_MAX_DIGESTSIZE, MAX_TAG_SIZE)];
      |                                        ^~~
drivers/md/dm-integrity.c:131:89: note: in expansion of macro ‘offsetof’
  131 | #define MAX_TAG_SIZE                    (JOURNAL_SECTOR_DATA - JOURNAL_MAC_PER_SECTOR - offsetof(struct journal_entry, last_bytes[MAX_SECTORS_PER_BLOCK]))
      |                                                                                         ^~~~~~~~
drivers/md/dm-integrity.c:1797:73: note: in expansion of macro ‘MAX_TAG_SIZE’
 1797 |                 char checksums_onstack[max((size_t)HASH_MAX_DIGESTSIZE, MAX_TAG_SIZE)];
      |                                                                         ^~~~~~~~~~~~

- The build was fixed in the second patch of this series.

Changes in v2:
- v1 included 19 patches:
  https://lore.kernel.org/stable/20250924202320.32333-1-farbere@amazon.com/
- First 6 were pushed to the stable-tree.
- 7th cauded amd driver's build to fail.
- This change fixes it.
- Modified files:
   drivers/gpu/drm/amd/amdgpu/amdgpu.h
   drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
   drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c

David Laight (7):
  minmax.h: add whitespace around operators and after commas
  minmax.h: update some comments
  minmax.h: reduce the #define expansion of min(), max() and clamp()
  minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp()
  minmax.h: move all the clamp() definitions after the min/max() ones
  minmax.h: simplify the variants of clamp()
  minmax.h: remove some #defines that are only expanded once

Linus Torvalds (4):
  minmax: don't use max() in situations that want a C constant
    expression
  minmax: simplify min()/max()/clamp() implementation
  minmax: improve macro expansion and type checking
  minmax: fix up min3() and max3() too

 drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c   |   2 +-
 drivers/input/touchscreen/cyttsp4_core.c |   2 +-
 drivers/irqchip/irq-sun6i-r.c            |   2 +-
 drivers/md/dm-integrity.c                |   2 +-
 fs/btrfs/tree-checker.c                  |   2 +-
 include/linux/compiler.h                 |   9 +
 include/linux/minmax.h                   | 222 +++++++++++++----------
 lib/vsprintf.c                           |   2 +-
 8 files changed, 143 insertions(+), 100 deletions(-)

-- 
2.47.3


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-10-03 12:18 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-03 12:15 [PATCH v4 00/11 6.1.y] Backport minmax.h updates from v6.17-rc7 Eliav Farber
2025-10-03 12:15 ` [PATCH v4 01/11 6.1.y] minmax: don't use max() in situations that want a C constant expression Eliav Farber
2025-10-03 12:15 ` [PATCH v4 02/11 6.1.y] minmax: simplify min()/max()/clamp() implementation Eliav Farber
2025-10-03 12:15 ` [PATCH v4 03/11 6.1.y] minmax: improve macro expansion and type checking Eliav Farber
2025-10-03 12:15 ` [PATCH v4 04/11 6.1.y] minmax: fix up min3() and max3() too Eliav Farber
2025-10-03 12:15 ` [PATCH v4 05/11 6.1.y] minmax.h: add whitespace around operators and after commas Eliav Farber
2025-10-03 12:15 ` [PATCH v4 06/11 6.1.y] minmax.h: update some comments Eliav Farber
2025-10-03 12:15 ` [PATCH v4 07/11 6.1.y] minmax.h: reduce the #define expansion of min(), max() and clamp() Eliav Farber
2025-10-03 12:15 ` [PATCH v4 08/11 6.1.y] minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp() Eliav Farber
2025-10-03 12:15 ` [PATCH v4 09/11 6.1.y] minmax.h: move all the clamp() definitions after the min/max() ones Eliav Farber
2025-10-03 12:15 ` [PATCH v4 10/11 6.1.y] minmax.h: simplify the variants of clamp() Eliav Farber
2025-10-03 12:15 ` [PATCH v4 11/11 6.1.y] minmax.h: remove some #defines that are only expanded once Eliav Farber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).