* [KJ] linux-2.6.9: add errorcheck for netlink
@ 2004-11-27 16:30 walter harms
0 siblings, 0 replies; only message in thread
From: walter harms @ 2004-11-27 16:30 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 3969 bytes --]
Hi list,
i moved the netlink patches from 2.6.7 to 2.6.9.
it adds 2 error checks.
1. register_netdevice_notifier()
2. sock_register()
To propagate the error i changed the type from void to int.
re,
walter
Signed-off-by: walter harms <wharms@bfs.de>
--- linux-2.6.9/net/core/rtnetlink.c.bak 2004-11-26
22:11:15.000000000 +0100
+++ linux-2.6.9/net/core/rtnetlink.c 2004-11-26 23:22:00.000000000 +0100
@@ -653,7 +653,7 @@
.notifier_call = rtnetlink_event,
};
-void __init rtnetlink_init(void)
+int __init rtnetlink_init(void)
{
int i;
@@ -661,17 +661,34 @@
for (i = 0; i < ARRAY_SIZE(rta_max); i++)
if (rta_max[i] > rtattr_max)
rtattr_max = rta_max[i];
+
rta_buf = kmalloc(rtattr_max * sizeof(struct rtattr *), GFP_KERNEL);
- if (!rta_buf)
- panic("rtnetlink_init: cannot allocate rta_buf\n");
+ if (!rta_buf) {
+ printk(KERN_CRIT "%s: cannot allocate rta_buf\n",__FUNCTION__);
+ goto no_mem;
+ }
rtnl = netlink_kernel_create(NETLINK_ROUTE, rtnetlink_rcv);
- if (rtnl == NULL)
- panic("rtnetlink_init: cannot initialize rtnetlink\n");
+ if (rtnl == NULL) {
+ printk(KERN_CRIT "%s: cannot initialize rtnetlink\n",__FUNCTION__);
+ goto no_netlink;
+ }
netlink_set_nonroot(NETLINK_ROUTE, NL_NONROOT_RECV);
- register_netdevice_notifier(&rtnetlink_dev_notifier);
+
+ if ( register_netdevice_notifier(&rtnetlink_dev_notifier) < 0 ) {
+
+ printk(KERN_ERR "%s: cannot initialize rtnetlink
notifier\n",__FUNCTION__);
+ goto no_netlink;
+ }
+
rtnetlink_links[PF_UNSPEC] = link_rtnetlink_table;
rtnetlink_links[PF_PACKET] = link_rtnetlink_table;
+ return 0;
+
+no_netlink:
+ kfree(rtnl);
+no_mem:
+ return -1;
}
EXPORT_SYMBOL(__rta_fill);
--- linux-2.6.9/include/linux/rtnetlink.h.bak 2004-11-26
22:59:02.000000000 +0100
+++ linux-2.6.9/include/linux/rtnetlink.h 2004-11-26 23:00:09.986720520
+0100
@@ -805,7 +805,7 @@
extern void rtnl_lock(void);
extern void rtnl_unlock(void);
-extern void rtnetlink_init(void);
+extern int rtnetlink_init(void);
#define ASSERT_RTNL() do { \
if (unlikely(down_trylock(&rtnl_sem) == 0)) { \
--- linux-2.6.9/net/netlink/af_netlink.c.bak 2004-11-26
22:24:29.000000000 +0100
+++ linux-2.6.9/net/netlink/af_netlink.c 2004-11-26 22:44:22.000000000 +0100
@@ -1209,29 +1209,51 @@
.owner = THIS_MODULE, /* for consistency 8) */
};
-static int __init netlink_proto_init(void)
-{
- struct sk_buff *dummy_skb;
- if (sizeof(struct netlink_skb_parms) > sizeof(dummy_skb->cb)) {
- printk(KERN_CRIT "netlink_init: panic\n");
- return -1;
- }
- sock_register(&netlink_family_ops);
+static void __exit netlink_proto_exit(void)
+{
+ sock_unregister(PF_NETLINK);
#ifdef CONFIG_PROC_FS
- proc_net_fops_create("netlink", 0, &netlink_seq_fops);
+ proc_net_remove("netlink");
#endif
- /* The netlink device handler may be needed early. */
- rtnetlink_init();
- return 0;
}
-static void __exit netlink_proto_exit(void)
+static int __init netlink_proto_init(void)
{
- sock_unregister(PF_NETLINK);
- proc_net_remove("netlink");
+ struct sk_buff *dummy_skb;
+#ifdef CONFIG_PROC_FS
+ struct proc_dir_entry *proc;
+#endif
+ int err;
+
+ if (sizeof(struct netlink_skb_parms) > sizeof(dummy_skb->cb)) {
+ printk(KERN_CRIT "netlink_init: panic\n");
+ return -1;
+ }
+ err = sock_register(&netlink_family_ops);
+ if (err < 0)
+ return err;
+
+#ifdef CONFIG_PROC_FS
+ proc = proc_net_fops_create("netlink", 0, &netlink_seq_fops);
+ if (!proc) {
+ sock_unregister(PF_NETLINK);
+ return -ENOMEM;
+ }
+#endif
+
+ /* The netlink device handler may be needed early. */
+ if ( rtnetlink_init() < 0) {
+ netlink_proto_exit();
+ return -1;
+ } ;
+
+ return 0;
}
+
+
+
core_initcall(netlink_proto_init);
module_exit(netlink_proto_exit);
[-- Attachment #2: Type: text/plain, Size: 167 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-11-27 16:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-27 16:30 [KJ] linux-2.6.9: add errorcheck for netlink walter harms
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.