Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/ufs/lfs Avoid undefined behavior in *_BITMAP_FREE() macros



details:   https://anonhg.NetBSD.org/src/rev/966612290129
branches:  trunk
changeset: 969463:966612290129
user:      kamil <kamil%NetBSD.org@localhost>
date:      Sat Feb 22 00:32:08 2020 +0000

description:
Avoid undefined behavior in *_BITMAP_FREE() macros

left shift of 1 by 31 places cannot be represented in type 'int'

diffstat:

 sys/ufs/lfs/lfs_alloc.c |  10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diffs (38 lines):

diff -r 8eda90fcae9d -r 966612290129 sys/ufs/lfs/lfs_alloc.c
--- a/sys/ufs/lfs/lfs_alloc.c   Sat Feb 22 00:28:35 2020 +0000
+++ b/sys/ufs/lfs/lfs_alloc.c   Sat Feb 22 00:32:08 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs_alloc.c,v 1.138 2020/01/17 20:08:10 ad Exp $       */
+/*     $NetBSD: lfs_alloc.c,v 1.139 2020/02/22 00:32:08 kamil Exp $    */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_alloc.c,v 1.138 2020/01/17 20:08:10 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_alloc.c,v 1.139 2020/02/22 00:32:08 kamil Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_quota.h"
@@ -95,16 +95,16 @@
 #define SET_BITMAP_FREE(F, I) do { \
        DLOG((DLOG_ALLOC, "lfs: ino %d wrd %d bit %d set\n", (int)(I),  \
             (int)((I) >> BMSHIFT), (int)((I) & BMMASK)));              \
-       (F)->lfs_ino_bitmap[(I) >> BMSHIFT] |= (1 << ((I) & BMMASK));   \
+       (F)->lfs_ino_bitmap[(I) >> BMSHIFT] |= (1U << ((I) & BMMASK));  \
 } while (0)
 #define CLR_BITMAP_FREE(F, I) do { \
        DLOG((DLOG_ALLOC, "lfs: ino %d wrd %d bit %d clr\n", (int)(I),  \
             (int)((I) >> BMSHIFT), (int)((I) & BMMASK)));              \
-       (F)->lfs_ino_bitmap[(I) >> BMSHIFT] &= ~(1 << ((I) & BMMASK));  \
+       (F)->lfs_ino_bitmap[(I) >> BMSHIFT] &= ~(1U << ((I) & BMMASK)); \
 } while(0)
 
 #define ISSET_BITMAP_FREE(F, I) \
-       ((F)->lfs_ino_bitmap[(I) >> BMSHIFT] & (1 << ((I) & BMMASK)))
+       ((F)->lfs_ino_bitmap[(I) >> BMSHIFT] & (1U << ((I) & BMMASK)))
 
 /*
  * Add a new block to the Ifile, to accommodate future file creations.



Home | Main Index | Thread Index | Old Index