| From: Dev Jain <dev.jain@arm.com> |
| Subject: selftests/mm: mremap_test: use sscanf to parse /proc/self/maps |
| Date: Sat, 30 Mar 2024 23:05:57 +0530 |
| |
| Enforce consistency across files by avoiding two separate functions to |
| parse /proc/self/maps, replacing them with a simple sscanf(). |
| |
| Link: https://lkml.kernel.org/r/20240330173557.2697684-4-dev.jain@arm.com |
| Signed-off-by: Dev Jain <dev.jain@arm.com> |
| Cc: Anshuman Khandual <anshuman.khandual@arm.com> |
| Cc: John Hubbard <jhubbard@nvidia.com> |
| Cc: Kalesh Singh <kaleshsingh@google.com> |
| Cc: Shuah Khan <shuah@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| tools/testing/selftests/mm/mremap_test.c | 18 +++++++++++------- |
| 1 file changed, 11 insertions(+), 7 deletions(-) |
| |
| --- a/tools/testing/selftests/mm/mremap_test.c~selftests-mm-mremap_test-use-sscanf-to-parse-proc-self-maps |
| +++ a/tools/testing/selftests/mm/mremap_test.c |
| @@ -148,19 +148,21 @@ static unsigned long long get_mmap_min_a |
| * Using /proc/self/maps, assert that the specified address range is contained |
| * within a single mapping. |
| */ |
| -static bool is_range_mapped(FILE *maps_fp, void *start, void *end) |
| +static bool is_range_mapped(FILE *maps_fp, unsigned long start, |
| + unsigned long end) |
| { |
| char *line = NULL; |
| size_t len = 0; |
| bool success = false; |
| + unsigned long first_val, second_val; |
| |
| rewind(maps_fp); |
| |
| while (getline(&line, &len, maps_fp) != -1) { |
| - char *first = strtok(line, "- "); |
| - void *first_val = (void *)strtol(first, NULL, 16); |
| - char *second = strtok(NULL, "- "); |
| - void *second_val = (void *) strtol(second, NULL, 16); |
| + if (sscanf(line, "%lx-%lx", &first_val, &second_val) != 2) { |
| + ksft_exit_fail_msg("cannot parse /proc/self/maps\n"); |
| + break; |
| + } |
| |
| if (first_val <= start && second_val >= end) { |
| success = true; |
| @@ -255,7 +257,8 @@ static void mremap_expand_merge(FILE *ma |
| goto out; |
| } |
| |
| - success = is_range_mapped(maps_fp, start, start + 3 * page_size); |
| + success = is_range_mapped(maps_fp, (unsigned long)start, |
| + (unsigned long)(start + 3 * page_size)); |
| munmap(start, 3 * page_size); |
| |
| out: |
| @@ -294,7 +297,8 @@ static void mremap_expand_merge_offset(F |
| goto out; |
| } |
| |
| - success = is_range_mapped(maps_fp, start, start + 3 * page_size); |
| + success = is_range_mapped(maps_fp, (unsigned long)start, |
| + (unsigned long)(start + 3 * page_size)); |
| munmap(start, 3 * page_size); |
| |
| out: |
| _ |