[IRLAN]: handle out of memory errors

This patch checks return values:

- irlmp_register_client()
- irlmp_register_service()
- irlan_open()

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Akinobu Mita 2007-02-07 00:12:13 -08:00 committed by David S. Miller
parent bb5aa42734
commit 719647e213

View File

@ -144,12 +144,18 @@ static int __init irlan_init(void)
/* Register with IrLMP as a client */
ckey = irlmp_register_client(hints, &irlan_client_discovery_indication,
NULL, NULL);
if (!ckey)
goto err_ckey;
/* Register with IrLMP as a service */
skey = irlmp_register_service(hints);
skey = irlmp_register_service(hints);
if (!skey)
goto err_skey;
/* Start the master IrLAN instance (the only one for now) */
new = irlan_open(DEV_ADDR_ANY, DEV_ADDR_ANY);
new = irlan_open(DEV_ADDR_ANY, DEV_ADDR_ANY);
if (!new)
goto err_open;
/* The master will only open its (listen) control TSAP */
irlan_provider_open_ctrl_tsap(new);
@ -158,6 +164,17 @@ static int __init irlan_init(void)
irlmp_discovery_request(DISCOVERY_DEFAULT_SLOTS);
return 0;
err_open:
irlmp_unregister_service(skey);
err_skey:
irlmp_unregister_client(ckey);
err_ckey:
#ifdef CONFIG_PROC_FS
remove_proc_entry("irlan", proc_irda);
#endif /* CONFIG_PROC_FS */
return -ENOMEM;
}
static void __exit irlan_cleanup(void)