From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Ying Subject: Re: [Patch-next] Oops caused by ERST Table not supported. Date: Mon, 10 May 2010 16:11:50 +0800 Message-ID: <1273479110.3344.56.camel@yhuang-dev.sh.intel.com> References: <4BE7BE10.8080000@np.css.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: Received: from mga03.intel.com ([143.182.124.21]:51930 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751311Ab0EJILx (ORCPT ); Mon, 10 May 2010 04:11:53 -0400 In-Reply-To: <4BE7BE10.8080000@np.css.fujitsu.com> Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: Jin Dongming Cc: LKLM , lenb , Andi Kleen , Hidetoshi Seto , ACPI Hi, Dongming, On Mon, 2010-05-10 at 16:04 +0800, Jin Dongming wrote: > On my server(x86_64) when the mcelog is executed, it will cause oops. And > following information could be gotten. > > Call Trace: > [] ? avc_has_perm_noaudit+0x4d/0x680 > [] ? avc_has_perm_noaudit+0x4d/0x680 > [] erst_read_next+0x3b/0x100 > [] apei_read_mce+0x2f/0x170 > [] ? check_object+0x36d/0x430 > [] ? init_object+0x9c/0xe0 > [] ? __slab_alloc+0x7cf/0x8b0 > [] ? mce_read+0x4a/0x510 > [] ? __kmalloc+0x2db/0x390 > [] ? mce_read+0x4a/0x510 > [] ? check_bytes_and_report+0x3d/0x110 > [] ? _cond_resched+0x3e/0x80 > [] mce_read+0x4cb/0x510 > [] ? security_file_permission+0x122/0x130 > [] ? rw_verify_area+0x196/0x210 > [] vfs_read+0x1bb/0x2f0 > [] sys_read+0x8d/0xe0 > [] system_call_fastpath+0x16/0x1b > > This is because of the ERST Table not supported on my server and it > makes the variable "ctx" used by erst_read_nextis NULL. So I make > the patch to solve this problem. > > And I confirmed it on my server(x86_64). > > Signed-off-by: Jin Dongming > --- > drivers/acpi/apei/erst.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c > index 5fe5c0f..2ebc391 100644 > --- a/drivers/acpi/apei/erst.c > +++ b/drivers/acpi/apei/erst.c > @@ -698,6 +698,9 @@ ssize_t erst_read_next(struct cper_record_header *record, size_t buflen) > unsigned long flags; > u64 record_id; > > + if (erst_disable) > + return -ENODEV; > + > spin_lock_irqsave(&erst_lock, flags); > rc = __erst_get_next_record_id(&record_id); > if (rc) { Thank you very much for your fixing. Acked-by: Huang Ying Best Regards, Huang Ying