]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tools/nolibc: cast pointers returned from system calls through integers
authorThomas Weißschuh <linux@weissschuh.net>
Sat, 18 Apr 2026 10:19:58 +0000 (12:19 +0200)
committerThomas Weißschuh <linux@weissschuh.net>
Mon, 27 Apr 2026 18:08:54 +0000 (20:08 +0200)
Currently all system call wrappers return 'long' integers which can be
directly cast to 'void *' if the returned value is actually a pointer.
An upcoming change will change the system call wrappers to sometimes
return 'long long' which can not be cast to a pointer directly.

Add explicit cast through 'long' to prepare for this.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://patch.msgid.link/20260418-nolibc-largefile-v1-3-b91f0775bac3@weissschuh.net
tools/include/nolibc/sys.h
tools/include/nolibc/sys/mman.h

index 841158eb07c33f336f7ddf22265f48ad9f1d9256..33f9c970ae5766bc6f003d7cdc936f45c455255f 100644 (file)
@@ -101,7 +101,7 @@ static __inline__ int __nolibc_enosys(const char *syscall, ...)
 static __attribute__((unused))
 void *_sys_brk(void *addr)
 {
-       return (void *)__nolibc_syscall1(__NR_brk, addr);
+       return (void *)(unsigned long)__nolibc_syscall1(__NR_brk, addr);
 }
 
 static __attribute__((unused))
index 91d77a51412d4dbed8cf268bc2ec58fe373f31b5..72bc1d43d1d4c708f6c5ddc78bd0dd52e244da9f 100644 (file)
@@ -27,7 +27,7 @@ void *_sys_mmap(void *addr, size_t length, int prot, int flags, int fd,
        n = __NR_mmap;
 #endif
 
-       return (void *)__nolibc_syscall6(n, addr, length, prot, flags, fd, offset);
+       return (void *)(unsigned long)__nolibc_syscall6(n, addr, length, prot, flags, fd, offset);
 }
 #endif
 
@@ -46,8 +46,8 @@ void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
 static __attribute__((unused))
 void *_sys_mremap(void *old_address, size_t old_size, size_t new_size, int flags, void *new_address)
 {
-       return (void *)__nolibc_syscall5(__NR_mremap, old_address, old_size,
-                                        new_size, flags, new_address);
+       return (void *)(unsigned long)__nolibc_syscall5(__NR_mremap, old_address, old_size,
+                                                       new_size, flags, new_address);
 }
 
 static __attribute__((unused))