diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-02-02 00:37:00 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-02-02 00:37:00 +0100 |
commit | 0cc80b3913489e74f6d5a0ac9b8a4c5523d9cecd (patch) | |
tree | 162fe5f68fbf68498deb46482b5b5c3f2cb05261 | |
parent | d21b09b328956996466f35a45b28c4ab51f1f4e3 (diff) | |
download | hurd-0cc80b3913489e74f6d5a0ac9b8a4c5523d9cecd.tar.gz hurd-0cc80b3913489e74f6d5a0ac9b8a4c5523d9cecd.tar.bz2 hurd-0cc80b3913489e74f6d5a0ac9b8a4c5523d9cecd.zip |
Avoid undefined-behavior
1 << 31 is undefined behavior, 1 needs to be made unsigned for << 31 to
be defined behavior.
-rw-r--r-- | ext2fs/ext2fs.h | 6 | ||||
-rw-r--r-- | libpager/data-return.c | 10 |
2 files changed, 8 insertions, 8 deletions
diff --git a/ext2fs/ext2fs.h b/ext2fs/ext2fs.h index 88c9fe81..c17cf37c 100644 --- a/ext2fs/ext2fs.h +++ b/ext2fs/ext2fs.h @@ -127,7 +127,7 @@ EXT2FS_EI int test_bit (unsigned num, unsigned char *bitmap) { const uint32_t *const bw = (uint32_t *) bitmap + (num >> 5); - const uint_fast32_t mask = 1 << (num & 31); + const uint_fast32_t mask = 1U << (num & 31); return *bw & mask; } @@ -137,7 +137,7 @@ EXT2FS_EI int set_bit (unsigned num, unsigned char *bitmap) { uint32_t *const bw = (uint32_t *) bitmap + (num >> 5); - const uint_fast32_t mask = 1 << (num & 31); + const uint_fast32_t mask = 1U << (num & 31); return (*bw & mask) ?: (*bw |= mask, 0); } @@ -147,7 +147,7 @@ EXT2FS_EI int clear_bit (unsigned num, unsigned char *bitmap) { uint32_t *const bw = (uint32_t *) bitmap + (num >> 5); - const uint_fast32_t mask = 1 << (num & 31); + const uint_fast32_t mask = 1U << (num & 31); return (*bw & mask) ? (*bw &= ~mask, mask) : 0; } #endif /* Use extern inlines. */ diff --git a/libpager/data-return.c b/libpager/data-return.c index 52661812..a69a2c5c 100644 --- a/libpager/data-return.c +++ b/libpager/data-return.c @@ -43,7 +43,7 @@ _pager_do_write_request (struct pager *p, struct lock_list {struct lock_request *lr; struct lock_list *next;} *lock_list, *ll; int wakeup; - int omitdata = 0; + unsigned omitdata = 0; if (!p || p->port.class != _pager_class) @@ -125,11 +125,11 @@ _pager_do_write_request (struct pager *p, /* Mark these pages as being paged out. */ if (initializing) { - assert_backtrace (npages <= 32); + assert_backtrace (npages < 32); for (i = 0; i < npages; i++) { if (pm_entries[i] & PM_INIT) - omitdata |= 1 << i; + omitdata |= 1U << i; else pm_entries[i] |= PM_PAGINGOUT | PM_INIT; } @@ -162,7 +162,7 @@ _pager_do_write_request (struct pager *p, but until the pager library interface is changed, this will have to do. */ for (i = 0; i < npages; i++) - if (!(omitdata & (1 << i))) + if (!(omitdata & (1U << i))) pagerrs[i] = pager_write_page (p->upi, offset + (vm_page_size * i), data + (vm_page_size * i)); @@ -175,7 +175,7 @@ _pager_do_write_request (struct pager *p, wakeup = 0; for (i = 0; i < npages; i++) { - if (omitdata & (1 << i)) + if (omitdata & (1U << i)) { notified[i] = 0; continue; |