Subject: [PATCH RFC 02/11 v4] gpio: Add sysfs support to block GPIO API

From: [email-masked] (Greg KH)
Date: Tue, 16 Oct 2012 10:40:38 -0700

On Tue, Oct 16, 2012 at 07:27:15PM +0200, Linus Walleij wrote:
> On Tue, Oct 16, 2012 at 6:43 PM, Greg KH <[email-masked]> wrote:
> > On Tue, Oct 16, 2012 at 02:53:45PM +0200, Roland Stigge wrote:
> >>
> >> Further, current gpio and gpiochip devices are also doing this way:
> >> creating the device and subsequently their attrs, even though there may
> >> be a better way but I'm still wondering how this would be.
> >
> > Then the existing code is broken and should be fixed to use dev_attrs.
> > I guess it's time to audit the tree and find all places that get this
> > wrong...
> 
> The thing is, as I've tried to explain but maybe didn't get across,
> that these devices don't *have* a parent, and are not part of any
> tree.

You are passing in a parent device to the device_create() call, where
did that pointer come from?

Either way, the attribute creation needs to happen before we announce
the device to userspace, that's a bug that should be fixed now.

> They are parentless mock devices, created on-the-fly just to get
> sysfs entries.

That's fine, well, not the "parentless" part, but that should be trivial
to fix, just pass in the correct pointer and you should be fine.

> What is needed it to get the device model right in the first
> place.

I thought it was in the device model already?

> Fixing it has been drafted by me and Grant:
> https://blueprints.launchpad.net/linux-linaro/+spec/gpiochip-to-dev
> 
> This is not all-encompassing though :-/

That's a good list to work from, good luck :)

greg k-h