All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxim Uvarov <maxim.uvarov@oracle.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org,
	wim@iguana.be
Subject: Re: [PATCH] hpwd watchdog mark page executable
Date: Tue, 20 Dec 2011 17:33:49 -0800	[thread overview]
Message-ID: <4EF1377D.8080405@oracle.com> (raw)
In-Reply-To: <20111220165059.4e79a416.akpm@linux-foundation.org>

On 12/20/2011 04:50 PM, Andrew Morton wrote:
> On Mon,  5 Dec 2011 16:25:39 -0800
> Maxim Uvarov<maxim.uvarov@oracle.com>  wrote:
>
>> Mark hpwdt watchdog pages executable to prevent failing:
>> BUG: unable to handle kernel paging request at c00f0000
>>   IP: [<c00f0000>] 0xc00effff
>>   *pdpt = 0000000000b7c001 *pde = 0000000000cf5067 *pte = 80000000000f0163
>>   Oops: 0011 [#1] SMP
>>
>> ...
>>
>> --- a/drivers/watchdog/hpwdt.c
>> +++ b/drivers/watchdog/hpwdt.c
>> @@ -335,6 +335,8 @@ static int __devinit detect_cru_service(void)
>>   	if (p == NULL)
>>   		return -ENOMEM;
>>
>> +	set_memory_x((unsigned long)p&  PAGE_MASK, ROM_SIZE>>  PAGE_SHIFT);
>> +
>>   	for (q = p; q<  p + ROM_SIZE; q += 16) {
>>   		rc = bios32_present(q);
>>   		if (!rc)
>
> Odd.  Either nobody else is using this driver, or there's something
> special about your setup.  Are you able to explain this?
>

Code drivers/watchdog/hpwdt.c is ifdefed on 2 branches for 32 and 64 bit 
accordingly. For 64 bit address for watchdog handler is used from 
smbios, for 32 bit - from ioremap(0x000F0000, ). Accordingly 64 kernel 
unsets  _PAGE_NX flag to pages. I.e. calls set_memory_x(). But 32 bit 
did not do so. It worked on 2.6.32 and since 3.0 looks like additional 
page protection code was added. I can't find the right commit which 
changed it right now.

> Also, do you believe that this fix should be backported into earlier
> stable kernels and if so, why?
>
Andrew, I found this problem in 3.0 than checked that it exist in 
linux-next when it was 3.1+. Because it's panic on module loading,  yes 
this is critical bug and it's needs to be back-ported. (Actually this 
driver was not changed so simple cherry-pick one line patch will work.).

Maxim.
  > Thanks.


  reply	other threads:[~2011-12-21  1:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-06  0:25 [PATCH] hpwd watchdog mark page executable Maxim Uvarov
2011-12-06  0:25 ` Maxim Uvarov
2011-12-21  0:50   ` Andrew Morton
2011-12-21  1:33     ` Maxim Uvarov [this message]
2011-12-22  7:57     ` Wim Van Sebroeck

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=4EF1377D.8080405@oracle.com \
    --to=maxim.uvarov@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --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.