The load_address test reports whether an alignment was found separately
from whether that alignment is a power of two. However, the usual
x & (x - 1) check also evaluates to zero when x is zero, causing a
missing alignment to be reported as a power of two.
Require the alignment to be non-zero when reporting the power-of-two
result.
Fixes: b57a2907c9d9 ("selftests/exec: Build both static and non-static
load_address tests")
Signed-off-by: Paul Dolan <[email protected]>
---
tools/testing/selftests/exec/load_address.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/exec/load_address.c
b/tools/testing/selftests/exec/load_address.c
index 55fd3732f029..e279d85e8f19 100644
--- a/tools/testing/selftests/exec/load_address.c
+++ b/tools/testing/selftests/exec/load_address.c
@@ -92,9 +92,10 @@ int main(int argc, char **argv)
/* Is the alignment sane? */
pow2 = extracted.alignment & (extracted.alignment - 1);
- ksft_test_result(pow2 == 0,
- "Alignment is%s a power of 2: %#llx\n",
- pow2 == 0 ? "" : " NOT", extracted.alignment);
+ ksft_test_result(extracted.alignment != 0 && pow2 == 0,
+ "Alignment is%s a power of 2: %#llx\n",
+ extracted.alignment != 0 && pow2 == 0 ? "" : " NOT",
+ extracted.alignment);
/* Is the load address aligned? */
misalign = extracted.load_address & (extracted.alignment - 1);
--
2.55.0