The nfit module which is needed for nfit_test is probed and is never
unloaded. The future patches attempt to load the ndtest modules and
continue the tests for PAPR family. Let there be clean state, so
unload it.

Signed-off-by: Shivaprasad G Bhat <[email protected]>
---
 test/common |    7 +++++++
 test/core.c |   14 ++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/test/common b/test/common
index d3216a0c..d2cb3f73 100644
--- a/test/common
+++ b/test/common
@@ -31,6 +31,10 @@ if [ -z $TEST_PATH ]; then
        export TEST_PATH=.
 fi
 
+if [ ! -v NDCTL_TEST_FAMILY ]; then
+       export NDCTL_TEST_FAMILY=INTEL
+fi
+
 # NFIT_TEST_BUS[01]
 #
 NFIT_TEST_BUS0="nfit_test.0"
@@ -111,6 +115,9 @@ _cleanup()
        $NDCTL disable-region -b $NFIT_TEST_BUS0 all
        $NDCTL disable-region -b $NFIT_TEST_BUS1 all
        modprobe -r nfit_test
+       if [ $NDCTL_TEST_FAMILY == "INTEL" ]; then
+               modprobe -r nfit
+       fi
 }
 
 _init()
diff --git a/test/core.c b/test/core.c
index 7b23e258..bc7542aa 100644
--- a/test/core.c
+++ b/test/core.c
@@ -130,8 +130,22 @@ void ndctl_test_module_remove(struct kmod_ctx **ctx, 
struct kmod_module **mod,
        if (rc < 0 && rc != -ENOENT) {
                fprintf(stderr, "couldn't remove module %s\n",
                                    strerror(-rc));
+               kmod_unref(*ctx);
+               return;
        }
 
+       rc = kmod_module_new_from_name(*ctx, "nfit", mod);
+       if (rc == 0) {
+               int state = kmod_module_get_initstate(*mod);
+
+               if (state > 0) {
+                       rc = kmod_module_remove_module(*mod, 0);
+                       if (rc < 0) {
+                               fprintf(stderr, "couldn't remove module %s\n",
+                                   strerror(-rc));
+                       }
+               }
+       }
        kmod_unref(*ctx);
 }
 



Reply via email to