[LTP] [PATCH v3] madvise11.c:Check loadable module before rmmod

Cyril Hrubis chrubis@suse.cz
Mon Mar 13 10:19:39 CET 2023


Hi!
>  /* Find and open the <debugfs>/hwpoison/unpoison-pfn special file */
>  static int open_unpoison_pfn(void)
>  {
> @@ -300,7 +324,7 @@ static int open_unpoison_pfn(void)
>  	struct mntent *mnt;
>  	FILE *mntf;
>  
> -	if (!find_in_file("/proc/modules", HW_MODULE))
> +	if (!find_in_file("/proc/modules", HW_MODULE) && !is_builtin(HW_MODULE))
>  		hwpoison_probe = 1;

That does not solve the problem completely though, if we have a kernel
where the hwpoinson_inject is set to N in config the test will attempt
to rmmod it and get different error.

I suppose that the easiest solution would be:

diff --git a/testcases/kernel/syscalls/madvise/madvise11.c b/testcases/kernel/syscalls/madvise/madvise11.c
index 7e291d571..7c0bef157 100644
--- a/testcases/kernel/syscalls/madvise/madvise11.c
+++ b/testcases/kernel/syscalls/madvise/madvise11.c
@@ -300,12 +300,12 @@ static int open_unpoison_pfn(void)
        struct mntent *mnt;
        FILE *mntf;

-       if (!find_in_file("/proc/modules", HW_MODULE))
-               hwpoison_probe = 1;
-
        /* probe hwpoison only if it isn't already there */
-       if (hwpoison_probe)
+       if (!find_in_file("/proc/modules", HW_MODULE)) {
                SAFE_CMD(cmd_modprobe, NULL, NULL);
+               if (find_in_file("/proc/modules", HW_MODULE))
+                       hwpoison_probe = 1;
+       }

        /* debugfs mount point */
        mntf = setmntent("/etc/mtab", "r");


-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list