From: "Michael Chan" <mchan@broadcom.com>
To: "Flavio Leitner" <fbl@redhat.com>
Cc: netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH] bnx2: do not start the interface if reset fails
Date: Thu, 14 Jul 2011 17:13:25 -0700 [thread overview]
Message-ID: <1310688805.7032.1.camel@HP1> (raw)
In-Reply-To: <1310579690-24622-1-git-send-email-fbl@redhat.com>
On Wed, 2011-07-13 at 10:54 -0700, Flavio Leitner wrote:
> When bnx2_reset_task() is called, it will stop,
> (re)initialize and start the interface to restore
> the working condition.
>
> The bnx2_init_nic() calls bnx2_reset_nic() which will
> reset the chip and then call bnx2_free_skbs() to free
> all the skbs.
>
> The problem happens when bnx2_init_chip() fails because
> bnx2_reset_nic() will just return skipping the ring
> initializations at bnx2_init_all_rings(). Later, the
> reset task starts the interface again and the system
> crashes due a NULL pointer access (no skb in the ring).
>
> This patch just check the return code and if an error is
> reported, warn the user and abort. It's better to have a
> non working interface than a crash.
>
> Signed-off-by: Flavio Leitner <fbl@redhat.com>
> ---
> drivers/net/bnx2.c | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
> index 7915d14..7fb71fc 100644
> --- a/drivers/net/bnx2.c
> +++ b/drivers/net/bnx2.c
> @@ -6296,6 +6296,7 @@ static void
> bnx2_reset_task(struct work_struct *work)
> {
> struct bnx2 *bp = container_of(work, struct bnx2, reset_task);
> + int rc;
>
> rtnl_lock();
> if (!netif_running(bp->dev)) {
> @@ -6305,10 +6306,15 @@ bnx2_reset_task(struct work_struct *work)
>
> bnx2_netif_stop(bp, true);
>
> - bnx2_init_nic(bp, 1);
> + rc = bnx2_init_nic(bp, 1);
> + if (rc) {
> + netdev_err(bp->dev, "failed to reset the NIC, aborting\n");
> + goto out;
> + }
I think it is better to call dev_close() instead. I'll post a patch
soon. Thanks.
>
> atomic_set(&bp->intr_sem, 1);
> bnx2_netif_start(bp, true);
> +out:
> rtnl_unlock();
> }
>
prev parent reply other threads:[~2011-07-15 0:20 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-13 17:54 [PATCH] bnx2: do not start the interface if reset fails Flavio Leitner
2011-07-15 0:06 ` David Miller
2011-07-15 0:13 ` Michael Chan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1310688805.7032.1.camel@HP1 \
--to=mchan@broadcom.com \
--cc=fbl@redhat.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.