[LTP] [PATCH v2] ioctl10: fix the sscanf() call to handle 64-bit inode on 32-bit arch
Jeff Layton
jlayton@kernel.org
Fri Jun 26 20:20:01 CEST 2026
This test started failing recently on arm32, when we switched the
kernel to displaying the full 64-bit inode number in the maps file.
Change the testcase to allow for a full 64-bit inode number on all
arches. The value it's compared to is already 64-bits, so widening
this field is all that is necessary.
Reported-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
Changes in v2:
- Use SCNu64 instead of %llu in the sscanf() format string
- Link to v1: https://lore.kernel.org/r/20260626-master-v1-1-e4fcb95b232d@kernel.org
---
testcases/kernel/syscalls/ioctl/ioctl10.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/syscalls/ioctl/ioctl10.c b/testcases/kernel/syscalls/ioctl/ioctl10.c
index b668c9e93889..8a4f8ae405e6 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl10.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl10.c
@@ -17,6 +17,7 @@
#include "config.h"
#include <stdlib.h>
+#include <inttypes.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <fnmatch.h>
@@ -35,7 +36,7 @@ struct map_entry {
unsigned long vm_pgoff;
unsigned int vm_major;
unsigned int vm_minor;
- unsigned long vm_inode;
+ uint64_t vm_inode;
char vm_name[256];
unsigned int vm_flags;
};
@@ -68,7 +69,7 @@ static void parse_maps_file(const char *filename, const char *keyword, struct ma
while (fgets(line, sizeof(line), fp) != NULL) {
if (fnmatch(keyword, line, 0) == 0) {
- if (sscanf(line, "%lx-%lx %s %lx %x:%x %lu %s",
+ if (sscanf(line, "%lx-%lx %s %lx %x:%x %" SCNu64 " %s",
&entry->vm_start, &entry->vm_end, entry->vm_flags_str,
&entry->vm_pgoff, &entry->vm_major, &entry->vm_minor,
&entry->vm_inode, entry->vm_name) < 7)
---
base-commit: 534222c4f3908e9642f913399e37a66fdd266bbe
change-id: 20260626-master-55d29494ba06
Best regards,
--
Jeff Layton <jlayton@kernel.org>
More information about the ltp
mailing list