Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbee0d3f authored by Wang Chen's avatar Wang Chen Committed by David S. Miller
Browse files

[ATM]: When proc_create() fails, do some error handling work and return -ENOMEM.

parent da990a24
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -947,6 +947,8 @@ static const struct file_operations arp_seq_fops = {
};
#endif

static void atm_clip_exit_noproc(void);

static int __init atm_clip_init(void)
{
	neigh_table_init_no_netlink(&clip_tbl);
@@ -963,18 +965,22 @@ static int __init atm_clip_init(void)
		struct proc_dir_entry *p;

		p = proc_create("arp", S_IRUGO, atm_proc_root, &arp_seq_fops);
		if (!p) {
			printk(KERN_ERR "Unable to initialize "
			       "/proc/net/atm/arp\n");
			atm_clip_exit_noproc();
			return -ENOMEM;
		}
	}
#endif

	return 0;
}

static void __exit atm_clip_exit(void)
static void atm_clip_exit_noproc(void)
{
	struct net_device *dev, *next;

	remove_proc_entry("arp", atm_proc_root);

	unregister_inetaddr_notifier(&clip_inet_notifier);
	unregister_netdevice_notifier(&clip_dev_notifier);

@@ -1005,6 +1011,13 @@ static void __exit atm_clip_exit(void)
	clip_tbl_hook = NULL;
}

static void __exit atm_clip_exit(void)
{
	remove_proc_entry("arp", atm_proc_root);

	atm_clip_exit_noproc();
}

module_init(atm_clip_init);
module_exit(atm_clip_exit);
MODULE_AUTHOR("Werner Almesberger");
+4 −0
Original line number Diff line number Diff line
@@ -1250,6 +1250,10 @@ static int __init lane_module_init(void)
	struct proc_dir_entry *p;

	p = proc_create("lec", S_IRUGO, atm_proc_root, &lec_seq_fops);
	if (!p) {
		printk(KERN_ERR "Unable to initialize /proc/net/atm/lec\n");
		return -ENOMEM;
	}
#endif

	register_atm_ioctl(&lane_ioctl_ops);