Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *

From: Bart Van Assche
Date: Sun Nov 27 2022 - 21:38:49 EST


On 11/27/22 05:45, Greg Kroah-Hartman wrote:
On Fri, Nov 25, 2022 at 03:51:11PM -0800, Bart Van Assche wrote:
On 11/23/22 04:25, Greg Kroah-Hartman wrote:
diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
index 7dd1f01ec4f9..7aab4a769736 100644
--- a/include/linux/mISDNif.h
+++ b/include/linux/mISDNif.h
@@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
void *);
extern void mISDN_unregister_clock(struct mISDNclock *);
-static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
+static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
{
if (dev)
return dev_get_drvdata(dev);

Why does the dev_to_mISDN() function drop constness? I haven't found an
explanation for this in the cover letter.

I agree, this is going to be fixed up, see the thread starting here:
https://lore.kernel.org/r/Y34+V2bCDdqujBDk@xxxxxxxxx

I'll work on making a const / non const version for these so that we
don't loose the marking.

Oh wait, no, this function is fine, it's not modifying the device
structure at all, and only returning the pointer in the private data
stored in the device. There is no loss of const-ness here.

Hi Greg,

This is what I found in include/linux/mISDNif.h:

struct mISDNdevice {
struct mISDNchannel D;
u_int id;
u_int Dprotocols;
u_int Bprotocols;
u_int nrbchan;
u_char channelmap[MISDN_CHMAP_SIZE];
struct list_head bchannels;
struct mISDNchannel *teimgr;
struct device dev;
};

As one can see 'dev' is a member of struct mISDNdevice. I still think that dev_to_mISDN() drops constness. Did I perhaps overlook something?

Bart.