dentry_open()中的Kmalloc:内核恐慌

时间:2013-11-30 10:34:41

标签: c linux-kernel kmalloc

我正在研究内核linux 2.6.34.14。

我在struct file中添加了一个指向之前定义的struct的指针(在include / linux / fs.h中),这样:

struct session{
    char *session_buffer;
    loff_t session_dimension;
};

struct file {
struct session *sess_punt;

}

之后,我需要在open.c中分配我的struct并在dentry_open(fs / open.c)中执行。

使用这段代码我想说:如果在调用open时有一个特定的标志,那么在struct中分配struct和buffer。

if(f->f_flags & O_SESSION){
    f->sess_punt = kmalloc(sizeof(struct session), GFP_KERNEL);
    f->sess_punt -> session_buffer = kmalloc(MAX_BUFFER_SIZE, GFP_KERNEL);  
    //f->sess_punt -> session_dimension = 0;
}
else f->sess_punt = NULL;

问题如下:

我编译新内核,一切都很好。我尝试进入该内核但我收到消息“内核恐慌 - 没有同步:试图杀死init”。

为什么?我哪里错了?

0 个答案:

没有答案