device_create() 与IS_ERR问题

sr501_device = device_create(class_for_sr501,NULL,MKDEV(major,0),NULL,"mysr501");
if(IS_ERR(sr501_device))
{
	printk(KERN_ERR"device_create()err \n");
	ret = PTR_ERR(sr501_device); 
	goto err_2;
}

编译为ko文件后加载会进入if然后报错
报错码表示没有这样的设备

然后我查看 /proc/devices 已经成功创建了设备,并且卸载也能正常卸载

我尝试把if判断全部注释掉,假设创建设备成功,ko文件也能正常使用,请问是哪里出了差错呢?

呃呃呃呃呃,/proc/devices 下面的设备是通过register_chrdev注册的,并不是device_create注册的,看了一下/dev/下面的设备,确实没有创建设备节点

然后排查是因为file_operations里的.owner = THIS_MODULE没写,导致设备无法创建