diff options
| author | riastradh <riastradh@NetBSD.org> | 2018-09-03 16:29:22 +0000 |
|---|---|---|
| committer | riastradh <riastradh@NetBSD.org> | 2018-09-03 16:29:22 +0000 |
| commit | a8a5c538b6388ff28a5944a8f637db644ee9a623 (patch) | |
| tree | 4969c43ed378ff98e7f37be97a07b435cede6cb0 /sys/dev/ic/mfi.c | |
| parent | cc0f01d7332d63adc5489e77fd27e50767bcc316 (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.c | 8 |
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; |
