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


Reply via email to