提交 809e905c 编写于 作者: A Akinobu Mita 提交者: Stefan Richter

ieee1394: eth1394: fix error path in module_init

This patch fixes some error handlings in eth1394:

- check return value of kmem_cache_create()
- cleanup resources if hpsb_register_protocol() fails
Signed-off-by: NAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (whitespace)
上级 fdc0092b
...@@ -1667,17 +1667,26 @@ static struct ethtool_ops ethtool_ops = { ...@@ -1667,17 +1667,26 @@ static struct ethtool_ops ethtool_ops = {
.get_drvinfo = ether1394_get_drvinfo .get_drvinfo = ether1394_get_drvinfo
}; };
static int __init ether1394_init_module (void) static int __init ether1394_init_module(void)
{ {
int err;
packet_task_cache = kmem_cache_create("packet_task", packet_task_cache = kmem_cache_create("packet_task",
sizeof(struct packet_task), sizeof(struct packet_task),
0, 0, NULL, NULL); 0, 0, NULL, NULL);
if (!packet_task_cache)
return -ENOMEM;
hpsb_register_highlevel(&eth1394_highlevel); hpsb_register_highlevel(&eth1394_highlevel);
return hpsb_register_protocol(&eth1394_proto_driver); err = hpsb_register_protocol(&eth1394_proto_driver);
if (err) {
hpsb_unregister_highlevel(&eth1394_highlevel);
kmem_cache_destroy(packet_task_cache);
}
return err;
} }
static void __exit ether1394_exit_module (void) static void __exit ether1394_exit_module(void)
{ {
hpsb_unregister_protocol(&eth1394_proto_driver); hpsb_unregister_protocol(&eth1394_proto_driver);
hpsb_unregister_highlevel(&eth1394_highlevel); hpsb_unregister_highlevel(&eth1394_highlevel);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册