Thread (26 messages) 26 messages, 9 authors, 2023-01-11

Re: [PATCH 3/5] driver core: make struct device_type.uevent() take a const *

From: Maximilian Luz <luzmaximilian@gmail.com>
Date: 2022-11-23 14:04:07
Also in: alsa-devel, linux-acpi, linux-block, linux-devicetree, linux-i2c, linux-i3c, linux-media, linux-serial, linux-usb, lkml, platform-driver-x86

On 11/23/22 14:34, Andy Shevchenko wrote:
On Wed, Nov 23, 2022 at 02:14:31PM +0100, Maximilian Luz wrote:
quoted
On 11/23/22 13:25, Greg Kroah-Hartman wrote:
quoted
The uevent() callback in struct device_type should not be modifying the
device that is passed into it, so mark it as a const * and propagate the
function signature changes out into all relevant subsystems that use
this callback.
[...]
quoted
quoted
-static inline struct ssam_device *to_ssam_device(struct device *d)
+static inline struct ssam_device *to_ssam_device(const struct device *d)
   {
   	return container_of(d, struct ssam_device, dev);
   }
I am slightly conflicted about this change as that now more or less
implicitly drops the const. So I'm wondering if it wouldn't be better to
either create a function specifically for const pointers or to just
open-code it in the instance above.

I guess we could also convert this to a macro. Then at least there
wouldn't be an explicit and potentially misleading const-conversion
indicated in the function signature.
This is an intermediate step as far as I know since moving container_of to
recognize const is a bit noisy right now. I guess you can find a discussion
on the topic between Greg and Sakari.
Thanks! I assume you are referring to the following?

	https://lore.kernel.org/lkml/4218173bd72b4f1899d4c41a8e251f0d@AcuMS.aculab.com/T/ (local)

As far as I can tell this is only a warning in documentation, not
compile time (which would probably be impossible?).

As I've said I'd be fine with converting the function to a macro (and
preferably adding a similar warning like the one proposed in that
thread). The point that irks me up is just that, as proposed, the
function signature would now advertise a conversion that should never be
happening.

Having two separate functions would create a compile-time guarantee, so
I'd prefer that, but I can understand if that might be considered too
noisy in code. Or if there is a push to make container_of() emit a
compile-time warning I'd also be perfectly happy with converting it to a
macro now as that'd alleviate the need for functions in the future.

Regards,
Max
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help