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: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (whitespace)
This commit is contained in:
committed by
Stefan Richter
parent
fdc0092bfd
commit
809e905ce7
@@ -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(ð1394_highlevel);
|
hpsb_register_highlevel(ð1394_highlevel);
|
||||||
return hpsb_register_protocol(ð1394_proto_driver);
|
err = hpsb_register_protocol(ð1394_proto_driver);
|
||||||
|
if (err) {
|
||||||
|
hpsb_unregister_highlevel(ð1394_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(ð1394_proto_driver);
|
hpsb_unregister_protocol(ð1394_proto_driver);
|
||||||
hpsb_unregister_highlevel(ð1394_highlevel);
|
hpsb_unregister_highlevel(ð1394_highlevel);
|
||||||
|
Reference in New Issue
Block a user