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.
next prev parent 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.