From df52aae3b44924688b6ff221832fadaf2e197928 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 30 Sep 2025 16:26:41 +0200 Subject: [PATCH] 6.1-stable patches added patches: minmax-make-generic-min-and-max-macros-available-everywhere.patch --- ...max-add-a-few-more-min_t-max_t-users.patch | 11 +- ...-and-max-macros-available-everywhere.patch | 418 ++++++++++++++++++ ...d-clarify-min_t-max_t-implementation.patch | 12 +- queue-6.1/series | 5 +- 4 files changed, 429 insertions(+), 17 deletions(-) create mode 100644 queue-6.1/minmax-make-generic-min-and-max-macros-available-everywhere.patch diff --git a/queue-6.1/minmax-add-a-few-more-min_t-max_t-users.patch b/queue-6.1/minmax-add-a-few-more-min_t-max_t-users.patch index 22885377c9..4a98a6ed87 100644 --- a/queue-6.1/minmax-add-a-few-more-min_t-max_t-users.patch +++ b/queue-6.1/minmax-add-a-few-more-min_t-max_t-users.patch @@ -1,14 +1,11 @@ -From prvs=3555e8f33=farbere@amazon.com Wed Sep 24 22:29:32 2025 -From: Eliav Farber -Date: Wed, 24 Sep 2025 20:23:09 +0000 +From 4477b39c32fdc03363affef4b11d48391e6dc9ff Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Sun, 28 Jul 2024 13:03:48 -0700 Subject: minmax: add a few more MIN_T/MAX_T users -To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , -Cc: Linus Torvalds , David Laight , Lorenzo Stoakes -Message-ID: <20250924202320.32333-9-farbere@amazon.com> From: Linus Torvalds -[ Upstream commit 4477b39c32fdc03363affef4b11d48391e6dc9ff ] +commit 4477b39c32fdc03363affef4b11d48391e6dc9ff upstream. Commit 3a7e02c040b1 ("minmax: avoid overly complicated constant expressions in VM code") added the simpler MIN_T/MAX_T macros in order diff --git a/queue-6.1/minmax-make-generic-min-and-max-macros-available-everywhere.patch b/queue-6.1/minmax-make-generic-min-and-max-macros-available-everywhere.patch new file mode 100644 index 0000000000..e1b6e2ce56 --- /dev/null +++ b/queue-6.1/minmax-make-generic-min-and-max-macros-available-everywhere.patch @@ -0,0 +1,418 @@ +From stable+bounces-181976-greg=kroah.com@vger.kernel.org Mon Sep 29 20:34:50 2025 +From: Eliav Farber +Date: Mon, 29 Sep 2025 18:33:46 +0000 +Subject: minmax: make generic MIN() and MAX() macros available everywhere +To: , , , , , , , , +Cc: Linus Torvalds , David Laight , Lorenzo Stoakes +Message-ID: <20250929183358.18982-2-farbere@amazon.com> + +From: Linus Torvalds + +[ Upstream commit 1a251f52cfdc417c84411a056bc142cbd77baef4 ] + +This just standardizes the use of MIN() and MAX() macros, with the very +traditional semantics. The goal is to use these for C constant +expressions and for top-level / static initializers, and so be able to +simplify the min()/max() macros. + +These macro names were used by various kernel code - they are very +traditional, after all - and all such users have been fixed up, with a +few different approaches: + + - trivial duplicated macro definitions have been removed + + Note that 'trivial' here means that it's obviously kernel code that + already included all the major kernel headers, and thus gets the new + generic MIN/MAX macros automatically. + + - non-trivial duplicated macro definitions are guarded with #ifndef + + This is the "yes, they define their own versions, but no, the include + situation is not entirely obvious, and maybe they don't get the + generic version automatically" case. + + - strange use case #1 + + A couple of drivers decided that the way they want to describe their + versioning is with + + #define MAJ 1 + #define MIN 2 + #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) + + which adds zero value and I just did my Alexander the Great + impersonation, and rewrote that pointless Gordian knot as + + #define DRV_VERSION "1.2" + + instead. + + - strange use case #2 + + A couple of drivers thought that it's a good idea to have a random + 'MIN' or 'MAX' define for a value or index into a table, rather than + the traditional macro that takes arguments. + + These values were re-written as C enum's instead. The new + function-line macros only expand when followed by an open + parenthesis, and thus don't clash with enum use. + +Happily, there weren't really all that many of these cases, and a lot of +users already had the pattern of using '#ifndef' guarding (or in one +case just using '#undef MIN') before defining their own private version +that does the same thing. I left such cases alone. + +Cc: David Laight +Cc: Lorenzo Stoakes +Signed-off-by: Linus Torvalds +Signed-off-by: Eliav Farber +Signed-off-by: Greg Kroah-Hartman +--- +v2: + - Add missing #ifndef guards around MIN/MAX macro definitions + to avoid redefinition errors in: + * 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 + * drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c + + arch/um/drivers/mconsole_user.c | 2 + drivers/edac/skx_common.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 + drivers/gpu/drm/amd/display/modules/hdcp/hdcp_ddc.c | 2 + drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppevvmath.h | 14 ++++- + drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 2 + drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 3 + + drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 3 + + drivers/gpu/drm/radeon/evergreen_cs.c | 2 + drivers/hwmon/adt7475.c | 24 +++++----- + drivers/media/dvb-frontends/stv0367_priv.h | 3 + + 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 -- + drivers/staging/media/atomisp/pci/hive_isp_css_include/math_support.h | 5 -- + include/linux/minmax.h | 2 + kernel/trace/preemptirq_delay_test.c | 2 + lib/btree.c | 1 + lib/decompress_unlzma.c | 2 + mm/zsmalloc.c | 1 + tools/testing/selftests/seccomp/seccomp_bpf.c | 2 + tools/testing/selftests/vm/mremap_test.c | 2 + 23 files changed, 51 insertions(+), 37 deletions(-) + +--- a/arch/um/drivers/mconsole_user.c ++++ b/arch/um/drivers/mconsole_user.c +@@ -71,7 +71,9 @@ static struct mconsole_command *mconsole + return NULL; + } + ++#ifndef MIN + #define MIN(a,b) ((a)<(b) ? (a):(b)) ++#endif + + #define STRINGX(x) #x + #define STRING(x) STRINGX(x) +--- a/drivers/edac/skx_common.h ++++ b/drivers/edac/skx_common.h +@@ -45,7 +45,6 @@ + #define I10NM_NUM_CHANNELS MAX(I10NM_NUM_DDR_CHANNELS, I10NM_NUM_HBM_CHANNELS) + #define I10NM_NUM_DIMMS MAX(I10NM_NUM_DDR_DIMMS, I10NM_NUM_HBM_DIMMS) + +-#define MAX(a, b) ((a) > (b) ? (a) : (b)) + #define NUM_IMC MAX(SKX_NUM_IMC, I10NM_NUM_IMC) + #define NUM_CHANNELS MAX(SKX_NUM_CHANNELS, I10NM_NUM_CHANNELS) + #define NUM_DIMMS MAX(SKX_NUM_DIMMS, I10NM_NUM_DIMMS) +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -1258,7 +1258,9 @@ int emu_soc_asic_init(struct amdgpu_devi + + #define amdgpu_inc_vram_lost(adev) atomic_inc(&((adev)->vram_lost_counter)); + ++#ifndef MIN + #define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) ++#endif + + /* Common functions */ + bool amdgpu_device_has_job_running(struct amdgpu_device *adev); +--- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_ddc.c ++++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_ddc.c +@@ -25,7 +25,9 @@ + + #include "hdcp.h" + ++#ifndef MIN + #define MIN(a, b) ((a) < (b) ? (a) : (b)) ++#endif + #define HDCP_I2C_ADDR 0x3a /* 0x74 >> 1*/ + #define KSV_READ_SIZE 0xf /* 0x6803b - 0x6802c */ + #define HDCP_MAX_AUX_TRANSACTION_SIZE 16 +--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppevvmath.h ++++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppevvmath.h +@@ -22,12 +22,18 @@ + */ + #include + +-#define SHIFT_AMOUNT 16 /* We multiply all original integers with 2^SHIFT_AMOUNT to get the fInt representation */ ++enum ppevvmath_constants { ++ /* We multiply all original integers with 2^SHIFT_AMOUNT to get the fInt representation */ ++ SHIFT_AMOUNT = 16, + +-#define PRECISION 5 /* Change this value to change the number of decimal places in the final output - 5 is a good default */ ++ /* Change this value to change the number of decimal places in the final output - 5 is a good default */ ++ PRECISION = 5, + +-#define SHIFTED_2 (2 << SHIFT_AMOUNT) +-#define MAX (1 << (SHIFT_AMOUNT - 1)) - 1 /* 32767 - Might change in the future */ ++ SHIFTED_2 = (2 << SHIFT_AMOUNT), ++ ++ /* 32767 - Might change in the future */ ++ MAX = (1 << (SHIFT_AMOUNT - 1)) - 1, ++}; + + /* ------------------------------------------------------------------------------- + * NEW TYPE - fINT +--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c ++++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +@@ -2081,7 +2081,9 @@ static int sienna_cichlid_display_disabl + return ret; + } + ++#ifndef MAX + #define MAX(a, b) ((a) > (b) ? (a) : (b)) ++#endif + + static int sienna_cichlid_update_pcie_parameters(struct smu_context *smu, + uint8_t pcie_gen_cap, +--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c ++++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +@@ -1255,7 +1255,10 @@ static int smu_v13_0_0_get_thermal_tempe + return 0; + } + ++#ifndef MAX + #define MAX(a, b) ((a) > (b) ? (a) : (b)) ++#endif ++ + static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu, + void **table) + { +--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c ++++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +@@ -1263,7 +1263,10 @@ static int smu_v13_0_7_get_thermal_tempe + return 0; + } + ++#ifndef MAX + #define MAX(a, b) ((a) > (b) ? (a) : (b)) ++#endif ++ + static ssize_t smu_v13_0_7_get_gpu_metrics(struct smu_context *smu, + void **table) + { +--- a/drivers/gpu/drm/radeon/evergreen_cs.c ++++ b/drivers/gpu/drm/radeon/evergreen_cs.c +@@ -33,8 +33,10 @@ + #include "evergreen_reg_safe.h" + #include "cayman_reg_safe.h" + ++#ifndef MIN + #define MAX(a,b) (((a)>(b))?(a):(b)) + #define MIN(a,b) (((a)<(b))?(a):(b)) ++#endif + + #define REG_SAFE_BM_SIZE ARRAY_SIZE(evergreen_reg_safe_bm) + +--- a/drivers/hwmon/adt7475.c ++++ b/drivers/hwmon/adt7475.c +@@ -23,23 +23,23 @@ + #include + + /* Indexes for the sysfs hooks */ +- +-#define INPUT 0 +-#define MIN 1 +-#define MAX 2 +-#define CONTROL 3 +-#define OFFSET 3 +-#define AUTOMIN 4 +-#define THERM 5 +-#define HYSTERSIS 6 +- ++enum adt_sysfs_id { ++ INPUT = 0, ++ MIN = 1, ++ MAX = 2, ++ CONTROL = 3, ++ OFFSET = 3, // Dup ++ AUTOMIN = 4, ++ THERM = 5, ++ HYSTERSIS = 6, + /* + * These are unique identifiers for the sysfs functions - unlike the + * numbers above, these are not also indexes into an array + */ ++ ALARM = 9, ++ FAULT = 10, ++}; + +-#define ALARM 9 +-#define FAULT 10 + + /* 7475 Common Registers */ + +--- a/drivers/media/dvb-frontends/stv0367_priv.h ++++ b/drivers/media/dvb-frontends/stv0367_priv.h +@@ -25,8 +25,11 @@ + #endif + + /* MACRO definitions */ ++#ifndef MIN + #define MAX(X, Y) ((X) >= (Y) ? (X) : (Y)) + #define MIN(X, Y) ((X) <= (Y) ? (X) : (Y)) ++#endif ++ + #define INRANGE(X, Y, Z) \ + ((((X) <= (Y)) && ((Y) <= (Z))) || \ + (((Z) <= (Y)) && ((Y) <= (X))) ? 1 : 0) +--- a/drivers/net/fjes/fjes_main.c ++++ b/drivers/net/fjes/fjes_main.c +@@ -14,9 +14,7 @@ + #include "fjes.h" + #include "fjes_trace.h" + +-#define MAJ 1 +-#define MIN 2 +-#define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) ++#define DRV_VERSION "1.2" + #define DRV_NAME "fjes" + char fjes_driver_name[] = DRV_NAME; + char fjes_driver_version[] = DRV_VERSION; +--- a/drivers/nfc/pn544/i2c.c ++++ b/drivers/nfc/pn544/i2c.c +@@ -126,8 +126,6 @@ struct pn544_i2c_fw_secure_blob { + #define PN544_FW_CMD_RESULT_COMMAND_REJECTED 0xE0 + #define PN544_FW_CMD_RESULT_CHUNK_ERROR 0xE6 + +-#define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) +- + #define PN544_FW_WRITE_BUFFER_MAX_LEN 0x9f7 + #define PN544_FW_I2C_MAX_PAYLOAD PN544_HCI_I2C_LLC_MAX_SIZE + #define PN544_FW_I2C_WRITE_FRAME_HEADER_LEN 8 +--- a/drivers/platform/x86/sony-laptop.c ++++ b/drivers/platform/x86/sony-laptop.c +@@ -757,7 +757,6 @@ static union acpi_object *__call_snc_met + return result; + } + +-#define MIN(a, b) (a > b ? b : a) + static int sony_nc_buffer_call(acpi_handle handle, char *name, u64 *value, + void *buffer, size_t buflen) + { +--- a/drivers/scsi/isci/init.c ++++ b/drivers/scsi/isci/init.c +@@ -65,11 +65,7 @@ + #include "task.h" + #include "probe_roms.h" + +-#define MAJ 1 +-#define MIN 2 +-#define BUILD 0 +-#define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \ +- __stringify(BUILD) ++#define DRV_VERSION "1.2.0" + + MODULE_VERSION(DRV_VERSION); + +--- a/drivers/staging/media/atomisp/pci/hive_isp_css_include/math_support.h ++++ b/drivers/staging/media/atomisp/pci/hive_isp_css_include/math_support.h +@@ -31,11 +31,6 @@ + /* A => B */ + #define IMPLIES(a, b) (!(a) || (b)) + +-/* for preprocessor and array sizing use MIN and MAX +- otherwise use min and max */ +-#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +-#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +- + #define ROUND_DIV(a, b) (((b) != 0) ? ((a) + ((b) >> 1)) / (b) : 0) + #define CEIL_DIV(a, b) (((b) != 0) ? ((a) + (b) - 1) / (b) : 0) + #define CEIL_MUL(a, b) (CEIL_DIV(a, b) * (b)) +--- a/include/linux/minmax.h ++++ b/include/linux/minmax.h +@@ -274,6 +274,8 @@ static inline bool in_range32(u32 val, u + * Use these carefully: no type checking, and uses the arguments + * multiple times. Use for obvious constants only. + */ ++#define MIN(a,b) __cmp(min,a,b) ++#define MAX(a,b) __cmp(max,a,b) + #define MIN_T(type,a,b) __cmp(min,(type)(a),(type)(b)) + #define MAX_T(type,a,b) __cmp(max,(type)(a),(type)(b)) + +--- a/kernel/trace/preemptirq_delay_test.c ++++ b/kernel/trace/preemptirq_delay_test.c +@@ -34,8 +34,6 @@ MODULE_PARM_DESC(cpu_affinity, "Cpu num + + static struct completion done; + +-#define MIN(x, y) ((x) < (y) ? (x) : (y)) +- + static void busy_wait(ulong time) + { + u64 start, end; +--- a/lib/btree.c ++++ b/lib/btree.c +@@ -43,7 +43,6 @@ + #include + #include + +-#define MAX(a, b) ((a) > (b) ? (a) : (b)) + #define NODESIZE MAX(L1_CACHE_BYTES, 128) + + struct btree_geo { +--- a/lib/decompress_unlzma.c ++++ b/lib/decompress_unlzma.c +@@ -37,7 +37,9 @@ + + #include + ++#ifndef MIN + #define MIN(a, b) (((a) < (b)) ? (a) : (b)) ++#endif + + static long long INIT read_int(unsigned char *ptr, int size) + { +--- a/mm/zsmalloc.c ++++ b/mm/zsmalloc.c +@@ -123,7 +123,6 @@ + #define ISOLATED_BITS 3 + #define MAGIC_VAL_BITS 8 + +-#define MAX(a, b) ((a) >= (b) ? (a) : (b)) + /* ZS_MIN_ALLOC_SIZE must be multiple of ZS_ALIGN */ + #define ZS_MIN_ALLOC_SIZE \ + MAX(32, (ZS_MAX_PAGES_PER_ZSPAGE << PAGE_SHIFT >> OBJ_INDEX_BITS)) +--- a/tools/testing/selftests/seccomp/seccomp_bpf.c ++++ b/tools/testing/selftests/seccomp/seccomp_bpf.c +@@ -60,7 +60,9 @@ + #define SKIP(s, ...) XFAIL(s, ##__VA_ARGS__) + #endif + ++#ifndef MIN + #define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) ++#endif + + #ifndef PR_SET_PTRACER + # define PR_SET_PTRACER 0x59616d61 +--- a/tools/testing/selftests/vm/mremap_test.c ++++ b/tools/testing/selftests/vm/mremap_test.c +@@ -22,7 +22,9 @@ + #define VALIDATION_DEFAULT_THRESHOLD 4 /* 4MB */ + #define VALIDATION_NO_THRESHOLD 0 /* Verify the entire region */ + ++#ifndef MIN + #define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) ++#endif + + struct config { + unsigned long long src_alignment; diff --git a/queue-6.1/minmax-simplify-and-clarify-min_t-max_t-implementation.patch b/queue-6.1/minmax-simplify-and-clarify-min_t-max_t-implementation.patch index 744ec3128b..323cd5b799 100644 --- a/queue-6.1/minmax-simplify-and-clarify-min_t-max_t-implementation.patch +++ b/queue-6.1/minmax-simplify-and-clarify-min_t-max_t-implementation.patch @@ -1,14 +1,11 @@ -From linux-staging+bounces-34580-greg=kroah.com@lists.linux.dev Wed Sep 24 22:29:02 2025 -From: Eliav Farber -Date: Wed, 24 Sep 2025 20:23:07 +0000 +From 017fa3e89187848fd056af757769c9e66ac3e93d Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Sun, 28 Jul 2024 13:50:01 -0700 Subject: minmax: simplify and clarify min_t()/max_t() implementation -To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , -Cc: Linus Torvalds , David Laight , Lorenzo Stoakes -Message-ID: <20250924202320.32333-7-farbere@amazon.com> From: Linus Torvalds -[ Upstream commit 017fa3e89187848fd056af757769c9e66ac3e93d ] +commit 017fa3e89187848fd056af757769c9e66ac3e93d upstream. This simplifies the min_t() and max_t() macros by no longer making them work in the context of a C constant expression. @@ -21,7 +18,6 @@ MIN_T/MAX_T instead. Cc: David Laight Cc: Lorenzo Stoakes Signed-off-by: Linus Torvalds -Signed-off-by: Eliav Farber Signed-off-by: Greg Kroah-Hartman --- include/linux/minmax.h | 19 +++++++++++-------- diff --git a/queue-6.1/series b/queue-6.1/series index 467d908bd1..a44d29f76d 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -62,11 +62,12 @@ minmax-introduce-min-max-_array.patch minmax-deduplicate-__unconst_integer_typeof.patch minmax-fix-indentation-of-__cmp_once-and-__clamp_once.patch minmax-avoid-overly-complicated-constant-expressions-in-vm-code.patch -minmax-simplify-and-clarify-min_t-max_t-implementation.patch -minmax-add-a-few-more-min_t-max_t-users.patch drm-ast-use-msleep-instead-of-mdelay-for-edid-read.patch i40e-fix-validation-of-vf-state-in-get-resources.patch i40e-fix-idx-validation-in-config-queues-msg.patch i40e-increase-max-descriptors-for-xl710.patch i40e-add-validation-for-ring_len-param.patch kmsan-fix-out-of-bounds-access-to-shadow-memory.patch +minmax-make-generic-min-and-max-macros-available-everywhere.patch +minmax-add-a-few-more-min_t-max_t-users.patch +minmax-simplify-and-clarify-min_t-max_t-implementation.patch -- 2.47.3