当前位置: 技术问答>linux和unix
LINUX中USB的INIT有个浅显的错误,不知大家发现没有?
来源: 互联网 发布时间:2017-01-06
本文导语: usb_init中有如下代码: static int_usb_init(void) { ...... retval=bus_register(&usb_bus_type); if(retval) goto bus_register_failed; ...... bus_unregister(&usb_bus_type); bus_register_failed: ksuspend_usb_cleanup ...... } 如果调用bus_register(&usb_bus_type...
usb_init中有如下代码:
static int_usb_init(void)
{
......
retval=bus_register(&usb_bus_type);
if(retval)
goto bus_register_failed;
......
bus_unregister(&usb_bus_type);
bus_register_failed:
ksuspend_usb_cleanup
......
}
如果调用bus_register(&usb_bus_type)失败,应该调用bus_unregister(&usb_bus_type),大家看看上面的程序调用了什么?竟然调用了ksuspend_usb_cleanup,这是个错误,还是我理解有误?
static int_usb_init(void)
{
......
retval=bus_register(&usb_bus_type);
if(retval)
goto bus_register_failed;
......
bus_unregister(&usb_bus_type);
bus_register_failed:
ksuspend_usb_cleanup
......
}
如果调用bus_register(&usb_bus_type)失败,应该调用bus_unregister(&usb_bus_type),大家看看上面的程序调用了什么?竟然调用了ksuspend_usb_cleanup,这是个错误,还是我理解有误?
|
个人认为这个 ksuspend_usb_cleanup 应该代表一系列的反操作,清除在bus_register()之前申请的一些资源。