summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mmp/mfp.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2024-07-30 15:44:16 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2024-07-31 09:57:18 -0700
commit21b136cc63d2a9ddd60d4699552b69c214b32964 (patch)
treeb1fe043c07e0b7b42ad5dbc8c1127f3ded2c0ac6 /arch/arm/mach-mmp/mfp.h
parente4fc196f5ba36eb7b9758cf2c73df49a44199895 (diff)
downloadlinux-master.tar.gz
linux-master.tar.bz2
linux-master.zip
minmax: fix up min3() and max3() tooHEADmaster
David Laight pointed out that we should deal with the min3() and max3() mess too, which still does excessive expansion. And our current macros are actually rather broken. In particular, the macros did this: #define min3(x, y, z) min((typeof(x))min(x, y), z) #define max3(x, y, z) max((typeof(x))max(x, y), z) and that not only is a nested expansion of possibly very complex arguments with all that involves, the typing with that "typeof()" cast is completely wrong. For example, imagine what happens in max3() if 'x' happens to be a 'unsigned char', but 'y' and 'z' are 'unsigned long'. The types are compatible, and there's no warning - but the result is just random garbage. No, I don't think we've ever hit that issue in practice, but since we now have sane infrastructure for doing this right, let's just use it. It fixes any excessive expansion, and also avoids these kinds of broken type issues. Requested-by: David Laight <David.Laight@aculab.com> Acked-by: Arnd Bergmann <arnd@kernel.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/arm/mach-mmp/mfp.h')
0 files changed, 0 insertions, 0 deletions