All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@redhat.com>
To: Pavan Naregundi <pavan@linux.vnet.ibm.com>
Cc: "Américo Wang" <xiyou.wangcong@gmail.com>,
	"Simon Horman" <horms@verge.net.au>,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	hbabu@us.ibm.com
Subject: Re: [PATCH] Fix Oops in crash_shrink_memory
Date: Wed, 9 Jun 2010 10:05:08 -0400	[thread overview]
Message-ID: <20100609140507.GA31154@redhat.com> (raw)
In-Reply-To: <1276064834.2622.7.camel@pavan.naregundi>

On Wed, Jun 09, 2010 at 11:57:14AM +0530, Pavan Naregundi wrote:
> On Wed, 2010-06-09 at 12:44 +0900, Simon Horman wrote:
> > On Tue, Jun 08, 2010 at 03:11:47PM +0530, Pavan Naregundi wrote:
> > > On Tue, 2010-06-08 at 16:54 +0800, Américo Wang wrote:
> > > > On Tue, Jun 08, 2010 at 02:10:05PM +0530, Pavan Naregundi wrote:
> > > > >On Tue, 2010-06-08 at 15:59 +0800, Américo Wang wrote:
> > > > >> On Tue, Jun 08, 2010 at 12:37:37PM +0530, Pavan Naregundi wrote:
> > > > >> >Adding CC's..
> > > > >> >
> > > > >> >
> > > > >> >On Mon, 2010-06-07 at 12:58 +0530, Pavan Naregundi wrote:
> > > > >> >> Hi Everyone,
> > > > >> >> 
> > > > >> >> Please add me to CC in your reply..
> > > > >> >> 
> > > > >> >> When crashkernel is not enabled, "echo 0 > /sys/kernel/kexec_crash_size"
> > > > >> >> will generate OOPS message in the kernel. Below is the OOPS message and
> > > > >> >> other details,
> > > > >> >> 
> > > > >> >> # cat /proc/cmdline 
> > > > >> >> ro  LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us console=hvc0
> > > > >> >> rhgb root=UUID=eafd9874-010c-46f9-a0c6-ea8db7c61ac3
> > > > >> >> # uname -a
> > > > >> >> Linux XXXXXXXX 2.6.35-rc1 #1 SMP Mon Jun 7 18:04:53 IST 2010 ppc64 ppc64
> > > > >> >> ppc64 GNU/Linux
> > > > >> >> # cd /sys/kernel/
> > > > >> >> # ls
> > > > >> >> debug               kexec_loaded  profiling      uevent_seqnum
> > > > >> >> kexec_crash_loaded  mm            security       vmcoreinfo
> > > > >> >> kexec_crash_size    notes         uevent_helper
> > > > >> >> # cat kexec_crash_loaded
> > > > >> >> 0
> > > > >> >> # cat kexec_loaded
> > > > >> >> 0
> > > > >> >> # cat kexec_crash_size
> > > > >> >> 1
> > > > >> >> # echo 0 > kexec_crash_size
> > > > >> >> Unable to handle kernel paging request for data at address 0x00000030
> > > > >> >> Faulting instruction address: 0xc0000000000930b4
> > > > >> >> Oops: Kernel access of bad area, sig: 11 [#1]
> > > > >> >> SMP NR_CPUS=1024 NUMA pSeries
> > > > >> >> last sysfs file: /sys/kernel/kexec_crash_size
> > > > >> >> Modules linked in: sunrpc ipv6 ext3 jbd dm_mirror dm_region_hash dm_log
> > > > >> >> dm_multipath dm_mod uinput sg ehea sr_mod ibmveth cdrom ext4 jbd2
> > > > >> >> mbcache sd_mod crc_t10dif ibmvscsic scsi_transport_srp scsi_tgt [last
> > > > >> >> unloaded: scsi_wait_scan]
> > > > >> >> NIP: c0000000000930b4 LR: c0000000000930ac CTR: c0000000000b7ce0
> > > > >> >> REGS: c0000000b7803750 TRAP: 0300   Not tainted  (2.6.35-rc1)
> > > > >> >> MSR: 8000000000009032 <EE,ME,IR,DR>  CR: 28242482  XER: 20000000
> > > > >> >> DAR: 0000000000000030, DSISR: 0000000040000000
> > > > >> >> TASK = c0000000b9cc3dc0[1381] 'bash' THREAD: c0000000b7800000 CPU: 12
> > > > >> >> GPR00: c0000000000930ac c0000000b78039d0 c000000000e885a8
> > > > >> >> c000000000f42950 
> > > > >> >> GPR04: c0000000b7803af0 0000000000000008 0000000000000002
> > > > >> >> c0000000005c6438 
> > > > >> >> GPR08: 0000000000000000 000000008000000c 0000000000000000
> > > > >> >> 0000000000000000 
> > > > >> >> GPR12: 0000000040242448 c000000007441e00 00000000100f6210
> > > > >> >> 0000000000000000 
> > > > >> >> GPR16: 00000000100f4a38 00000000100cfb98 00000000100f4bdc
> > > > >> >> 00000000100f4b4c 
> > > > >> >> GPR20: 00000000103f4de8 0000000000000000 0000000000000000
> > > > >> >> 00000000100f0000 
> > > > >> >> GPR24: c0000000005c65c0 0000000000000000 c000000000da83e0
> > > > >> >> c0000000bc67f780 
> > > > >> >> GPR28: c0000000bc684ae0 c000000000f42950 c000000000e1e3f8
> > > > >> >> c000000000da8408 
> > > > >> >> NIP [c0000000000930b4] .release_resource+0x34/0xe0
> > > > >> >> LR [c0000000000930ac] .release_resource+0x2c/0xe0
> > > > >> >> Call Trace:
> > > > >> >> [c0000000b78039d0] [c0000000000930ac] .release_resource+0x2c/0xe0
> > > > >> >> (unreliable)
> > > > >> >> [c0000000b7803a60] [c0000000000d4fc8] .crash_shrink_memory+0x1c8/0x1f0
> > > > >> >> [c0000000b7803b30] [c0000000000b7d38] .kexec_crash_size_store+0x58/0x90
> > > > >> >> [c0000000b7803bc0] [c0000000002b0bb4] .kobj_attr_store+0x34/0x50
> > > > >> >> [c0000000b7803c30] [c000000000226d5c] .sysfs_write_file+0xec/0x1f0
> > > > >> >> [c0000000b7803ce0] [c00000000019e0bc] .vfs_write+0xec/0x1f0
> > > > >> >> [c0000000b7803d80] [c00000000019e2e8] .SyS_write+0x58/0xb0
> > > > >> >> [c0000000b7803e30] [c00000000000852c] syscall_exit+0x0/0x40
> > > > >> >> Instruction dump:
> > > > >> >> fba1ffe8 fbc1fff0 fbe1fff8 ebc2b228 7c7f1b78 f8010010 f821ff71 ebbe8000 
> > > > >> >> 7fa3eb78 484e35d9 60000000 e97f0020 <e92b0030> 2fa90000 419e002c
> > > > >> >> 7fbf4800 
> > > > >> >> ---[ end trace afbc780462c9bf4e ]---
> > > > >> >> 
> > > > >> >> When crashkernel is not enabled, crashk_res resource have not been
> > > > >> >> reserved. Hence crashk_res.parent will be NULL.
> > > > >> >> 
> > > > >> >> Attaching a simple patch to this problem. Patch is tested and resolves this bug.
> > > > >> 
> > > > >> 
> > > > >> Ouch...
> > > > >> 
> > > > >> The patch indeed addresses the problem, looks good to me.
> > > > >> Please add your Signed-off-by and my:
> > > > >> 
> > > > >> Reviewed-by: WANG Cong <xiyou.wangcong@gmail.com>
> > > > >> 
> > > > >> Another problem is that you should get 0 instead of 1 when you don't
> > > > >> reserve any memory.
> > > > >
> > > > >We get 1 here because, crash_get_memory_size() adds 1 as below, 
> > > > >
> > > > >size = crashk_res.end - crashk_res.start + 1;
> > > > >
> > > > >We cant remove this addition, as it is required to display correct size
> > > > >in case if we reserve the crash memory.
> > > > 
> > > > Yeah, but 0 is a special case, isn't it?
> > > 
> > > Yes, it is a special case.
> > > 
> > > Prepared a new patch which solves both of this issues.
> > > 
> > > 1. OOPs in crash_shrink_memory
> > > 2. make crash_get_memory_size to return correct size, in case of crash
> > > memory not reserved.
> > > 
> > > Patch is tested.
> > > 
> 
> > > +	if(crashk_res.end != crashk_res.start)
> > > +		size = crashk_res.end - crashk_res.start + 1;
> > 
> > Minor style-issue: there should be a space between if and (.
> > 
> 
> Sorry for that.
> 
> Resending the patch with fixed style issues.
> 

Looks good to me.

Acked-by: Vivek Goyal <vgoyal@redhat.com>

Thanks
Vivek

> Signed-off-by: Pavan Naregundi <pavan@linux.vnet.ibm.com>
> Reviewed-by: WANG Cong <xiyou.wangcong@gmail.com>
> --
> 
> 



_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

WARNING: multiple messages have this Message-ID (diff)
From: Vivek Goyal <vgoyal@redhat.com>
To: Pavan Naregundi <pavan@linux.vnet.ibm.com>
Cc: "Simon Horman" <horms@verge.net.au>,
	"Américo Wang" <xiyou.wangcong@gmail.com>,
	linux-kernel@vger.kernel.org, hbabu@us.ibm.com,
	kexec@lists.infradead.org
Subject: Re: [PATCH] Fix Oops in crash_shrink_memory
Date: Wed, 9 Jun 2010 10:05:08 -0400	[thread overview]
Message-ID: <20100609140507.GA31154@redhat.com> (raw)
In-Reply-To: <1276064834.2622.7.camel@pavan.naregundi>

On Wed, Jun 09, 2010 at 11:57:14AM +0530, Pavan Naregundi wrote:
> On Wed, 2010-06-09 at 12:44 +0900, Simon Horman wrote:
> > On Tue, Jun 08, 2010 at 03:11:47PM +0530, Pavan Naregundi wrote:
> > > On Tue, 2010-06-08 at 16:54 +0800, Américo Wang wrote:
> > > > On Tue, Jun 08, 2010 at 02:10:05PM +0530, Pavan Naregundi wrote:
> > > > >On Tue, 2010-06-08 at 15:59 +0800, Américo Wang wrote:
> > > > >> On Tue, Jun 08, 2010 at 12:37:37PM +0530, Pavan Naregundi wrote:
> > > > >> >Adding CC's..
> > > > >> >
> > > > >> >
> > > > >> >On Mon, 2010-06-07 at 12:58 +0530, Pavan Naregundi wrote:
> > > > >> >> Hi Everyone,
> > > > >> >> 
> > > > >> >> Please add me to CC in your reply..
> > > > >> >> 
> > > > >> >> When crashkernel is not enabled, "echo 0 > /sys/kernel/kexec_crash_size"
> > > > >> >> will generate OOPS message in the kernel. Below is the OOPS message and
> > > > >> >> other details,
> > > > >> >> 
> > > > >> >> # cat /proc/cmdline 
> > > > >> >> ro  LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us console=hvc0
> > > > >> >> rhgb root=UUID=eafd9874-010c-46f9-a0c6-ea8db7c61ac3
> > > > >> >> # uname -a
> > > > >> >> Linux XXXXXXXX 2.6.35-rc1 #1 SMP Mon Jun 7 18:04:53 IST 2010 ppc64 ppc64
> > > > >> >> ppc64 GNU/Linux
> > > > >> >> # cd /sys/kernel/
> > > > >> >> # ls
> > > > >> >> debug               kexec_loaded  profiling      uevent_seqnum
> > > > >> >> kexec_crash_loaded  mm            security       vmcoreinfo
> > > > >> >> kexec_crash_size    notes         uevent_helper
> > > > >> >> # cat kexec_crash_loaded
> > > > >> >> 0
> > > > >> >> # cat kexec_loaded
> > > > >> >> 0
> > > > >> >> # cat kexec_crash_size
> > > > >> >> 1
> > > > >> >> # echo 0 > kexec_crash_size
> > > > >> >> Unable to handle kernel paging request for data at address 0x00000030
> > > > >> >> Faulting instruction address: 0xc0000000000930b4
> > > > >> >> Oops: Kernel access of bad area, sig: 11 [#1]
> > > > >> >> SMP NR_CPUS=1024 NUMA pSeries
> > > > >> >> last sysfs file: /sys/kernel/kexec_crash_size
> > > > >> >> Modules linked in: sunrpc ipv6 ext3 jbd dm_mirror dm_region_hash dm_log
> > > > >> >> dm_multipath dm_mod uinput sg ehea sr_mod ibmveth cdrom ext4 jbd2
> > > > >> >> mbcache sd_mod crc_t10dif ibmvscsic scsi_transport_srp scsi_tgt [last
> > > > >> >> unloaded: scsi_wait_scan]
> > > > >> >> NIP: c0000000000930b4 LR: c0000000000930ac CTR: c0000000000b7ce0
> > > > >> >> REGS: c0000000b7803750 TRAP: 0300   Not tainted  (2.6.35-rc1)
> > > > >> >> MSR: 8000000000009032 <EE,ME,IR,DR>  CR: 28242482  XER: 20000000
> > > > >> >> DAR: 0000000000000030, DSISR: 0000000040000000
> > > > >> >> TASK = c0000000b9cc3dc0[1381] 'bash' THREAD: c0000000b7800000 CPU: 12
> > > > >> >> GPR00: c0000000000930ac c0000000b78039d0 c000000000e885a8
> > > > >> >> c000000000f42950 
> > > > >> >> GPR04: c0000000b7803af0 0000000000000008 0000000000000002
> > > > >> >> c0000000005c6438 
> > > > >> >> GPR08: 0000000000000000 000000008000000c 0000000000000000
> > > > >> >> 0000000000000000 
> > > > >> >> GPR12: 0000000040242448 c000000007441e00 00000000100f6210
> > > > >> >> 0000000000000000 
> > > > >> >> GPR16: 00000000100f4a38 00000000100cfb98 00000000100f4bdc
> > > > >> >> 00000000100f4b4c 
> > > > >> >> GPR20: 00000000103f4de8 0000000000000000 0000000000000000
> > > > >> >> 00000000100f0000 
> > > > >> >> GPR24: c0000000005c65c0 0000000000000000 c000000000da83e0
> > > > >> >> c0000000bc67f780 
> > > > >> >> GPR28: c0000000bc684ae0 c000000000f42950 c000000000e1e3f8
> > > > >> >> c000000000da8408 
> > > > >> >> NIP [c0000000000930b4] .release_resource+0x34/0xe0
> > > > >> >> LR [c0000000000930ac] .release_resource+0x2c/0xe0
> > > > >> >> Call Trace:
> > > > >> >> [c0000000b78039d0] [c0000000000930ac] .release_resource+0x2c/0xe0
> > > > >> >> (unreliable)
> > > > >> >> [c0000000b7803a60] [c0000000000d4fc8] .crash_shrink_memory+0x1c8/0x1f0
> > > > >> >> [c0000000b7803b30] [c0000000000b7d38] .kexec_crash_size_store+0x58/0x90
> > > > >> >> [c0000000b7803bc0] [c0000000002b0bb4] .kobj_attr_store+0x34/0x50
> > > > >> >> [c0000000b7803c30] [c000000000226d5c] .sysfs_write_file+0xec/0x1f0
> > > > >> >> [c0000000b7803ce0] [c00000000019e0bc] .vfs_write+0xec/0x1f0
> > > > >> >> [c0000000b7803d80] [c00000000019e2e8] .SyS_write+0x58/0xb0
> > > > >> >> [c0000000b7803e30] [c00000000000852c] syscall_exit+0x0/0x40
> > > > >> >> Instruction dump:
> > > > >> >> fba1ffe8 fbc1fff0 fbe1fff8 ebc2b228 7c7f1b78 f8010010 f821ff71 ebbe8000 
> > > > >> >> 7fa3eb78 484e35d9 60000000 e97f0020 <e92b0030> 2fa90000 419e002c
> > > > >> >> 7fbf4800 
> > > > >> >> ---[ end trace afbc780462c9bf4e ]---
> > > > >> >> 
> > > > >> >> When crashkernel is not enabled, crashk_res resource have not been
> > > > >> >> reserved. Hence crashk_res.parent will be NULL.
> > > > >> >> 
> > > > >> >> Attaching a simple patch to this problem. Patch is tested and resolves this bug.
> > > > >> 
> > > > >> 
> > > > >> Ouch...
> > > > >> 
> > > > >> The patch indeed addresses the problem, looks good to me.
> > > > >> Please add your Signed-off-by and my:
> > > > >> 
> > > > >> Reviewed-by: WANG Cong <xiyou.wangcong@gmail.com>
> > > > >> 
> > > > >> Another problem is that you should get 0 instead of 1 when you don't
> > > > >> reserve any memory.
> > > > >
> > > > >We get 1 here because, crash_get_memory_size() adds 1 as below, 
> > > > >
> > > > >size = crashk_res.end - crashk_res.start + 1;
> > > > >
> > > > >We cant remove this addition, as it is required to display correct size
> > > > >in case if we reserve the crash memory.
> > > > 
> > > > Yeah, but 0 is a special case, isn't it?
> > > 
> > > Yes, it is a special case.
> > > 
> > > Prepared a new patch which solves both of this issues.
> > > 
> > > 1. OOPs in crash_shrink_memory
> > > 2. make crash_get_memory_size to return correct size, in case of crash
> > > memory not reserved.
> > > 
> > > Patch is tested.
> > > 
> 
> > > +	if(crashk_res.end != crashk_res.start)
> > > +		size = crashk_res.end - crashk_res.start + 1;
> > 
> > Minor style-issue: there should be a space between if and (.
> > 
> 
> Sorry for that.
> 
> Resending the patch with fixed style issues.
> 

Looks good to me.

Acked-by: Vivek Goyal <vgoyal@redhat.com>

Thanks
Vivek

> Signed-off-by: Pavan Naregundi <pavan@linux.vnet.ibm.com>
> Reviewed-by: WANG Cong <xiyou.wangcong@gmail.com>
> --
> 
> 



  reply	other threads:[~2010-06-09 14:05 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-07  7:28 [PATCH] Fix Oops in crash_shrink_memory Pavan Naregundi
2010-06-08  7:07 ` Pavan Naregundi
2010-06-08  7:07   ` Pavan Naregundi
2010-06-08  7:59   ` Américo Wang
2010-06-08  7:59     ` Américo Wang
2010-06-08  8:40     ` Pavan Naregundi
2010-06-08  8:40       ` Pavan Naregundi
2010-06-08  8:54       ` Américo Wang
2010-06-08  8:54         ` Américo Wang
2010-06-08  9:41         ` Pavan Naregundi
2010-06-08  9:41           ` Pavan Naregundi
2010-06-09  3:44           ` Simon Horman
2010-06-09  3:44             ` Simon Horman
2010-06-09  6:27             ` Pavan Naregundi
2010-06-09  6:27               ` Pavan Naregundi
2010-06-09 14:05               ` Vivek Goyal [this message]
2010-06-09 14:05                 ` Vivek Goyal
2010-06-10 21:26               ` Andrew Morton
2010-06-10 21:26                 ` Andrew Morton
2010-06-11  7:30                 ` Pavan Naregundi
2010-06-11  7:30                   ` Pavan Naregundi

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=20100609140507.GA31154@redhat.com \
    --to=vgoyal@redhat.com \
    --cc=hbabu@us.ibm.com \
    --cc=horms@verge.net.au \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavan@linux.vnet.ibm.com \
    --cc=xiyou.wangcong@gmail.com \
    /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.