Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756182AbZDGTQa (ORCPT ); Tue, 7 Apr 2009 15:16:30 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752400AbZDGTQT (ORCPT ); Tue, 7 Apr 2009 15:16:19 -0400 Received: from ogre.sisk.pl ([217.79.144.158]:55447 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751711AbZDGTQR (ORCPT ); Tue, 7 Apr 2009 15:16:17 -0400 From: "Rafael J. Wysocki" To: Vegard Nossum Subject: Re: [PATCH] acpi/battery: fix async boot oops Date: Tue, 7 Apr 2009 21:16:31 +0200 User-Agent: KMail/1.11.2 (Linux/2.6.29-rjw; KDE/4.2.2; x86_64; ; ) Cc: Len Brown , Arkadiusz Miskiewicz , Arjan van de Ven , linux-kernel@vger.kernel.org, Linus Torvalds , ACPI Devel Maling List References: <20090407091052.GA17822@damson.cased.tu-darmstadt.de> In-Reply-To: <20090407091052.GA17822@damson.cased.tu-darmstadt.de> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200904072116.32475.rjw@sisk.pl> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2710 Lines: 65 On Tuesday 07 April 2009, Vegard Nossum wrote: > From 85a2a4447ce6b206d9ad20719ed8ac7cc707931c Mon Sep 17 00:00:00 2001 > From: Vegard Nossum > Date: Tue, 7 Apr 2009 10:55:38 +0200 > Subject: [PATCH] acpi/battery: fix async boot oops > > 2009/4/6 Arkadiusz Miskiewicz : > > > > Pulled Linus git few minutes ago and new oops at boot (happens on every boot). > > Yesterday git version was fine. Oopsed just while/after udev started. > > [...] > > > BUG: unable to handle kernel NULL pointer dereference at (null) > > IP: [] 0xffffffffa00fd040 > > PGD 13998a067 PUD 139979067 PMD 0 > > Oops: 0002 [#1] PREEMPT SMP > > last sysfs file: /sys/devices/platform/i8042/modalias > > CPU 0 > > Modules linked in: evdev(+) cfg80211(+) battery ac button crc_itu_t xfs exportfs scsi_wait_scan sd_mod crc_t10dif ahci libata scsi_mod > > Pid: 3167, comm: async/0 Not tainted 2.6.29 #12 2764CTO > > RIP: 0010:[] [] 0xffffffffa00fd040 > > What happens is that the battery module's init sections are being freed > before the async callback (which was marked __init) has run. This theory > is supported by the fact that the bad RIP value is a vmalloc address. > > The immediate fix is to make this a non-init call. > > (A better long-term fix is of course to wait with init-section unloading > until a module's async initcalls have been run, which would allow us to > discard this function which is still only run once, after all. Perhaps a > new async_initcall() function for the async/module API, if this is needed > for other modules in the future?) > > Reported-by: Arkadiusz Miskiewicz > Cc: Arjan van de Ven > Signed-off-by: Vegard Nossum This patch is necessary to fix a boot oops on my test box(es). Tested-by: Rafael J. Wysocki > --- > drivers/acpi/battery.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c > index b0de631..3c7d894 100644 > --- a/drivers/acpi/battery.c > +++ b/drivers/acpi/battery.c > @@ -903,7 +903,7 @@ static struct acpi_driver acpi_battery_driver = { > }, > }; > > -static void __init acpi_battery_init_async(void *unused, async_cookie_t cookie) > +static void acpi_battery_init_async(void *unused, async_cookie_t cookie) > { > if (acpi_disabled) > return; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/