David Brownell <[email protected]> writes:

> From: David Brownell <[email protected]>
>
> 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 <[email protected]>

Thanks, applied.

Kevin


> ---
> 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
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to