Kmalloc в dentry_open(): паника ядра
Я работаю над ядром Linux 2.6.34.14.
Я добавил (в include/linux/fs.h) в файл структуры указатель на структуру, определенную ранее, таким образом:
struct session{
char *session_buffer;
loff_t session_dimension;
};
struct file {
struct session *sess_punt;
}
После этого мне нужно разместить свою структуру в open.c и сделать это в dentry_open (fs / open.c).
С помощью этого кода я хочу сказать: если при вызове open существует определенный флаг, тогда выделите структуру и буфер в структуре.
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".
Почему? Где я не прав?