LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 964|回复: 2

在设备驱动程序函数disconnect中访问dev->bulk_in_buffer报内核bug.....

[复制链接]
发表于 2008-5-4 17:34:21 | 显示全部楼层 |阅读模式
static void skel_disconnect(struct usb_device *udev, void *ptr)
{
        struct usb_skel *dev;
        int minor;

        dev = (struct usb_skel *)ptr;
                printk(KERN_NOTICE  "dev->bulk_in_buffer=%s\n",dev->bulk_in_buffer);
......................
}

以上是我用2.4.20内核修改的usb设备驱动程序中一部分。。
我在rmmod设备驱动程序模块时,总是提示内核bug..bug如下。
Unable to handle kernel null pointer dereference at virtual address 00000074
printing eip :c012e533
*pde = 00000000
Oops:0000
.................



首先,我的模块是可以insmod上去的。。而且可以探测到我的设备,但是之后再rmmod就不行了。。。
我觉得可能是disconnect参数 void * ptr没有传入正确的设备指针。。
那位牛牛能帮帮忙。。。。
发表于 2008-5-5 09:35:07 | 显示全部楼层
总感觉, 这个 ptr 是之前自己注册的回调数据, 那么当时真的正确注册了吗? 也许楼主应该检查一下 connect 或类似的初始化函数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 11:10:53 | 显示全部楼层
问题已解决。。
主要是探测函数probe的问题。。探测函数的返回的设备指针应该就传递给了disconnect 中的ptr,而我的探测函数返回值写错了,因此,总是报错。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表