Home | History | Annotate | Download | only in delete_module
      1 // SPDX-License-Identifier: GPL-2.0-or-later
      2 /*
      3  * Copyright (c) Wipro Technologies Ltd, 2002.  All Rights Reserved.
      4  * Copyright (c) 2018 Xiao Yang <yangx.jy (at) cn.fujitsu.com>
      5  */
      6 
      7 /*
      8  * AUTHOR: Madhu T L <madhu.tarikere (at) wipro.com>
      9  *
     10  * DESCRIPTION:
     11  * Basic tests for delete_module(2)
     12  * 1) insmod dummy_del_mod.ko
     13  * 2) call delete_module(2) to remove dummy_del_mod.ko
     14  */
     15 
     16 #include <errno.h>
     17 #include "old_module.h"
     18 #include "lapi/syscalls.h"
     19 #include "tst_test.h"
     20 
     21 #define MODULE_NAME	"dummy_del_mod"
     22 #define MODULE_NAME_KO	"dummy_del_mod.ko"
     23 
     24 static int module_loaded;
     25 
     26 static void do_delete_module(void)
     27 {
     28 	if (module_loaded == 0) {
     29 		tst_module_load(NULL, MODULE_NAME_KO, NULL);
     30 		module_loaded = 1;
     31 	}
     32 
     33 	TEST(tst_syscall(__NR_delete_module, MODULE_NAME, 0));
     34 	if (TST_RET == -1) {
     35 		tst_res(TFAIL | TTERRNO, "delete_module() failed to "
     36 			"remove module entry for %s ", MODULE_NAME);
     37 		return;
     38 	}
     39 
     40 	tst_res(TPASS, "delete_module() successful");
     41 	module_loaded = 0;
     42 }
     43 
     44 static void cleanup(void)
     45 {
     46 	if (module_loaded == 1)
     47 		tst_module_unload(NULL, MODULE_NAME_KO);
     48 }
     49 
     50 static struct tst_test test = {
     51 	.needs_root = 1,
     52 	.cleanup = cleanup,
     53 	.test_all = do_delete_module,
     54 };
     55