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: PTiedem@xxxxxxxxxx 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 jgarzik@xxxxxxxxx, netdev@xxxxxxxxxxxxxxx, linux-s390@xxxxxxxxxxxxxxx, Peter Tiedemann/Germany/IBM@IBMDE Subject Re: [patch 1/1] ctc: make use of alloc_netdev() On Thu, 29 Nov 2007 17:36:27 +0100 Ursula Braun <braunu@xxxxxxxxxx> wrote: > From: Peter Tiedemann <ptiedem@xxxxxxxxxx> > > 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. > > Signed-off-by: Peter Tiedemann <ptiedem@xxxxxxxxxx> > Signed-off-by: Ursula Braun <braunu@xxxxxxxxxx> > --- > drivers/s390/net/ctcmain.c | 45 ++++++++++++++++----------------------------- > 1 file changed, 16 insertions(+), 29 deletions(-) > > Index: linux-2.6-uschi/drivers/s390/net/ctcmain.c > =================================================================== > --- linux-2.6-uschi.orig/drivers/s390/net/ctcmain.c > +++ linux-2.6-uschi/drivers/s390/net/ctcmain.c > @@ -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; > Why not use standard private data area, rather than allocating it separately? -- Stephen Hemminger <shemminger@xxxxxxxxxxxxxxxxxxxx> - To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html