This is a note to let you know that I've just added the patch titled minmax: deduplicate __unconst_integer_typeof() to the 6.6-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: minmax-deduplicate-__unconst_integer_typeof.patch and it can be found in the queue-6.6 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 5e57418a2031cd5e1863efdf3d7447a16a368172 Mon Sep 17 00:00:00 2001 From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Date: Mon, 11 Sep 2023 18:49:13 +0300 Subject: minmax: deduplicate __unconst_integer_typeof() From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> commit 5e57418a2031cd5e1863efdf3d7447a16a368172 upstream. It appears that compiler_types.h already have an implementation of the __unconst_integer_typeof() called __unqual_scalar_typeof(). Use it instead of the copy. Link: https://lkml.kernel.org/r/20230911154913.4176033-1-andriy.shevchenko@xxxxxxxxxxxxxxx Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Acked-by: Herve Codina <herve.codina@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- include/linux/minmax.h | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) --- a/include/linux/minmax.h +++ b/include/linux/minmax.h @@ -2,6 +2,7 @@ #ifndef _LINUX_MINMAX_H #define _LINUX_MINMAX_H +#include <linux/compiler_types.h> #include <linux/const.h> #include <linux/types.h> @@ -135,27 +136,6 @@ #define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >) /* - * Remove a const qualifier from integer types - * _Generic(foo, type-name: association, ..., default: association) performs a - * comparison against the foo type (not the qualified type). - * Do not use the const keyword in the type-name as it will not match the - * unqualified type of foo. - */ -#define __unconst_integer_type_cases(type) \ - unsigned type: (unsigned type)0, \ - signed type: (signed type)0 - -#define __unconst_integer_typeof(x) typeof( \ - _Generic((x), \ - char: (char)0, \ - __unconst_integer_type_cases(char), \ - __unconst_integer_type_cases(short), \ - __unconst_integer_type_cases(int), \ - __unconst_integer_type_cases(long), \ - __unconst_integer_type_cases(long long), \ - default: (x))) - -/* * Do not check the array parameter using __must_be_array(). * In the following legit use-case where the "array" passed is a simple pointer, * __must_be_array() will return a failure. @@ -169,13 +149,13 @@ * 'int *buff' and 'int buff[N]' types. * * The array can be an array of const items. - * typeof() keeps the const qualifier. Use __unconst_integer_typeof() in order + * typeof() keeps the const qualifier. Use __unqual_scalar_typeof() in order * to discard the const qualifier for the __element variable. */ #define __minmax_array(op, array, len) ({ \ typeof(&(array)[0]) __array = (array); \ typeof(len) __len = (len); \ - __unconst_integer_typeof(__array[0]) __element = __array[--__len]; \ + __unqual_scalar_typeof(__array[0]) __element = __array[--__len];\ while (__len--) \ __element = op(__element, __array[__len]); \ __element; }) Patches currently in stable-queue which might be from andriy.shevchenko@xxxxxxxxxxxxxxx are queue-6.6/minmax-allow-min-max-clamp-if-the-arguments-have-the-same-signedness.patch queue-6.6/minmax-deduplicate-__unconst_integer_typeof.patch queue-6.6/minmax-add-umin-a-b-and-umax-a-b.patch queue-6.6/minmax-relax-check-to-allow-comparison-between-unsigned-arguments-and-signed-constants.patch queue-6.6/pinctrl-baytrail-fix-types-of-config-value-in-byt_pi.patch queue-6.6/minmax-fix-header-inclusions.patch queue-6.6/minmax-fix-indentation-of-__cmp_once-and-__clamp_once.patch queue-6.6/minmax-allow-comparisons-of-int-against-unsigned-char-short.patch