[PATCH 6.1.y] selftests/vm: fix undefined reference of the `default_huge_page_size`

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The commit a584c7734a4d ("selftests: mm: fix map_hugetlb failure on
64K page size systems") backported the fix from v6.8 to stable v6.1.
The patch uses default_huge_page_size() function, which definition
moved into vm_util.[ch] by commit bd4d67e76f699 ("selftests/mm:
merge default_huge_page_size() into one") merged to upsream since
v6.4. However, in v6.1 common definition/declaration for the
default_huge_page_size() we doesn't have, the following build
error is seen:

map_hugetlb.c:79:25: warning: implicit declaration of function
‘default_huge_page_size’ [-Wimplicit-function-declaration]
   79 |         hugepage_size = default_huge_page_size();
      |                         ^~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccx95BZz.o: in function `main':
map_hugetlb.c:(.text+0x104): undefined reference to
`default_huge_page_size'

Place default_huge_page_size() function body into map_hugetlb.c
to fix this issue.

Fixes: a584c7734a4d ("selftests: mm: fix map_hugetlb failure on 64K page size systems")
Signed-off-by: Andrey Kalachev <kalachev@xxxxxxxxx>
---
 tools/testing/selftests/vm/map_hugetlb.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tools/testing/selftests/vm/map_hugetlb.c b/tools/testing/selftests/vm/map_hugetlb.c
index c65c55b7a789..5826c50b6736 100644
--- a/tools/testing/selftests/vm/map_hugetlb.c
+++ b/tools/testing/selftests/vm/map_hugetlb.c
@@ -67,6 +67,30 @@ static int read_bytes(char *addr, size_t length)
 	return 0;
 }
 
+/*
+ * default_huge_page_size copied from mlock2-tests.c
+ */
+unsigned long default_huge_page_size(void)
+{
+	unsigned long hps = 0;
+	char *line = NULL;
+	size_t linelen = 0;
+	FILE *f = fopen("/proc/meminfo", "r");
+
+	if (!f)
+		return 0;
+	while (getline(&line, &linelen, f) > 0) {
+		if (sscanf(line, "Hugepagesize:       %lu kB", &hps) == 1) {
+			hps <<= 10;
+			break;
+		}
+	}
+
+	free(line);
+	fclose(f);
+	return hps;
+}
+
 int main(int argc, char **argv)
 {
 	void *addr;
-- 
2.39.5





[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux