All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Powell <zlinuxman@wowway.com>
To: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jonathan Nieder <jrnieder@gmail.com>,
	linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
	622570@bugs.debian.org
Subject: Re: [OOPS s390] Unable to handle kernel pointer dereference at virtual kernel address (null)
Date: Wed, 20 Apr 2011 22:45:53 -0400 (EDT)	[thread overview]
Message-ID: <2008017174.74978.1303353953675.JavaMail.root@md01.wow.synacor.com> (raw)
In-Reply-To: <20110419063400.GA2878@osiris.boeblingen.de.ibm.com>

On Tue, 19 Apr 2011 02:34:01 -0400 (EDT), Heiko Carstens wrote:
> Stephen Powell wrote:
>> I installed linux-image-2.6.38-2-s390x version 2.6.38-3 on my up-to-date Wheezy
>> system today.  It runs in a virtual machine under z/VM 5.4.0 running in an LPAR
>> on an IBM z/890.  It IPLed just fine.  After the IPL, the system fell idle for a while.
>> Then a CRON job kicked off, which caused a page fault, which caused a kernel oops.
>> Here is the log:
>> ...
> 
> Ok, I was able to reproduce it and could verify that my patch fixes the bug.
> Thanks for reporting! The patch below will go upstream:

Great!  That's confirming evidence!  Thanks Heiko, Jonathan, Jan, and all others
who contributed.

> 
> Subject: [S390] pfault: fix token handling
> 
> From: Heiko Carstens <heiko.carstens@de.ibm.com>
> 
> f6649a7e "[S390] cleanup lowcore access from external interrupts" changed
> handling of external interrupts. Instead of letting the external interrupt
> handlers accessing the per cpu lowcore the entry code of the kernel reads
> already all fields that are necessary and passes them to the handlers.
> The pfault interrupt handler was incorrectly converted.  It tries to
> dereference a value which used to be a pointer to a lowcore field.  After
> the conversion however it is not anymore the pointer to the field but its
> content.  So instead of a dereference only a cast is needed to get the
> task pointer that caused the pfault.
> 
> Fixes a NULL pointer dereference and a subsequent kernel crash:
> 
> Unable to handle kernel pointer dereference at virtual kernel address (null)
> Oops: 0004 [#1] SMP
> Modules linked in: nfsd exportfs nfs lockd fscache nfs_acl auth_rpcgss sunrpc
>                    loop qeth_l3 qeth vmur ccwgroup ext3 jbd mbcache dm_mod
>                    dasd_eckd_mod dasd_diag_mod dasd_mod
> CPU: 0 Not tainted 2.6.38-2-s390x #1
> Process cron (pid: 1106, task: 000000001f962f78, ksp: 000000001fa0f9d0)
> Krnl PSW : 0404200180000000 000000000002c03e (pfault_interrupt+0xa2/0x138)
>            R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3
> Krnl GPRS: 0000000000000000 0000000000000001 0000000000000000 0000000000000001
>            000000001f962f78 0000000000518968 0000000090000002 000000001ff03280
>            0000000000000000 000000000064f000 000000001f962f78 0000000000002603
>            0000000006002603 0000000000000000 000000001ff7fe68 000000001ff7fe48
> Krnl Code: 000000000002c036: 5820d010            l       %r2,16(%r13)
>            000000000002c03a: 1832                lr      %r3,%r2
>            000000000002c03c: 1a31                ar      %r3,%r1
>           >000000000002c03e: ba23d010            cs      %r2,%r3,16(%r13)
>            000000000002c042: a744fffc            brc     4,2c03a
>            000000000002c046: a7290002            lghi    %r2,2
>            000000000002c04a: e320d0000024        stg     %r2,0(%r13)
>            000000000002c050: 07f0                bcr     15,%r0
> Call Trace:
>  ([<000000001f962f78>] 0x1f962f78)
>   [<000000000001acda>] do_extint+0xf6/0x138
>   [<000000000039b6ca>] ext_no_vtime+0x30/0x34
>   [<000000007d706e04>] 0x7d706e04
> Last Breaking-Event-Address:
>   [<0000000000000000>] 0x0
> 
> For stable maintainers:
> the first kernel which contains this bug is 2.6.37.
> 
> Reported-by: Stephen Powell <zlinuxman@wowway.com>
> Cc: Jonathan Nieder <jrnieder@gmail.com>
> Cc: stable@kernel.org
> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
> ---
> 
>  arch/s390/mm/fault.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
> index 9217e33..4cf85fe 100644
> --- a/arch/s390/mm/fault.c
> +++ b/arch/s390/mm/fault.c
> @@ -558,9 +558,9 @@ static void pfault_interrupt(unsigned int ext_int_code,
>  	 * Get the token (= address of the task structure of the affected task).
>  	 */
>  #ifdef CONFIG_64BIT
> -	tsk = *(struct task_struct **) param64;
> +	tsk = (struct task_struct *) param64;
>  #else
> -	tsk = *(struct task_struct **) param32;
> +	tsk = (struct task_struct *) param32;
>  #endif
>  
>  	if (subcode & 0x0080) {

-- 
  .''`.     Stephen Powell    
 : :'  :
 `. `'`
   `-

      parent reply	other threads:[~2011-04-21  2:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <2099315211.286690.1302917498637.JavaMail.root@md01.wow.synacor.com>
2011-04-16  1:48 ` [OOPS s390] Unable to handle kernel pointer dereference at virtual kernel address (null) Jonathan Nieder
2011-04-18  8:45   ` Jan Glauber
2011-04-18 11:51     ` Heiko Carstens
2011-04-21  2:34       ` Stephen Powell
2011-04-19  6:34   ` Heiko Carstens
2011-04-19  6:41     ` Jonathan Nieder
2011-04-21  2:45     ` Stephen Powell [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=2008017174.74978.1303353953675.JavaMail.root@md01.wow.synacor.com \
    --to=zlinuxman@wowway.com \
    --cc=622570@bugs.debian.org \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jrnieder@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@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.