2.6.35版本的内核中使用mach函数匹配设备名与驱动名时,如果用strncmp(dev->init_name, drv->name, strlen(dev->name));将会出现空指针的OOP异常, 原因为内容中有如下代码:
if (dev->init_name) {
dev_set_name(dev, dev->init_name);
dev->init_name = NULL;
if (dev->init_name) {
dev_set_name(dev, dev->init_name);
dev->init_name = NULL;
}
说明设置dev在设备层次中的名字,即设置dev->kobj.name后,init_name被置为空了,可以用dev->kobj,name来进行匹配。