Skip to content

Commit

Permalink
[IRLAN]: handle out of memory errors
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Akinobu Mita authored and David S. Miller committed Feb 8, 2007
1 parent bb5aa42 commit 719647e
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions net/irda/irlan/irlan_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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)
Expand Down

0 comments on commit 719647e

Please sign in to comment.