s390: ctc patch for 2.6.24
Subsystems (4)
cover s390: ctc patch for 2.6.24
Signature · 2 lines
The following patch is intended for 2.6.24 and repairs the ctc driver by introducing alloc_netdev().
PATCH 1/1 ctc: make use of alloc_netdev()
From: Peter Tiedemann <[email protected]>
Currently ctc-device initialization is broken (kernel bug in ctc_new_device).
The new network namespace code reveals a deficiency of the ctc driver. It should make use of alloc_netdev() as described in Documentation/networking/netdevices.txt.
--- drivers/s390/net/ctcmain.c | 45 ++++++++++++++++----------------------------- 1 file changed, 16 insertions(+), 29 deletions(-)
drivers/s390/net/ctcmain.c +16 -29
@@ -2782,35 +2782,14 @@ ctc_probe_device(struct ccwgroup_device }/** -* Initialize everything of the net device except the name and the -* channel structs. +* Device setup function called by alloc_netdev(). +* +* @param dev Device to be setup. */ -static struct net_device * -ctc_init_netdevice (struct net_device * dev,int alloc_device, -struct ctc_priv *privptr) +void ctc_init_netdevice (struct net_device * dev) { -if (!privptr) -return NULL ; -DBF_TEXT (setup,3 , __FUNCTION__); -if (alloc_device) { - dev =kzalloc (sizeof (struct net_device ),GFP_KERNEL ); -if (!dev) -return NULL ; - } - - dev->priv = privptr; - privptr->fsm =init_fsm ("ctcdev" , dev_state_names, - dev_event_names,CTC_NR_DEV_STATES ,CTC_NR_DEV_EVENTS , - dev_fsm,DEV_FSM_LEN ,GFP_KERNEL ); -if (privptr->fsm ==NULL ) { -if (alloc_device) -kfree (dev); -return NULL ; - } -fsm_newstate (privptr->fsm,DEV_STATE_STOPPED ); -fsm_settimer (privptr->fsm, &privptr->restart_timer);if (dev->mtu ==0 ) dev->mtu =CTC_BUFSIZE_DEFAULT -LL_HEADER_LENGTH -2 ; dev->hard_start_xmit = ctc_tx;
@@ -2823,7 +2802,7 @@ ctc_init_netdevice(struct net_device * d dev->type =ARPHRD_SLIP ; dev->tx_queue_len =100 ; dev->flags =IFF_POINTOPOINT |IFF_NOARP ; -return dev; +SET_MODULE_OWNER (dev); }
@@ -2879,14 +2858,22 @@ ctc_new_device(struct ccwgroup_device *c "ccw_device_set_online (cdev[1]) failed with ret = %d\n", ret); } - dev =ctc_init_netdevice (NULL ,1 , privptr); - + dev =alloc_netdev (0 ,"ctc%d" , ctc_init_netdevice);if (!dev) {ctc_pr_warn ("ctc_init_netdevice failed\n" ); goto out; } + dev->priv = privptr; -strlcpy (dev->name,"ctc%d" ,IFNAMSIZ ); + privptr->fsm =init_fsm ("ctcdev" , dev_state_names, + dev_event_names,CTC_NR_DEV_STATES ,CTC_NR_DEV_EVENTS , + dev_fsm,DEV_FSM_LEN ,GFP_KERNEL ); +if (privptr->fsm ==NULL ) { +free_netdev (dev); + goto out; + } +fsm_newstate (privptr->fsm,DEV_STATE_STOPPED ); +fsm_settimer (privptr->fsm, &privptr->restart_timer);for (direction =READ ; direction <=WRITE ; direction++) { privptr->channel[direction] =
Re: [patch 1/1] ctc: make use of alloc_netdev()
Quoted 70 lines · On Thu, 29 Nov 2007 17:36:27 +0100 Ursula Braun <[email protected]> wrote:
From: Peter Tiedemann <[email protected]>
Currently ctc-device initialization is broken (kernel bug in
ctc_new_device).
The new network namespace code reveals a deficiency of the ctc driver. It should make use ofalloc_netdev()as described inDocumentation/networking/netdevices.txt.Signed-off-by Peter Tiedemann <[email protected]>Signed-off-by Ursula Braun <[email protected]>--- drivers/s390/net/ctcmain.c | 45 ++++++++++++++++----------------------------- 1 file changed, 16 insertions(+), 29 deletions(-)Index:
linux-2.6-uschi/drivers/s390/net/ctcmain.c
===================================================================drivers/s390/net/ctcmain.c +5
-26@@ -2782,35 +2782,14 @@ ctc_probe_device(struct ccwgroup_device }/** -* Initialize everything of the net device except the name and the -* channel structs. +* Device setup function called by alloc_netdev(). +* +* @param dev Device to be setup. */ -static struct net_device * -ctc_init_netdevice (struct net_device * dev,int alloc_device, -struct ctc_priv *privptr) +void ctc_init_netdevice (struct net_device * dev) { -if (!privptr) -return NULL ; -DBF_TEXT (setup,3 , __FUNCTION__); -if (alloc_device) { - dev =kzalloc (sizeof (struct net_device ),GFP_KERNEL ); -if (!dev) -return NULL ; - } - - dev->priv = privptr; - privptr->fsm =init_fsm ("ctcdev" , dev_state_names, - dev_event_names,CTC_NR_DEV_STATES ,CTC_NR_DEV_EVENTS , - dev_fsm,DEV_FSM_LEN ,GFP_KERNEL ); -if (privptr->fsm ==NULL ) { -if (alloc_device) -kfree (dev); -return NULL ; - } -fsm_newstate (privptr->fsm,DEV_STATE_STOPPED ); -fsm_settimer (privptr->fsm, &privptr->restart_timer);if (dev->mtu ==0 ) dev->mtu =CTC_BUFSIZE_DEFAULT -LL_HEADER_LENGTH -2 ; dev->hard_start_xmit = ctc_tx;@@ -2823,7 +2802,7 @@ ctc_init_netdevice(struct net_device * d dev->type =ARPHRD_SLIP ; dev->tx_queue_len =100 ; dev->flags =IFF_POINTOPOINT |IFF_NOARP ; -return dev; +SET_MODULE_OWNER (dev); }@@ -2879,14 +2858,22 @@ ctc_new_device(struct ccwgroup_device *c "ccw_device_set_online (cdev[1]) failed with ret = %d\n", ret); }
drivers/s390/net/ctcmain.c ctc_new_device(struct ccwgroup_device *c · line 2867
Quoted 10 lines
drivers/s390/net/ctcmain.c +2
-2- dev =ctc_init_netdevice (NULL ,1 , privptr); - + dev =alloc_netdev (0 ,"ctc%d" , ctc_init_netdevice);if (!dev) {ctc_pr_warn ("ctc_init_netdevice failed\n" ); goto out; } + dev->priv = privptr;
Why not use standard private data area, rather than allocating it separately?
Signature · 1 line
Stephen Hemminger <[email protected]>
Re: [patch 1/1] ctc: make use of alloc_netdev()
To maintain the area used for sysfs attribute data which may be stored already previously.
Mit freundlichen Grüßen / Best regards / Saluti,
Peter Tiedemann
---------------------------------
phone: +49-7031-16-4172 fax: ++3159 e-mail: [email protected]
IBM Deutschland Entwicklung GmbH
Linux for eServer Development, Dept. 3303
Schoenaicher Str. 220
71032 Boeblingen, Germany
IBM Deutschland Entwicklung GmbH, Vorsitzender des Aufsichtsrats: Martin Jetter, Geschäftsführung: Herbert Kircher
Sitz der Gesellschaft: Böblingen, Registergericht: Amtsgericht Stuttgart, HRB 243294
Stephen Hemminger
<shemminger@linux
-foundation.org> To
Ursula Braun1/Germany/IBM@IBMDE
29.11.2007 18:12 cc
[email protected], [email protected], [email protected], Peter Tiedemann/Germany/IBM@IBMDE
Subject
Re: [patch 1/1] ctc: make use of alloc_netdev()
Quoted 8 lines · On Thu, 29 Nov 2007 17:36:27 +0100 Ursula Braun <[email protected]> wrote:
From: Peter Tiedemann <[email protected]>
Currently ctc-device initialization is broken (kernel bug in
ctc_new_device).
The new network namespace code reveals a deficiency of the ctc driver. It should make use ofalloc_netdev()as described inDocumentation/networking/netdevices.txt.
Quoted 4 lines
Signed-off-by Peter Tiedemann <[email protected]>Signed-off-by Ursula Braun <[email protected]>--- drivers/s390/net/ctcmain.c | 45
++++++++++++++++-----------------------------
Quoted 18 lines
1 file changed, 16 insertions(+), 29 deletions(-)Index:
linux-2.6-uschi/drivers/s390/net/ctcmain.c
===================================================================drivers/s390/net/ctcmain.c +3
-4@@ -2782,35 +2782,14 @@ ctc_probe_device(struct ccwgroup_device }/** -* Initialize everything of the net device except the name and the -* channel structs. +* Device setup function called by alloc_netdev(). +* +* @param dev Device to be setup. */ -static struct net_device * -ctc_init_netdevice(struct net_device * dev, int alloc_device,
drivers/s390/net/ctcmain.c ctc_probe_device(struct ccwgroup_device · line 2798
Quoted 10 lines
drivers/s390/net/ctcmain.c +1
-6- struct ctc_priv *privptr) +void ctc_init_netdevice (struct net_device * dev) { -if (!privptr) -return NULL ; -DBF_TEXT (setup,3 , __FUNCTION__); -if (alloc_device) { - dev = kzalloc(sizeof(struct net_device),
GFP_KERNEL);
drivers/s390/net/ctcmain.c ctc_probe_device(struct ccwgroup_device
Quoted 7 lines
drivers/s390/net/ctcmain.c +0
-7-if (!dev) -return NULL ; - } - - dev->priv = privptr; - privptr->fsm = init_fsm("ctcdev", dev_state_names, - dev_event_names,
CTC_NR_DEV_STATES, CTC_NR_DEV_EVENTS,
drivers/s390/net/ctcmain.c ctc_probe_device(struct ccwgroup_device · line 2806
Quoted 1 line
drivers/s390/net/ctcmain.c +0
-1- dev_fsm, DEV_FSM_LEN,
GFP_KERNEL);
drivers/s390/net/ctcmain.c ctc_probe_device(struct ccwgroup_device
Quoted 9 lines
drivers/s390/net/ctcmain.c +0
-7-if (privptr->fsm ==NULL ) { -if (alloc_device) -kfree (dev); -return NULL ; - } -fsm_newstate (privptr->fsm,DEV_STATE_STOPPED ); -fsm_settimer (privptr->fsm, &privptr->restart_timer);if (dev->mtu ==0 ) dev->mtu =CTC_BUFSIZE_DEFAULT -LL_HEADER_LENGTH
- 2;
drivers/s390/net/ctcmain.c ctc_new_device(struct ccwgroup_device *c · line 2858
Quoted 12 lines
drivers/s390/net/ctcmain.c +1
-1dev->hard_start_xmit = ctc_tx;@@ -2823,7 +2802,7 @@ ctc_init_netdevice(struct net_device * d dev->type =ARPHRD_SLIP ; dev->tx_queue_len =100 ; dev->flags =IFF_POINTOPOINT |IFF_NOARP ; -return dev; +SET_MODULE_OWNER (dev); }@@ -2879,14 +2858,22 @@ ctc_new_device(struct ccwgroup_device *c "ccw_device_set_online (cdev[1])
failed with ret = %d\n", ret);
drivers/s390/net/ctcmain.c ctc_new_device(struct ccwgroup_device *c · line 2867
Quoted 11 lines
drivers/s390/net/ctcmain.c +2
-2} - dev =ctc_init_netdevice (NULL ,1 , privptr); - + dev =alloc_netdev (0 ,"ctc%d" , ctc_init_netdevice);if (!dev) {ctc_pr_warn ("ctc_init_netdevice failed\n" ); goto out; } + dev->priv = privptr;
Why not use standard private data area, rather than allocating it separately?
--
Stephen Hemminger <[email protected]>
Jeff Garzik
AppliedRe: [patch 1/1] ctc: make use of alloc_netdev()
In reply to Ursula Braunapplied