summaryrefslogtreecommitdiff
path: root/sys/dev/ic/mfi.c
diff options
context:
space:
mode:
authorriastradh <riastradh@NetBSD.org>2018-09-03 16:29:22 +0000
committerriastradh <riastradh@NetBSD.org>2018-09-03 16:29:22 +0000
commita8a5c538b6388ff28a5944a8f637db644ee9a623 (patch)
tree4969c43ed378ff98e7f37be97a07b435cede6cb0 /sys/dev/ic/mfi.c
parentcc0f01d7332d63adc5489e77fd27e50767bcc316 (diff)
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended. HOWEVER! Some subsystems have #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b)) even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation. To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it. I have left a handful of bootloaders that are too annoying to compile-test, and some dead code: cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4)) It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them. Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
Diffstat (limited to 'sys/dev/ic/mfi.c')
-rw-r--r--sys/dev/ic/mfi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/dev/ic/mfi.c b/sys/dev/ic/mfi.c
index 8629e297fcf..f9e9ce1d46a 100644
--- a/sys/dev/ic/mfi.c
+++ b/sys/dev/ic/mfi.c
@@ -1,4 +1,4 @@
-/* $NetBSD: mfi.c,v 1.58 2017/10/28 04:53:55 riastradh Exp $ */
+/* $NetBSD: mfi.c,v 1.59 2018/09/03 16:29:31 riastradh Exp $ */
/* $OpenBSD: mfi.c,v 1.66 2006/11/28 23:59:45 dlg Exp $ */
/*
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mfi.c,v 1.58 2017/10/28 04:53:55 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfi.c,v 1.59 2018/09/03 16:29:31 riastradh Exp $");
#include "bio.h"
@@ -1053,10 +1053,10 @@ mfi_attach(struct mfi_softc *sc, enum mfi_iop iop)
sc->sc_max_cmds = status & MFI_STATE_MAXCMD_MASK;
max_sgl = (status & MFI_STATE_MAXSGL_MASK) >> 16;
if (sc->sc_ioptype == MFI_IOP_TBOLT) {
- sc->sc_max_sgl = min(max_sgl, (128 * 1024) / PAGE_SIZE + 1);
+ sc->sc_max_sgl = uimin(max_sgl, (128 * 1024) / PAGE_SIZE + 1);
sc->sc_sgl_size = sizeof(struct mfi_sg_ieee);
} else if (sc->sc_64bit_dma) {
- sc->sc_max_sgl = min(max_sgl, (128 * 1024) / PAGE_SIZE + 1);
+ sc->sc_max_sgl = uimin(max_sgl, (128 * 1024) / PAGE_SIZE + 1);
sc->sc_sgl_size = sizeof(struct mfi_sg64);
} else {
sc->sc_max_sgl = max_sgl;