[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aRG_Z7p1jwEUsRy5@kernel.org>
Date: Mon, 10 Nov 2025 12:33:11 +0200
From: Mike Rapoport <rppt@...nel.org>
To: Ankit Khushwaha <ankitkhushwaha.linux@...il.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
David Hildenbrand <david@...nel.org>,
Lorenzo Stoakes <lorenzo.stoakes@...cle.com>,
"Liam R. Howlett" <Liam.Howlett@...cle.com>,
Vlastimil Babka <vbabka@...e.cz>,
Suren Baghdasaryan <surenb@...gle.com>,
Michal Hocko <mhocko@...e.com>, Shuah Khan <shuah@...nel.org>,
linux-mm@...ck.org, linux-kselftest@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] selftest/mm: fix pointer comparison in mremap_test
On Sat, Nov 08, 2025 at 09:48:29PM +0530, Ankit Khushwaha wrote:
> Pointer arthemitic with 'void * addr' and 'ulong dest_alignment'
> triggers following warning:
>
> mremap_test.c:1035:31: warning: pointer comparison always evaluates to
> false [-Wtautological-compare]
> 1035 | if (addr + c.dest_alignment < addr) {
> | ^
>
> this warning is raised from clang version 20.1.8 (Fedora 20.1.8-4.fc42).
>
> use 'void *tmp_addr' to do the pointer arthemitic.
>
> Signed-off-by: Ankit Khushwaha <ankitkhushwaha.linux@...il.com>
> ---
> Changelog:
> v2:
> - use 'void *tmp_addr' for pointer arthemitic instead of typecasting
> 'addr' to 'unsigned long long' as suggested by Andrew.
>
> v1: https://lore.kernel.org/linux-kselftest/20251106104917.39890-1-ankitkhushwaha.linux@gmail.com/
> ---
> tools/testing/selftests/mm/mremap_test.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/mremap_test.c b/tools/testing/selftests/mm/mremap_test.c
> index a95c0663a011..308576437228 100644
> --- a/tools/testing/selftests/mm/mremap_test.c
> +++ b/tools/testing/selftests/mm/mremap_test.c
> @@ -994,7 +994,7 @@ static void mremap_move_multi_invalid_vmas(FILE *maps_fp, unsigned long page_siz
> static long long remap_region(struct config c, unsigned int threshold_mb,
> char *rand_addr)
> {
> - void *addr, *src_addr, *dest_addr, *dest_preamble_addr = NULL;
> + void *addr, *tmp_addr, *src_addr, *dest_addr, *dest_preamble_addr = NULL;
> unsigned long long t, d;
> struct timespec t_start = {0, 0}, t_end = {0, 0};
> long long start_ns, end_ns, align_mask, ret, offset;
> @@ -1032,7 +1032,8 @@ static long long remap_region(struct config c, unsigned int threshold_mb,
> /* Don't destroy existing mappings unless expected to overlap */
> while (!is_remap_region_valid(addr, c.region_size) && !c.overlapping) {
> /* Check for unsigned overflow */
> - if (addr + c.dest_alignment < addr) {
> + tmp_addr = addr + c.dest_alignment;
Nit: tmp_addr can be declared here.
Other than that
Acked-by: Mike Rapoport (Microsoft) <rppt@...nel.org>
> + if (tmp_addr < addr) {
> ksft_print_msg("Couldn't find a valid region to remap to\n");
> ret = -1;
> goto clean_up_src;
> --
> 2.51.1
>
--
Sincerely yours,
Mike.
Powered by blists - more mailing lists