Re: [PATCH 00/27 5.10.y] Backport minmax.h updates from v6.17-rc6

David Laight
2025-09-20T10:21:27Z

On Fri, 19 Sep 2025 14:11:37 +0200
Christian König <christian.koenig@amd.com> wrote:

> On 19.09.25 12:17, Eliav Farber wrote:
> > This series includes a total of 27 patches, to align minmax.h of
> > v5.15.y with v6.17-rc6.
> >
> > The set consists of 24 commits that directly update minmax.h:
> > 1) 92d23c6e9415 ("overflow, tracing: Define the is_signed_type() macro
> > once")
> > 2) 5efcecd9a3b1 ("minmax: sanity check constant bounds when clamping")
> > 3) 2122e2a4efc2 ("minmax: clamp more efficiently by avoiding extra
> > comparison")
> > 4) f9bff0e31881 ("minmax: add in_range() macro")
> > 5) c952c748c7a9 ("minmax: Introduce {min,max}_array()")
> > 6) 5e57418a2031 ("minmax: deduplicate __unconst_integer_typeof()")
> > 7) f6e9d38f8eb0 ("minmax: fix header inclusions")
> > 8) d03eba99f5bf ("minmax: allow min()/max()/clamp() if the arguments
> > have the same signedness.")
> > 9) f4b84b2ff851 ("minmax: fix indentation of __cmp_once() and
> > __clamp_once()")
> > 10) 4ead534fba42 ("minmax: allow comparisons of 'int' against 'unsigned
> > char/short'")
> > 11) 867046cc7027 ("minmax: relax check to allow comparison between
> > unsigned arguments and signed constants")
> > 12) 3a7e02c040b1 ("minmax: avoid overly complicated constant
> > expressions in VM code")
> > 14) 017fa3e89187 ("minmax: simplify and clarify min_t()/max_t()
> > implementation")
> > 15) 1a251f52cfdc ("minmax: make generic MIN() and MAX() macros
> > available everywhere")
> > 18) dc1c8034e31b ("minmax: simplify min()/max()/clamp()
> > implementation")
> > 19) 22f546873149 ("minmax: improve macro expansion and type
> > checking")
> > 20) 21b136cc63d2 ("minmax: fix up min3() and max3() too")
> > 21) 71ee9b16251e ("minmax.h: add whitespace around operators and after
> > commas")
> > 22) 10666e992048 ("minmax.h: update some comments")
> > 23) b280bb27a9f7 ("minmax.h: reduce the #define expansion of min(),
> > max() and clamp()")
> > 24) a5743f32baec ("minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi
> > test in clamp()")
> > 25) c3939872ee4a ("minmax.h: move all the clamp() definitions after the
> > min/max() ones")
> > 26) 495bba17cdf9 ("minmax.h: simplify the variants of clamp()")
> > 27) 2b97aaf74ed5 ("minmax.h: remove some #defines that are only
> > expanded once")
> >
> > 2 prerequisite commits that adjust users of MIN and MAX macros (to
> > prevent compilation issues):
> > 13) 4477b39c32fd ("minmax: add a few more MIN_T/MAX_T users")
> > 17) cb04e8b1d2f2 ("minmax: don't use max() in situations that want a C
> > constant expression")
> >
> > 1 additional commit introduced to resolve a build failures during the
> > backport:
> > 16) lib: zstd: drop local MIN/MAX macros in favor of generic ones
> >
> > The primary motivation is to bring in commit (8).
> > In mainline, this change allows min()/max()/clamp() to accept mixed
> > argument types when both share the same signedness.
> > Backported patches to v5.10.y that use such forms trigger compiler
> > warnings, which in turn cause build failures when -Werror is enabled.
> >
> > Originaly I aligned 5.10.y to 5.15.y, but David Laight commented that I
> > need to pick up the later changes (from Linus) as well.
> >
> > Andy Shevchenko (2):
> > minmax: deduplicate __unconst_integer_typeof()
> > minmax: fix header inclusions
> >
> > Bart Van Assche (1):
> > overflow, tracing: Define the is_signed_type() macro once
> >
> > David Laight (11):
> > minmax: allow min()/max()/clamp() if the arguments have the same
> > signedness.
> > minmax: fix indentation of __cmp_once() and __clamp_once()
> > minmax: allow comparisons of 'int' against 'unsigned char/short'
> > minmax: relax check to allow comparison between unsigned arguments and
> > signed constants
> > 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
> >
> > Eliav Farber (1):
> > lib: zstd: drop local MIN/MAX macros in favor of generic ones
> >
> > Herve Codina (1):
> > minmax: Introduce {min,max}_array()
> >
> > Jason A. Donenfeld (2):
> > minmax: sanity check constant bounds when clamping
> > minmax: clamp more efficiently by avoiding extra comparison
> >
> > Linus Torvalds (8):
> > minmax: avoid overly complicated constant expressions in VM code
> > minmax: add a few more MIN_T/MAX_T users
> > minmax: simplify and clarify min_t()/max_t() implementation
> > minmax: make generic MIN() and MAX() macros available everywhere
> > 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
> >
> > Matthew Wilcox (Oracle) (1):
> > minmax: add in_range() macro
> >
> > arch/arm/mm/pageattr.c | 6 +-
> > arch/um/drivers/mconsole_user.c | 2 +
> > arch/x86/mm/pgtable.c | 2 +-
>
> > drivers/edac/sb_edac.c | 4 +-
> > drivers/edac/skx_common.h | 1 -
> > .../drm/amd/display/modules/hdcp/hdcp_ddc.c | 2 +
> > .../drm/amd/pm/powerplay/hwmgr/ppevvmath.h | 14 +-
> > .../drm/arm/display/include/malidp_utils.h | 2 +-
> > .../display/komeda/komeda_pipeline_state.c | 24 +-
> > drivers/gpu/drm/drm_color_mgmt.c | 2 +-
> > drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 6 -
> > drivers/gpu/drm/radeon/evergreen_cs.c | 2 +
> > drivers/hwmon/adt7475.c | 24 +-
> > drivers/input/touchscreen/cyttsp4_core.c | 2 +-
> > drivers/md/dm-integrity.c | 2 +-
> > drivers/media/dvb-frontends/stv0367_priv.h | 3 +
> > .../net/ethernet/chelsio/cxgb3/cxgb3_main.c | 18 +-
> > .../net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
> > drivers/net/fjes/fjes_main.c | 4 +-
> > drivers/nfc/pn544/i2c.c | 2 -
> > drivers/platform/x86/sony-laptop.c | 1 -
> > drivers/scsi/isci/init.c | 6 +-
>
> I do see the value to backport the infrastructure, but why are driver specific changes backported as well?

