LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1076|回复: 1

内核读写文件时死机

[复制链接]
发表于 2007-1-5 10:06:23 | 显示全部楼层 |阅读模式
我想在内核中读写普通文件,从网上也找了相关的资料,但是实际修改了以后,一调用打开文件的函数,就会死机,不知道什么原因!但是打开特殊文件proc,不会死机!
    我编写一个模块试验可以成功!但是修改内核 文件 net/core/dev.c 中函数netif_receive_skb(),试图在数据包往网络层传递前,提取数据包中的信息,写到指定文件中,现在只能写到特殊文件proc目录下,一调用open或sys_open或filp_open就会死机!系众高手在百忙之中给予指点,不胜感激!
    简单程序:

int netif_receive_skb(struct sk_buff *skb)
{
//此处省略一些变量定义及简单操作

//以下为添加代码
//if the protocol is pppoe or ppp,then do
if( skb->protocol == htons(ETH_P_PPP_DISC)
|| skb->protocol == htons(ETH_P_PPP_SES) )
{
                    old_fs = get_fs();
                    set_fs(KERNEL_DS);

fd = sys_open("/poe",O_RDWR|O_CREAT,0);
if(fd)
{
printk(" in file \n");
//sys_write(fd,skb->data,skb->data_len);
//sys_close(fd);
close(fd);
}
                  
                     set_fs(old_fs);                     

//其它操作
         }
         //其它操作
}
发表于 2007-6-7 14:52:13 | 显示全部楼层
long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
{
    char *tmp = getname(filename);

这个函数是取用户空间的东东,你那个调用的地方用的是内核栈里面的内存。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表