* [PATCH] AS apple talk protocol register_snap_client failed
@ 2007-12-14 6:03 guanxun mu
2007-12-14 19:23 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: guanxun mu @ 2007-12-14 6:03 UTC (permalink / raw)
To: linux-kernel
[PACTH APPLETALK]
This patch update proto_init process when register_snap_client failed
Signed-off-by: Michale Moore <lyxmoo@gmail.com>
diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c
index 6c5c6dc..d6573f6 100644
--- a/net/appletalk/aarp.c
+++ b/net/appletalk/aarp.c
@@ -873,7 +873,10 @@ void __init aarp_proto_init(void)
{
aarp_dl = register_snap_client(aarp_snap_id, aarp_rcv);
if (!aarp_dl)
- printk(KERN_CRIT "Unable to register AARP with SNAP.\n");
+ {
+ printk(KERN_CRIT "Unable to register AARP with SNAP.\n");
+ return;
+ }
init_timer(&aarp_timer);
aarp_timer.function = aarp_expire_timeout;
aarp_timer.data = 0;
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
index e0d37d6..ce9929c 100644
--- a/net/appletalk/ddp.c
+++ b/net/appletalk/ddp.c
@@ -1894,9 +1894,9 @@ static int __init atalk_init(void)
(void)sock_register(&atalk_family_ops);
ddp_dl = register_snap_client(ddp_snap_id, atalk_rcv);
- if (!ddp_dl)
- printk(atalk_err_snap);
-
+ if (!ddp_dl)
+ goto failed;
+
dev_add_pack(<alk_packet_type);
dev_add_pack(&ppptalk_packet_type);
@@ -1906,7 +1906,13 @@ static int __init atalk_init(void)
atalk_register_sysctl();
out:
return rc;
+failed:
+ printk(atalk_err_snap);
+ sock_unregister(PF_APPLETALK);
+ proto_unregister(&ddp_proto);
+ return -1;
}
+
module_init(atalk_init);
/*
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] AS apple talk protocol register_snap_client failed
2007-12-14 6:03 [PATCH] AS apple talk protocol register_snap_client failed guanxun mu
@ 2007-12-14 19:23 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2007-12-14 19:23 UTC (permalink / raw)
To: lyxmoo; +Cc: linux-kernel
From: "guanxun mu" <lyxmoo@gmail.com>
Date: Fri, 14 Dec 2007 14:03:05 +0800
> [PACTH APPLETALK]
>
> This patch update proto_init process when register_snap_client failed
>
> Signed-off-by: Michale Moore <lyxmoo@gmail.com>
>
> diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c
> index 6c5c6dc..d6573f6 100644
> --- a/net/appletalk/aarp.c
> +++ b/net/appletalk/aarp.c
> @@ -873,7 +873,10 @@ void __init aarp_proto_init(void)
> {
> aarp_dl = register_snap_client(aarp_snap_id, aarp_rcv);
> if (!aarp_dl)
> - printk(KERN_CRIT "Unable to register AARP with SNAP.\n");
> + {
> + printk(KERN_CRIT "Unable to register AARP with SNAP.\n");
> + return;
> + }
> init_timer(&aarp_timer);
> aarp_timer.function = aarp_expire_timeout;
> aarp_timer.data = 0;
Wrong coding style, the openning brace should be on the same line
as the if() check, see Documentation/CodingStyle Your email
client has also corrupted the tab characters into spaces, making
the patch unusable even if it were correct.
Next, if you are going to do this, you should modify aarp_proto_init()
to return error values, so that atalk_init() can see it and thus
undo the initialization it does and return an error for the module
load.
It is not useful to add error checks, without propagating them,
because an OOPS is just as good as a partially-initialized protocol
since that is likely to crash or malfunction as well.
The protocol is thus equally broken before and after your changes.
Please completely implement this fix, thank you.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-12-14 19:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-14 6:03 [PATCH] AS apple talk protocol register_snap_client failed guanxun mu
2007-12-14 19:23 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome