Module Name: src
Committed By: kamil
Date: Wed Jul 4 01:17:32 UTC 2018
Modified Files:
src/sys/sys: mman.h
Log Message:
Avoid undefined operation in signed integer shift in MAP_ALIGNED()
Cast the shifted byte to unsigned int.
sys/uvm/uvm_mmap.c:914:19, left shift of 255 by 24 places cannot be represented
in type 'int'
Detected with Kernel Undefined Behavior Sanitizer.
Reported by <Harry Pantazis>
To generate a diff of this commit:
cvs rdiff -u -r1.53 -r1.54 src/sys/sys/mman.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/sys/mman.h
diff -u src/sys/sys/mman.h:1.53 src/sys/sys/mman.h:1.54
--- src/sys/sys/mman.h:1.53 Wed Jan 24 09:04:45 2018
+++ src/sys/sys/mman.h Wed Jul 4 01:17:32 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: mman.h,v 1.53 2018/01/24 09:04:45 skrll Exp $ */
+/* $NetBSD: mman.h,v 1.54 2018/07/04 01:17:32 kamil Exp $ */
/*-
* Copyright (c) 1982, 1986, 1993
@@ -106,7 +106,7 @@ typedef __off_t off_t; /* file offset
* Alignment (expressed in log2). Must be >= log2(PAGE_SIZE) and
* < # bits in a pointer (32 or 64).
*/
-#define MAP_ALIGNED(n) ((n) << MAP_ALIGNMENT_SHIFT)
+#define MAP_ALIGNED(n) ((unsigned int)(n) << MAP_ALIGNMENT_SHIFT)
#define MAP_ALIGNMENT_SHIFT 24
#define MAP_ALIGNMENT_MASK MAP_ALIGNED(0xff)
#define MAP_ALIGNMENT_64KB MAP_ALIGNED(16) /* 2^16 */