They will be about removing local definitions of MIN() and MAX() freeing
them up for simple implementations (usable as constant initialisers) and then
using them in places where the compound statements in min() and max() can't
be used.

Linus did all those changes - so he didn't have to wait for the maintainers
to apply the changes (etc).

David

>
> I mean the changes are most likely correct but also not valuable in anyway as bug fix.
>
> Regards,
> Christian.
>
> > .../pci/hive_isp_css_include/math_support.h | 5 -
> > fs/btrfs/misc.h | 2 -
> > fs/btrfs/tree-checker.c | 2 +-
> > fs/ext2/balloc.c | 2 -
> > fs/ext4/ext4.h | 2 -
> > fs/ufs/util.h | 6 -
> > include/linux/compiler.h | 15 +
> > include/linux/minmax.h | 267 ++++++++++++++----
> > include/linux/overflow.h | 1 -
> > include/linux/trace_events.h | 2 -
> > kernel/trace/preemptirq_delay_test.c | 2 -
> > lib/btree.c | 1 -
> > lib/decompress_unlzma.c | 2 +
> > lib/logic_pio.c | 3 -
> > lib/vsprintf.c | 2 +-
> > lib/zstd/zstd_internal.h | 2 -
> > mm/zsmalloc.c | 1 -
> > net/ipv4/proc.c | 2 +-
> > net/ipv6/proc.c | 2 +-
> > net/netfilter/nf_nat_core.c | 6 +-
> > net/tipc/core.h | 2 +-
> > net/tipc/link.c | 10 +-
> > 44 files changed, 306 insertions(+), 164 deletions(-)
> >
>
>