All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wanlong Gao <gaowanlong@cn.fujitsu.com>
To: Tomas Winkler <tomas.winkler@intel.com>
Cc: gregkh@linuxfoundation.org, hdegoede@redhat.com, wim@iguana.be,
	arnd@arndb.de, alan@linux.intel.com,
	linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org,
	Borislav Petkov <bp@alien8.de>,
	Jerry Snitselaar <jerry.snitselaar@oracle.com>
Subject: Re: [char-misc for 3.8] mei: avoid oops in watchdog unregister code path
Date: Mon, 17 Dec 2012 10:39:15 +0800	[thread overview]
Message-ID: <50CE85D3.3070209@cn.fujitsu.com> (raw)
In-Reply-To: <1355656997-30659-1-git-send-email-tomas.winkler@intel.com>

On 12/16/2012 07:23 PM, Tomas Winkler wrote:
> With commit c7d3df3 "mei: use internal watchdog device registration
> tracking" will crash the kernel on shutdown path on systems
> where ME watchdog is not present.
> Since the watchdog was never initialized in such case
> the WDOG_UNREGISTERED bit is never set and the system
> crashes on access to uninitialized variables down the path.
> 
> To solve the issue we query for NULL on watchdog driver driver_data
> to check whether the device is registered. This is handled in the
> driver and doesn't depend on watchdog core internals.
> 
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Wanlong Gao <gaowanlong@cn.fujitsu.com>
> Signed-off-by: Jerry Snitselaar <jerry.snitselaar@oracle.com>
> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>

Fixed the panic here, thank you.

Tested-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>

> ---
>  drivers/misc/mei/wd.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/misc/mei/wd.c b/drivers/misc/mei/wd.c
> index 636409f..9299a8c 100644
> --- a/drivers/misc/mei/wd.c
> +++ b/drivers/misc/mei/wd.c
> @@ -370,7 +370,7 @@ void mei_watchdog_register(struct mei_device *dev)
>  
>  void mei_watchdog_unregister(struct mei_device *dev)
>  {
> -	if (test_bit(WDOG_UNREGISTERED, &amt_wd_dev.status))
> +	if (watchdog_get_drvdata(&amt_wd_dev) == NULL)
>  		return;
>  
>  	watchdog_set_drvdata(&amt_wd_dev, NULL);
> 


      reply	other threads:[~2012-12-17  2:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-16 11:23 [char-misc for 3.8] mei: avoid oops in watchdog unregister code path Tomas Winkler
2012-12-17  2:39 ` Wanlong Gao [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=50CE85D3.3070209@cn.fujitsu.com \
    --to=gaowanlong@cn.fujitsu.com \
    --cc=alan@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=jerry.snitselaar@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=tomas.winkler@intel.com \
    --cc=wim@iguana.be \
    /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.