Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934559AbZLQBV2 (ORCPT ); Wed, 16 Dec 2009 20:21:28 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1763643AbZLQBUj (ORCPT ); Wed, 16 Dec 2009 20:20:39 -0500 Received: from kroah.org ([198.145.64.141]:48005 "EHLO coco.kroah.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1763585AbZLQBUb (ORCPT ); Wed, 16 Dec 2009 20:20:31 -0500 X-Mailbox-Line: From gregkh@mini.kroah.org Wed Dec 16 17:16:04 2009 Message-Id: <20091217011604.090632427@mini.kroah.org> User-Agent: quilt/0.48-1 Date: Wed, 16 Dec 2009 17:14:58 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@kernel.org Cc: stable-review@kernel.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, Alexander Beregalov , "David S. Miller" Subject: [47/90] Au1x00: fix crash when trying register_netdev() In-Reply-To: <20091217011835.GA20434@kroah.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1891 Lines: 53 2.6.31-stable review patch. If anyone has any objections, please let us know. ------------------ From: Alexander Beregalov [ Upstream commit 63edaf647607795a065e6956a79c47f500dc8447 ] Andreas Lohre reported that the driver crashes when trying to register_netdev(), he sugessted to move dev->netdev_ops initialization before calling register_netdev(), it worked for him. Reported-by: Andreas Lohre Signed-off-by: Alexander Beregalov Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/au1000_eth.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) --- a/drivers/net/au1000_eth.c +++ b/drivers/net/au1000_eth.c @@ -1089,7 +1089,14 @@ static struct net_device * au1000_probe( return NULL; } - if ((err = register_netdev(dev)) != 0) { + dev->base_addr = base; + dev->irq = irq; + dev->netdev_ops = &au1000_netdev_ops; + SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops); + dev->watchdog_timeo = ETH_TX_TIMEOUT; + + err = register_netdev(dev); + if (err != 0) { printk(KERN_ERR "%s: Cannot register net device, error %d\n", DRV_NAME, err); free_netdev(dev); @@ -1207,12 +1214,6 @@ static struct net_device * au1000_probe( aup->tx_db_inuse[i] = pDB; } - dev->base_addr = base; - dev->irq = irq; - dev->netdev_ops = &au1000_netdev_ops; - SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops); - dev->watchdog_timeo = ETH_TX_TIMEOUT; - /* * The boot code uses the ethernet controller, so reset it to start * fresh. au1000_init() expects that the device is in reset state. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/