From: David Brownell <dbrown...@users.sourceforge.net> Do spinlock initialization during davinci_emac::probe(), when the lock is allocated, not each time it's opened. That's the correct place to do such work.
More significantly, fix a bug: one of the three spinlocks was never getting initialized, preventing the system from booting in some cases (e.g. running with lockdep). Signed-off-by: David Brownell <dbrown...@users.sourceforge.net> --- Let this be a reminder to developers: run lockdep routinely, if not all the time. It exposes many more bugs than it hides. drivers/net/davinci_emac.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -2402,9 +2402,6 @@ static int emac_dev_open(struct net_devi for (cnt = 0; cnt <= ETH_ALEN; cnt++) ndev->dev_addr[cnt] = priv->mac_addr[cnt]; - spin_lock_init(&priv->tx_lock); - spin_lock_init(&priv->rx_lock); - /* Configuration items */ priv->rx_buf_size = EMAC_DEF_MAX_FRAME_SIZE + EMAC_DEF_EXTRA_RXBUF_SIZE; @@ -2631,6 +2628,10 @@ static int __devinit davinci_emac_probe( priv->ndev = ndev; priv->msg_enable = netif_msg_init(debug_level, DAVINCI_EMAC_DEBUG); + spin_lock_init(&priv->tx_lock); + spin_lock_init(&priv->rx_lock); + spin_lock_init(&priv->lock); + /* MAC addr: from platform_data */ if (pdev->dev.platform_data) { struct emac_platform_data *pdata = pdev->dev.platform_data; _______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source