From 983ce0b5173951ad947e8ea089df2e277a45f863 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 5 Aug 2022 13:19:23 +0200 Subject: [PATCH] macro: use ISPOWEROF2() at various places --- src/fundamental/macro-fundamental.h | 13 ++----------- src/partition/repart.c | 4 ++-- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 5c67d3e2f79..8b483f0b50d 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -327,16 +327,7 @@ }) static inline size_t ALIGN_TO(size_t l, size_t ali) { - /* Check that alignment is exponent of 2 */ -#if SIZE_MAX == UINT_MAX - assert(__builtin_popcount(ali) == 1); -#elif SIZE_MAX == ULONG_MAX - assert(__builtin_popcountl(ali) == 1); -#elif SIZE_MAX == ULLONG_MAX - assert(__builtin_popcountll(ali) == 1); -#else - #error "Unexpected size_t" -#endif + assert(ISPOWEROF2(ali)); if (l > SIZE_MAX - (ali - 1)) return SIZE_MAX; /* indicate overflow */ @@ -357,7 +348,7 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) { __builtin_choose_expr( \ __builtin_constant_p(l) && \ __builtin_constant_p(ali) && \ - __builtin_popcountll(ali) == 1 && /* is power of 2? */ \ + CONST_ISPOWEROF2(ali) && \ (l <= SIZE_MAX - (ali - 1)), /* overflow? */ \ ((l) + (ali) - 1) & ~((ali) - 1), \ VOID_0) diff --git a/src/partition/repart.c b/src/partition/repart.c index 5cbe59cdf72..84e6c47d674 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -1629,8 +1629,8 @@ static int context_load_partition_table( secsz = fdisk_get_sector_size(c); /* Insist on a power of two, and that it's a multiple of 512, i.e. the traditional sector size. */ - if (secsz < 512 || secsz != 1UL << log2u64(secsz)) - return log_error_errno(errno, "Sector size %lu is not a power of two larger than 512? Refusing.", secsz); + if (secsz < 512 || !ISPOWEROF2(secsz)) + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Sector size %lu is not a power of two larger than 512? Refusing.", secsz); /* Use at least 4K, and ensure it's a multiple of the sector size, regardless if that is smaller or * larger */ -- 2.47.3