From mboxrd@z Thu Jan 1 00:00:00 1970 From: Johannes Berg Subject: Re: [RFC][PATCH] Fix another namespace issue with devices assigned to classes Date: Mon, 07 Jun 2010 13:41:45 +0200 Message-ID: <1275910905.29978.7.camel@jlt3.sipsolutions.net> References: <1275484611.3915.11.camel@jlt3.sipsolutions.net> <20100602154608.GB12361@kroah.com> <1275493693.3915.12.camel@jlt3.sipsolutions.net> <1275495677.3915.16.camel@jlt3.sipsolutions.net> <1275498007.3915.20.camel@jlt3.sipsolutions.net> <1275501157.3915.22.camel@jlt3.sipsolutions.net> <1275506732.3915.41.camel@jlt3.sipsolutions.net> <1275634452.5189.1.camel@jlt3.sipsolutions.net> <1275640113.9953.8.camel@jlt3.sipsolutions.net> <1275829701.3615.54.camel@jlt3.sipsolutions.net> <1275903773.29978.1.camel@jlt3.sipsolutions.net> <1275905686.29978.3.camel@jlt3.sipsolutions.net> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: "Eric W. Biederman" , Greg KH , netdev To: Kay Sievers Return-path: Received: from he.sipsolutions.net ([78.46.109.217]:55680 "EHLO sipsolutions.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752558Ab0FGLlx (ORCPT ); Mon, 7 Jun 2010 07:41:53 -0400 In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: On Mon, 2010-06-07 at 13:05 +0200, Kay Sievers wrote: > > + data->dev = kzalloc(sizeof(struct device), GFP_KERNEL); > > + if (!data->dev) { > > err = -ENOMEM; > > goto failed_drvdata; > > } > > + > > + dev_set_name(data->dev, "hwsim%d", i); > > + data->dev->bus = &hwsim_bus; > > data->dev->driver = &mac80211_hwsim_driver; > > > > + err = device_register(data->dev); > > + if (err) { > > + printk(KERN_DEBUG > > + "mac80211_hwsim: device_register failed (%d)\n", > > + err); > > + goto failed_drvdata; > > + } > > > > (ignore the pluses, snipped from a patch) but it ran into a null ptr > > deref? > > Oh, I see. It's probably something nobody ever did before. You try to > register a bus device which has no parent. Seems that's something > nobody ever expected to happen. :) > > Your driver/subsystem is completely virtual, does not depend on any > hardware, right? If we create a virtual parent, like: > parent = kzalloc(sizeof(struct device), GFP_KERNEL); > dev_set_name(parent, "mac80211_hwsim"); > device_register(parent); > > An in your code: > data->dev->parent = parent; > > That should give you a /sys/devices/mac80211_hwsim/ directory where > all the devices you create should show up. So that seemed equivalent to my code except for the .bus/.driver assignments and the two-level hierarchy of course. (mind you, I think we probably need to have the bus/driver assignment, but I wanted to try out your suggestion first) So I removed bus/driver assignment from the above code just to try it out, and got Device 'hwsim0' does not have a release() function, it is broken and must be fixed. This has evolved far too much for me right now. Can we just apply the initial patch from Eric and be happier for a while? I can't justify spending this much time on it right now. Alternatively, you could look at hwsim too, since it's all virtual, nothing special is required, I do testing in a virtual machine ... current patch is at http://johannes.sipsolutions.net/patches/kernel/all/2010-06-07-11:41/hwsim-bus.patch johannes