* [KJ] Re: linux-2.6.9: add errorcheck for netlink
@ 2004-12-15 16:13 Domen Puncer
2004-12-15 19:21 ` Domen Puncer
2004-12-15 21:01 ` Jim Nelson
0 siblings, 2 replies; 3+ messages in thread
From: Domen Puncer @ 2004-12-15 16:13 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 4765 bytes --]
On 27/11/04 17:30 +0100, walter harms wrote:
> 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
Fix mailer not to wrap lines.
> +++ 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 ) {
Whitespace damage.
> +
> + 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;
How about -ENOMEM or similar?
Also: nl_table isn't freed.
> }
>
> 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);
Moving functions instead of predeclaring?
It makes reviewing harder.
> +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();
You can't call __exit function from non-__exit.
(If this is linked in kernel __exit stuff gets discarded)
> + return -1;
> + } ;
> +
> + return 0;
> }
>
> +
> +
> +
?
> core_initcall(netlink_proto_init);
> module_exit(netlink_proto_exit);
>
> _______________________________________________
> Kernel-janitors mailing list
> Kernel-janitors@lists.osdl.org
> http://lists.osdl.org/mailman/listinfo/kernel-janitors
[-- 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] 3+ messages in thread* [KJ] Re: linux-2.6.9: add errorcheck for netlink
2004-12-15 16:13 [KJ] Re: linux-2.6.9: add errorcheck for netlink Domen Puncer
@ 2004-12-15 19:21 ` Domen Puncer
2004-12-15 21:01 ` Jim Nelson
1 sibling, 0 replies; 3+ messages in thread
From: Domen Puncer @ 2004-12-15 19:21 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 3859 bytes --]
On 15/12/04 19:25 +0100, walter harms wrote:
>
> >
> >Fix mailer not to wrap lines.
> >
>
> I am unsing now mozilla-mail hope that help,
> if i have more time i will switch to something more easy.
>
>
>
>
>
> >> rtnetlink_links[PF_UNSPEC] = link_rtnetlink_table;
> >> rtnetlink_links[PF_PACKET] = link_rtnetlink_table;
> >>+ return 0;
> >>+
> >>+no_netlink:
> >>+ kfree(rtnl);
> >>+no_mem:
> >>+ return -1;
> >
> >
> >How about -ENOMEM or similar?
> >Also: nl_table isn't freed.
> >
>
> Whitespace fixed
> -ENOM instead of -1
> freeing rta_buf
> what is nl_table ? typo ? i missed something ?
Uh, mixed that up; should have been rta_buf
>
>
>
> >
> >>}
> >>
> >>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);
> >
> >
> >Moving functions instead of predeclaring?
> >It makes reviewing harder.
> >
> >
> >>+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();
> >
> >
> >You can't call __exit function from non-__exit.
> >(If this is linked in kernel __exit stuff gets discarded)
> >
> >
> >>+ return -1;
> >>+ } ;
> >>+
> >>+ return 0;
> >>}
> >>
>
> + whitespace fixed 'if ( rtnetlink_init'
> + netlink_proto_exit is prototyped
> Will you move the function in front of _init again ?
> A prototype for a 2 liner is noise for me :)
Ah, false alarm then; looked like moving big functions, but is in fact
indentiation (in original tabs, in you version spaces).
>
> + i removed CONFIG_PROC_FS from the exit code since i have learned
> that proc_net_remove() will be empty in that case
Right.
>
> re,
> walter
>
[-- 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] 3+ messages in thread* Re: [KJ] Re: linux-2.6.9: add errorcheck for netlink
2004-12-15 16:13 [KJ] Re: linux-2.6.9: add errorcheck for netlink Domen Puncer
2004-12-15 19:21 ` Domen Puncer
@ 2004-12-15 21:01 ` Jim Nelson
1 sibling, 0 replies; 3+ messages in thread
From: Jim Nelson @ 2004-12-15 21:01 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 510 bytes --]
Domen Puncer wrote:
> On 15/12/04 19:25 +0100, walter harms wrote:
>
>>>Fix mailer not to wrap lines.
>>>
>>
>>I am unsing now mozilla-mail hope that help,
>>if i have more time i will switch to something more easy.
>>
>>
Drop mozilla-mail for submitting patches. We hashed this out on LKML a couple of
months ago - see:
http://lkml.org/lkml/2004/10/22/488
I use the sendpatchset script written by Paul Jackson at:
http://www.speakeasy.net/~pj99/sgi/sendpatchset
It makes life much easier.
Jim Nelson
[-- 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] 3+ messages in thread
end of thread, other threads:[~2004-12-15 21:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-15 16:13 [KJ] Re: linux-2.6.9: add errorcheck for netlink Domen Puncer
2004-12-15 19:21 ` Domen Puncer
2004-12-15 21:01 ` Jim Nelson
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.