这是我从内核写入文件的代码(我知道从内核直接读写并不是一个好主意,但这只是一个测试)。vfs_write引起内核恐慌
static void write_startup_file(char *startstring)
{
mm_segment_t oldfs;
struct file *f;
loff_t pos=0;
f = filp_open("/bin/startupcheck",O_WRONLY|O_CREAT, 0644);
oldfs = get_fs();
set_fs (KERNEL_DS);
if(f)
{
vfs_write(f,startstring, strlen(startstring), &pos);
set_fs(oldfs);
filp_close(f, NULL);
}
else
printk(KERN_CRIT "Unable to open startfile...\n");
}
我这样称呼它在另一个功能ourVeryOwnFunction()
作为
if(dbval==NULL) { write_startup_file("FAILED");}
凡dbval
是一个值为read.But当我编译内核并运行它(IM运行它在VMware)。我得到的内核恐慌是here
显然我做错了什么。寻找一些帮助。谢谢。
如果filp_open失败,会发生'old_fs'怎么办? – MirkoBanchi