All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Lyude Paul" <lyude@redhat.com>,
	"Alexander Lobakin" <aleksander.lobakin@intel.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Lukas Wunner" <lukas@wunner.de>,
	"Mark Brown" <broonie@kernel.org>,
	"Maíra Canal" <mairacanal@riseup.net>,
	"Robin Murphy" <robin.murphy@arm.com>,
	"Simona Vetter" <simona.vetter@ffwll.ch>,
	"Zijun Hu" <quic_zijuhu@quicinc.com>,
	linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
	rust-for-linux@vger.kernel.org
Subject: Re: [PATCH 1/3] driver core: add a faux bus for use when a simple device/bus is needed
Date: Mon, 3 Feb 2025 16:35:45 +0100	[thread overview]
Message-ID: <2025020300-gown-outmatch-1343@gregkh> (raw)
In-Reply-To: <Z6DchyPieQKBJ0SN@smile.fi.intel.com>

On Mon, Feb 03, 2025 at 05:11:03PM +0200, Andy Shevchenko wrote:
> On Mon, Feb 03, 2025 at 03:25:17PM +0100, Greg Kroah-Hartman wrote:
> > Many drivers abuse the platform driver/bus system as it provides a
> > simple way to create and bind a device to a driver-specific set of
> > probe/release functions.  Instead of doing that, and wasting all of the
> > memory associated with a platform device, here is a "faux" bus that
> > can be used instead.
> 
> ...
> 
> > +#include <linux/device/faux.h>
> 
> I would rather think that this goes after generic inclusions...
> 
> > +#include <linux/err.h>
> > +#include <linux/init.h>
> > +#include <linux/slab.h>
> > +#include <linux/string.h>
> 
> ...somewhere here.
> 
> But looking into organisation of device.h and device/*.h,
> I would rather think of the linux/faux_device.h.

It can go anywhere, there is no need to sort things :)

> > +#include "base.h"
> 
> I don't remember by heart what it does include, I would go with IWYU principle
> and list above all what we use.
> 
> container_of.h
> device.h
> export.h
> printk.h
> types.h

That's not what the driver core ever did, so no need to worry about it,
thanks.


> 
> ...
> 
> > +static int faux_match(struct device *dev, const struct device_driver *drv)
> > +{
> > +	struct faux_object *faux_obj = to_faux_object(dev);
> > +
> > +	/* Match is simple, strcmp()! */
> > +	return (strcmp(faux_obj->name, drv->name) == 0);
> 
> Outer parentheses are not needed.

Makes me feel good as it is an assignment test, and that's what
platform.c has for the past few decades.


> > +/**
> > + * __faux_device_create - create and register a faux device and driver
> > + * @name: name of the device and driver we are adding
> > + * @faux_ops: struct faux_driver_ops that the new device will call back into, can be NULL
> > + * @owner: module owner of the device/driver
> > + *
> > + * Create a new faux device and driver, both with the same name, and register
> > + * them in the driver core properly.  The probe() callback of @faux_ops will be
> > + * called with the new device that is created for the caller to do something
> > + * with.
> 
> The kernel-doc will complain on missing Return: section.

Is that new?  Does that mean platform.c has lots of complaints in it as
well?  What does platform_find_device_by_driver() give you for a
documentation issue?

And as I didn't hook this up to the kernel documentation build yet, it
shouldn't produce any warnings anywhere :)

> > + */
> > +struct faux_device *__faux_device_create(const char *name,
> > +					       struct faux_driver_ops *faux_ops,
> > +					       struct module *owner)
> > +{
> > +	struct device_driver *drv;
> > +	struct device *dev;
> > +	struct faux_object *faux_obj;
> > +	struct faux_device *faux_dev;
> > +	int ret;
> 
> > +	faux_obj = kzalloc(sizeof(*faux_obj) + strlen(name) + 1, GFP_KERNEL);
> 
> Potential overflow. To avoid one may use struct_size() from overflow.h.

Users should not be providing the string here.  Again, this comes from
platform.c.

> > +#ifndef _FAUX_DEVICE_H_
> > +#define _FAUX_DEVICE_H_
> 
> > +#include <linux/module.h>
> 
> + container_of.h

Not needed to compile this file, only if someone uses the #define in it.

thanks,

greg k-h

  parent reply	other threads:[~2025-02-03 15:35 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-03 14:25 [PATCH 0/3] Driver core: faux bus Greg Kroah-Hartman
2025-02-03 14:25 ` [PATCH 1/3] driver core: add a faux bus for use when a simple device/bus is needed Greg Kroah-Hartman
2025-02-03 15:11   ` Andy Shevchenko
2025-02-03 15:13     ` Andy Shevchenko
2025-02-03 15:35     ` Greg Kroah-Hartman [this message]
2025-02-03 15:46       ` Greg Kroah-Hartman
2025-02-03 16:05         ` Andy Shevchenko
2025-02-03 16:05       ` Andy Shevchenko
2025-02-03 16:10         ` Andy Shevchenko
2025-02-03 16:13         ` Greg Kroah-Hartman
2025-02-03 16:22           ` Andy Shevchenko
2025-02-04  9:25   ` Jonathan Cameron
2025-02-04 10:14     ` Greg Kroah-Hartman
2025-02-04 10:08   ` Thomas Weißschuh
2025-02-04 10:20     ` Greg Kroah-Hartman
2025-02-04 10:44       ` Thomas Weißschuh
2025-02-04 10:49         ` Greg Kroah-Hartman
2025-02-03 14:25 ` [PATCH 2/3] regulator: dummy: convert to use the faux bus Greg Kroah-Hartman
2025-02-03 15:39   ` Mark Brown
2025-02-03 15:46     ` Greg Kroah-Hartman
2025-02-03 16:11       ` Mark Brown
2025-02-03 14:25 ` [PATCH 3/3] USB: phy: convert usb_phy_generic logic to use a faux device Greg Kroah-Hartman
2025-02-03 15:15   ` Andy Shevchenko

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=2025020300-gown-outmatch-1343@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=aleksander.lobakin@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=broonie@kernel.org \
    --cc=dakr@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=lyude@redhat.com \
    --cc=mairacanal@riseup.net \
    --cc=quic_zijuhu@quicinc.com \
    --cc=rafael@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=simona.vetter@ffwll.ch \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.