内核模块无法卸载

zhoufanking 2008-06-05 02:13:05
早上写了个模块加载到内核里,结果卸载的时候说设备忙?我用lsmod看了一下,我的模块used by那一栏里是0[permanent],之后我又加载了一个以前写的module,一切正常,lsmod 中 used by 就没有那个[permanent],这个是什么意思啊?如何会导致一个模块的used by里变成permanent?下面是module的代码和makefile
/**************module code********************/
include <linux/proc_fs.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/ip.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("ZHOUFAN");

#define proc_name "my_proc"


static struct proc_dir_entry *proc_file;
static struct nf_hook_ops nfinfo;

static int frame_count = 0;

int rd_proc(char *page, char **start, off_t off, int count, int *eof, void *data)
{
int ret;
printk(KERN_INFO"procfile_read(/proc/%s) called\n",proc_name);

if ( off > 0)
{
ret = 0;
}else {
ret = sprintf(page,"frame_count is %d \n",frame_count);
}

return ret;
}

unsigned int my_hook_fn( unsigned int hooknum,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn) ( struct sk_buff *))
{
frame_count++;

return NF_DROP;
}


int init_module()
{

nfinfo.hook = my_hook_fn;
nfinfo.pf = PF_INET;
nfinfo.hooknum = NF_IP_POST_ROUTING;
nfinfo.priority = NF_IP_PRI_FIRST;

nf_register_hook( &nfinfo );

proc_file = create_proc_entry(proc_name,0,NULL);

if( NULL == proc_file)

{
remove_proc_entry(proc_name,&proc_root);
printk(KERN_ALERT"Error:could not initialize /proc/%s\n",proc_name);
return -ENOMEM;
}

proc_file->read_proc= rd_proc;


printk(KERN_INFO"/proc/%s created\n", proc_name);
return 0;
}

void cleanup_moduel()
{
printk(KERN_INFO"entering cleanup module!\n");

nf_unregister_hook( &nfinfo );

printk(KERN_INFO"hook function unregistered\n");

remove_proc_entry(proc_name,&proc_root);

printk(KERN_INFO"/proc/%s removed\n", proc_name);
}

...全文
254 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sourceid 2008-06-07
  • 打赏
  • 举报
回复
把void cleanup_moduel()改为
void cleanup_module() .
内核认为这模块没有清除方法而认为是[permanent].
zhoufanking 2008-06-07
  • 打赏
  • 举报
回复
呵呵,原来是module给拼错了!谢谢啦!!
无知者无谓 2008-06-06
  • 打赏
  • 举报
回复
尝试一下清掉所有的iptables策略
zhoufanking 2008-06-06
  • 打赏
  • 举报
回复
我觉得不是这个问题,因为以前在写模块时(没有用到netfilter)也曾经遇到这样的情况。
zhoufanking 2008-06-05
  • 打赏
  • 举报
回复
/************************Makefile********************************/
obj-m := myproc.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
install:
su -c "/sbin/insmod myproc.ko"
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