From patchwork Sun Jun 20 06:20:37 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Eric W. Biederman" X-Patchwork-Id: 56257 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with SMTP id 7505C1007D1 for ; Sun, 20 Jun 2010 16:26:04 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752309Ab0FTGUr (ORCPT ); Sun, 20 Jun 2010 02:20:47 -0400 Received: from out02.mta.xmission.com ([166.70.13.232]:47610 "EHLO out02.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751339Ab0FTGUn (ORCPT ); Sun, 20 Jun 2010 02:20:43 -0400 Received: from in01.mta.xmission.com ([166.70.13.51]) by out02.mta.xmission.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1OQDta-0000rC-K7; Sun, 20 Jun 2010 00:20:42 -0600 Received: from c-67-188-5-249.hsd1.ca.comcast.net ([67.188.5.249] helo=fess.ebiederm.org) by in01.mta.xmission.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1OQDtZ-00086y-Cj; Sun, 20 Jun 2010 00:20:42 -0600 Received: from fess.ebiederm.org (localhost [127.0.0.1]) by fess.ebiederm.org (8.14.3/8.14.3/Debian-4) with ESMTP id o5K6KcK7010009; Sat, 19 Jun 2010 23:20:38 -0700 Received: (from eric@localhost) by fess.ebiederm.org (8.14.3/8.14.3/Submit) id o5K6Kbul010008; Sat, 19 Jun 2010 23:20:37 -0700 To: Greg KH Cc: Johannes Berg , netdev , Kay Sievers References: <1275484611.3915.11.camel@jlt3.sipsolutions.net> <1275914205.29978.10.camel@jlt3.sipsolutions.net> <1275989260.3706.115.camel@jlt3.sipsolutions.net> <1275990325.3706.116.camel@jlt3.sipsolutions.net> <1275998127.1899.38.camel@yio.site> <1275998603.3706.118.camel@jlt3.sipsolutions.net> <1276005970.3706.132.camel@jlt3.sipsolutions.net> <1276007174.3706.133.camel@jlt3.sipsolutions.net> <1276009590.3706.135.camel@jlt3.sipsolutions.net> <1276014816.3706.137.camel@jlt3.sipsolutions.net> <1276250151.3640.11.camel@jlt3.sipsolutions.net> <1276507247.3926.13.camel@jlt3.sipsolutions.net> From: ebiederm@xmission.com (Eric W. Biederman) Date: Sat, 19 Jun 2010 23:20:37 -0700 In-Reply-To: (Kay Sievers's message of "Mon\, 14 Jun 2010 11\:39\:11 +0200") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux) MIME-Version: 1.0 X-XM-SPF: eid=; ; ; mid=; ; ; hst=in01.mta.xmission.com; ; ; ip=67.188.5.249; ; ; frm=ebiederm@xmission.com; ; ; spf=neutral X-SA-Exim-Connect-IP: 67.188.5.249 X-SA-Exim-Rcpt-To: greg@kroah.com, kay.sievers@vrfy.org, netdev@vger.kernel.org, johannes@sipsolutions.net X-SA-Exim-Mail-From: ebiederm@xmission.com X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on sa06.xmission.com X-Spam-Level: X-Spam-Status: No, score=-3.6 required=8.0 tests=ALL_TRUSTED,BAYES_00, DCC_CHECK_NEGATIVE, T_TooManySym_01, UNTRUSTED_Relay autolearn=disabled version=3.3.1 X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * -3.0 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa06 0; Body=1 Fuz1=1 Fuz2=1] * 0.0 T_TooManySym_01 4+ unique symbols in subject * 0.4 UNTRUSTED_Relay Comes from a non-trusted relay X-Spam-DCC: ; sa06 0; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ;Greg KH X-Spam-Relay-Country: _RELAYCOUNTRY_ Subject: [PATCH] Driver-core: Always create class directories fixing the broken network drivers. X-SA-Exim-Version: 4.2.1 (built Thu, 25 Oct 2007 00:26:12 +0000) X-SA-Exim-Scanned: Yes (on in01.mta.xmission.com) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In get_device_parent there is a check to not add a class directory when a class device was put under another class device. The check was put in place as a just in case measure to not break old userspace if any existing code happened to depend on it. Currently the only known way that we get a class device under a class device is due to the rearrangement of devices that happened when the new sysfs layout was introduced. With the introduction of tagged sysfs directories for properly handling network namespace support this omission in creating the class directories went from a bad thing in terms of namespace pollution, to actually breaking device_remove. Currently there are two reported network device drivers that break because the class directory was not created by the device layer. The usb bnep driver and the mac80211_hwsim driver. Every solution proposed changes the sysfs layout for the affected devices, and thus has the potential to break userspace. Since we are changing the sysfs layout anyway, and since we are now talking about several devices all with the same problem, all caused by the same over conservative bit of code. Let's kill that bit of code. There have been other proposals to fix this but they all have been more complicated, and none of them have actually resulted in working code. Any userspace that works with both the old and the new sysfs layouts should not be affected by this change, and even if someone depends on it we are talking a very small number of drivers overall that are affected. My apologoies for not fully catching this hole in the logic the when this code was originally added. Signed-off-by: Eric W. Biederman --- drivers/base/core.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index 9630fbd..7b1c4d4 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -673,8 +673,6 @@ static struct kobject *get_device_parent(struct device *dev, */ if (parent == NULL) parent_kobj = virtual_device_parent(dev); - else if (parent->class) - return &parent->kobj; else parent_kobj = &parent->kobj;