2024-01-11 08:23:05

by Muhammad Usama Anjum

[permalink] [raw]
Subject: [PATCH] selftests/mm: mremap_test: fix build warning

Fix following build warning:
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long long unsigned int’

Fixes: a4cb3b243343 ("selftests: mm: add a test for remapping to area immediately after existing mapping")
Signed-off-by: Muhammad Usama Anjum <[email protected]>
---
tools/testing/selftests/mm/mremap_test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/mm/mremap_test.c b/tools/testing/selftests/mm/mremap_test.c
index 1d4c1589c305..dd1cbb068982 100644
--- a/tools/testing/selftests/mm/mremap_test.c
+++ b/tools/testing/selftests/mm/mremap_test.c
@@ -457,7 +457,7 @@ static long long remap_region(struct config c, unsigned int threshold_mb,
char c = (char) rand();

if (((char *) dest_preamble_addr)[i] != c) {
- ksft_print_msg("Preamble data after remap doesn't match at offset %d\n",
+ ksft_print_msg("Preamble data after remap doesn't match at offset %llu\n",
i);
ksft_print_msg("Expected: %#x\t Got: %#x\n", c & 0xff,
((char *) dest_preamble_addr)[i] & 0xff);
--
2.42.0



2024-01-11 21:14:18

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] selftests/mm: mremap_test: fix build warning

On Thu, 11 Jan 2024 13:20:38 +0500 Muhammad Usama Anjum <[email protected]> wrote:

> Fix following build warning:
> warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long long unsigned int’
>

Looks good to me, but... grumble.

`i' is an integer. That's just how it is, Blame Fortran if you like.
Discovering that someone used `i' for an unsigned long long is like
seeing

struct inode *page;

It is surprising, and readers shouldn't be subjected to surprises.

`i' is used in two ways here. Twice to iterate across threshold values
(as a ULL) and once to iterate across dest_preamble_size, which is an
int. It would be better to have two different variables for the two
different uses. Ones with more appropriate names than `i'.


2024-01-12 06:50:47

by Muhammad Usama Anjum

[permalink] [raw]
Subject: Re: [PATCH] selftests/mm: mremap_test: fix build warning

On 1/12/24 2:14 AM, Andrew Morton wrote:
> On Thu, 11 Jan 2024 13:20:38 +0500 Muhammad Usama Anjum <[email protected]> wrote:
>
>> Fix following build warning:
>> warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long long unsigned int’
>>
>
> Looks good to me, but... grumble.
>
> `i' is an integer. That's just how it is, Blame Fortran if you like.
Didn't know this. Thanks for sharing. I'll send a v2 by using two variables.

> Discovering that someone used `i' for an unsigned long long is like
> seeing
>
> struct inode *page;
>
> It is surprising, and readers shouldn't be subjected to surprises.
>
> `i' is used in two ways here. Twice to iterate across threshold values
> (as a ULL) and once to iterate across dest_preamble_size, which is an
> int. It would be better to have two different variables for the two
> different uses. Ones with more appropriate names than `i'.
>

--
BR,
Muhammad Usama Anjum