Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751314AbWJEJ6T (ORCPT ); Thu, 5 Oct 2006 05:58:19 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751317AbWJEJ6S (ORCPT ); Thu, 5 Oct 2006 05:58:18 -0400 Received: from twin.jikos.cz ([213.151.79.26]:54742 "EHLO twin.jikos.cz") by vger.kernel.org with ESMTP id S1751314AbWJEJ6R (ORCPT ); Thu, 5 Oct 2006 05:58:17 -0400 Date: Thu, 5 Oct 2006 11:57:11 +0200 (CEST) From: Jiri Kosina To: Jaroslav Kysela cc: Castet Matthieu , Takashi Iwai , LKML , ALSA development , Andrew Morton , Alan Stern , Greg Kroah-Hartman Subject: Re: [PATCH] ALSA: fix kernel panic in initialization of mpu401 driver In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1733 Lines: 45 On Thu, 5 Oct 2006, Jaroslav Kysela wrote: > Unfortunately, I do not think that it's a proper solution. I think that > platform device layer should play more nicely and if probe() fails for a > reason and if platform_device_register_simple() does not set IS_ERR(), > then platform_device_unregister() must be callable to free all > resources. I agree. > I would reject this patch and fix drivers/base/bus.c. The problematic > change is in commit f2eaae197f4590c4d96f31b09b0ee9067421a95c and this > patch will probably fix it: > [PATCH] drivers/base - check if device is registered before removal > Without this fix platform_device_unregister() might oops. > Signed-off-by: Jaroslav Kysela > diff --git a/drivers/base/bus.c b/drivers/base/bus.c > index 12173d1..daa2390 100644 > --- a/drivers/base/bus.c > +++ b/drivers/base/bus.c > @@ -428,8 +428,10 @@ void bus_remove_device(struct device * d > sysfs_remove_link(&dev->kobj, "bus"); > sysfs_remove_link(&dev->bus->devices.kobj, dev->bus_id); > device_remove_attrs(dev->bus, dev); > - dev->is_registered = 0; > - klist_del(&dev->knode_bus); > + if (dev->is_registered) { > + dev->is_registered = 0; > + klist_del(&dev->knode_bus); > + } > pr_debug("bus %s: remove device %s\n", dev->bus->name, dev->bus_id); > device_release_driver(dev); > put_bus(dev->bus); Yes, it (among other things) fixes the panic in MPU401 initialization. Acked-by: Jiri Kosina -- Jiri Kosina - 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/