From: "Ardelean, Alexandru" <alexandru.Ardelean@analog.com>
To: "jic23@kernel.org" <jic23@kernel.org>,
"johan@kernel.org" <johan@kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>
Subject: Re: [PATCH 4/5] iio: light: lm3533-als: remove explicit parent assignment
Date: Tue, 2 Jun 2020 14:32:23 +0000 [thread overview]
Message-ID: <2e99bd6d95d001f337ca7c5cdd17e67cea19e62a.camel@analog.com> (raw)
In-Reply-To: <20200531155444.73b9fd78@archlinux>
On Sun, 2020-05-31 at 15:54 +0100, Jonathan Cameron wrote:
> [External]
>
> On Fri, 29 May 2020 15:45:33 +0200
> Johan Hovold <johan@kernel.org> wrote:
>
> > [ Trimming CC to something more reasonable... ]
> >
> > On Fri, May 29, 2020 at 11:08:38AM +0000, Ardelean, Alexandru wrote:
> > > On Fri, 2020-05-29 at 12:16 +0200, Johan Hovold wrote:
> > > > On Fri, May 22, 2020 at 11:22:07AM +0300, Alexandru Ardelean
> > > > wrote:
> > > > > This assignment is the more peculiar of the bunch as it assigns
> > > > > the parent
> > > > > of the platform-device's device (i.e. pdev->dev.parent) as the
> > > > > IIO device's
> > > > > parent.
> > > > >
> > > > > It's unclear whether this is intentional or not.
> > > > > Hence it is in it's own patch.
> > > >
> > > > Yeah, we have a few mfd drivers whose child drivers registers their
> > > > class devices directly under the parent mfd device rather than the
> > > > corresponding child platform device.
> > > >
> > > > Since it's done consistently I think you need to update them all if
> > > > you
> > > > really want to change this.
> > > >
> > > > And it may not be worth it since at least in theory someone could
> > > > now be
> > > > relying on this topology.
> > >
> > > Thanks for the feedback.
> > > I guess, it could make sense to do here:
> > > devm_iio_device_alloc(pdev->dev.parent, ...)
> > >
> > > Currently it's:
> > > devm_iio_device_alloc(&pdev->dev, ...)
> > >
> > > That would make it slightly more consistent. i.e. the life-time of
> > > the object would be attached to the parent of the platform device,
> > > versus the platform-device.
> >
> > Not really. If you unbind the iio driver, the iio device gets
> > deregistered (as it should be) and there's no need to keep it around
> > any
> > more.
> >
> > You'd essentially just leak resources every time you rebind the driver
> > (e.g. during development).
> >
> > And in fact, you could also introduce a use-after-free depending on if
> > the parent mfd driver use devres to deregister its children.
> >
> > > Currently, as it is, the allocation [of the IIO device] is tied the
> > > platform-device, and the IIO registration to the parent (of the
> > > platform-device).
> >
> > Not quite; the iio device still gets deregistered when the platform
> > device is unbound.
> >
> > > I'm not super-familiar with the internals here, but does this sound a
> > > bit wrong?
> >
> > It's not a common pattern but not necessarily wrong per se.
> >
> > > Is there a chance where the IIO device could be de-allocated, while
> > > registered?
> >
> > No, the device-managed iio device object is freed when the platform
> > device is unbound and specifically after the iio device has been
> > deregistered.
>
> I had a feeling we might have a few cases like this hiding in IIO.
>
> For these I'd just leave the parent being manually set.
> It doesn't do any harm and the facility existing is useful for messing
> around with topology.
>
> We may however want to wrap it up in a utility function on the
> basis that we may want to change the visibility and location
> of the IIO device down the line.
>
> iio_device_set_parent() perhaps with docs to specify that it must
> be called between allocation and registration + is meant to allow
> cases where we want a different parent than the device used for
> managed allocations etc.
>
Works for me.
If no objections, I'll include in the next re-spin.
> Jonathan
>
>
> > > > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
> > > > > ---
> > > > > drivers/iio/light/lm3533-als.c | 1 -
> > > > > 1 file changed, 1 deletion(-)
> > > > >
> > > > > diff --git a/drivers/iio/light/lm3533-als.c
> > > > > b/drivers/iio/light/lm3533-als.c
> > > > > index bc196c212881..0f380ec8d30c 100644
> > > > > --- a/drivers/iio/light/lm3533-als.c
> > > > > +++ b/drivers/iio/light/lm3533-als.c
> > > > > @@ -852,7 +852,6 @@ static int lm3533_als_probe(struct
> > > > > platform_device
> > > > > *pdev)
> > > > > indio_dev->channels = lm3533_als_channels;
> > > > > indio_dev->num_channels = ARRAY_SIZE(lm3533_als_channels);
> > > > > indio_dev->name = dev_name(&pdev->dev);
> > > > > - indio_dev->dev.parent = pdev->dev.parent;
> > > > > indio_dev->modes = INDIO_DIRECT_MODE;
> > > > >
> > > > > als = iio_priv(indio_dev);
> >
> > Johan
next prev parent reply other threads:[~2020-06-02 14:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-22 8:22 [PATCH 1/5] iio: core: pass parent device as parameter during allocation Alexandru Ardelean
2020-05-22 8:22 ` [PATCH 3/5] iio: remove left-over comments about parent assignment Alexandru Ardelean
2020-05-22 8:22 ` [PATCH 4/5] iio: light: lm3533-als: remove explicit " Alexandru Ardelean
2020-05-29 10:16 ` Johan Hovold
[not found] ` <05500c815f4881a6aa86c809c5ac53e8af3f3e91.camel@analog.com>
2020-05-29 13:45 ` Johan Hovold
2020-05-31 14:54 ` Jonathan Cameron
2020-06-02 14:32 ` Ardelean, Alexandru [this message]
2020-05-22 8:22 ` [PATCH 5/5] iio: remove left-over parent assignments Alexandru Ardelean
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2e99bd6d95d001f337ca7c5cdd17e67cea19e62a.camel@analog.com \
--to=alexandru.ardelean@analog.com \
--cc=jic23@kernel.org \
--cc=johan@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).