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