Module Name: src Committed By: kamil Date: Tue Jul 3 12:17:54 UTC 2018
Modified Files: src/sys/kern: kern_descrip.c Log Message: Avoid unportable signed integer left shift in fd_used() Detected with Kernel Undefined Behavior Sanitizer. There were at least a single place reported, for consistency fix all the left bit shift operations. sys/kern/kern_descrip.c:302:26, left shift of 1 by 31 places cannot be represented in type 'int' Reported by <Harry Pantazis> To generate a diff of this commit: cvs rdiff -u -r1.231 -r1.232 src/sys/kern/kern_descrip.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_descrip.c diff -u src/sys/kern/kern_descrip.c:1.231 src/sys/kern/kern_descrip.c:1.232 --- src/sys/kern/kern_descrip.c:1.231 Thu Jun 1 02:45:13 2017 +++ src/sys/kern/kern_descrip.c Tue Jul 3 12:17:54 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_descrip.c,v 1.231 2017/06/01 02:45:13 chs Exp $ */ +/* $NetBSD: kern_descrip.c,v 1.232 2018/07/03 12:17:54 kamil Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -70,7 +70,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_descrip.c,v 1.231 2017/06/01 02:45:13 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_descrip.c,v 1.232 2018/07/03 12:17:54 kamil Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -293,17 +293,17 @@ fd_used(filedesc_t *fdp, unsigned fd) ff = fdp->fd_dt->dt_ff[fd]; KASSERT(mutex_owned(&fdp->fd_lock)); - KASSERT((fdp->fd_lomap[off] & (1 << (fd & NDENTRYMASK))) == 0); + KASSERT((fdp->fd_lomap[off] & (1U << (fd & NDENTRYMASK))) == 0); KASSERT(ff != NULL); KASSERT(ff->ff_file == NULL); KASSERT(!ff->ff_allocated); ff->ff_allocated = true; - fdp->fd_lomap[off] |= 1 << (fd & NDENTRYMASK); + fdp->fd_lomap[off] |= 1U << (fd & NDENTRYMASK); if (__predict_false(fdp->fd_lomap[off] == ~0)) { KASSERT((fdp->fd_himap[off >> NDENTRYSHIFT] & - (1 << (off & NDENTRYMASK))) == 0); - fdp->fd_himap[off >> NDENTRYSHIFT] |= 1 << (off & NDENTRYMASK); + (1U << (off & NDENTRYMASK))) == 0); + fdp->fd_himap[off >> NDENTRYSHIFT] |= 1U << (off & NDENTRYMASK); } if ((int)fd > fdp->fd_lastfile) {