From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
Daniel Scally <djrscally@gmail.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
kernel test robot <lkp@intel.com>
Subject: Re: [PATCH v1 1/1] device property: Add const qualifier to device_get_match_data() parameter
Date: Fri, 23 Sep 2022 13:25:42 +0300 [thread overview]
Message-ID: <Yy2Jph0AAugY/tn/@smile.fi.intel.com> (raw)
In-Reply-To: <YyzEHk2TTcsIO0ha@paasikivi.fi.intel.com>
On Thu, Sep 22, 2022 at 08:22:54PM +0000, Sakari Ailus wrote:
> On Thu, Sep 22, 2022 at 04:54:10PM +0300, Andy Shevchenko wrote:
> > Add const qualifier to the device_get_match_data() parameter.
> > Some of the future users may utilize this function without
> > forcing the type.
>
> From const to non-const? This is what this patch does, right?
Right.
> > All the same, dev_fwnode() may be used with a const qualifier.
> >
> > Reported-by: kernel test robot <lkp@intel.com>
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > -struct fwnode_handle *dev_fwnode(struct device *dev)
> > +struct fwnode_handle *dev_fwnode(const struct device *dev)
>
> If you have const struct device pointer, then the embedded fwnode handle in
> that object sure is const, too. Isn't it?
>
> If you really have const struct device pointer (where do you?), then I'd
device_get_match_data() expects the const parameter, but due to dev_fwnode()
it can't be satisfied. This has been reported by LKP when I tried to submit
a wrapper:
https://lore.kernel.org/linux-spi/20220921204520.23984-1-andriy.shevchenko@linux.intel.com/
Yes, I probably can drop const there, but it will be again awkward to see
almost all APIs beneath using const and upper one without it for unclear
(to the reader) reasons.
> suggest to add another function, dev_fwnode_const() that is otherwise the
> same except the argument as well as the return value are const.
Perhaps this is the case, but does it mean we need to duplicate APIs when
we know we don't modify data? Seems road to bloating the code for peanuts.
> Or alternatively define it as a macro and use _Generic()?
Yeah, I have the mixed feelings about _Generic for generic APIs because
it requires to convert some stuff to macros when type checking of the
parameters can be missed (if a target takes two or more of them).
It might work here (we have a single parameter), but in general...
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2022-09-23 10:26 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-22 13:54 [PATCH v1 1/1] device property: Add const qualifier to device_get_match_data() parameter Andy Shevchenko
2022-09-22 14:44 ` Heikki Krogerus
2022-09-22 20:22 ` Sakari Ailus
2022-09-23 10:25 ` Andy Shevchenko [this message]
2022-09-23 11:25 ` Sakari Ailus
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=Yy2Jph0AAugY/tn/@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=djrscally@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=rafael@kernel.org \
--cc=sakari.ailus@linux.intel.com \
/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