Message ID | 20240618120024.3384047-1-heikki.krogerus@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 3560b37525d3c9059c62da7f4d74daa2d5338626 |
Headers | show |
Series | usb: typec: ucsi: Changing the driver data type to void | expand |
On Tue, Jun 18, 2024 at 03:00:24PM +0300, Heikki Krogerus wrote: > Let's use the same data type as struct device. > > Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/usb/typec/ucsi/ucsi.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h > index 97eda8cd63df..1280cac314fe 100644 > --- a/drivers/usb/typec/ucsi/ucsi.h > +++ b/drivers/usb/typec/ucsi/ucsi.h > @@ -395,7 +395,7 @@ struct ucsi_debugfs_entry { > struct ucsi { > u16 version; > struct device *dev; > - struct driver_data *driver_data; > + void *driver_data; Nice, but why? And how was this building? I don't see a "struct driver_data" defined anywhere here. thanks, greg k-h
On Tue, Jun 18, 2024 at 02:20:03PM +0200, Greg Kroah-Hartman wrote: > On Tue, Jun 18, 2024 at 03:00:24PM +0300, Heikki Krogerus wrote: > > Let's use the same data type as struct device. > > > > Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > > --- > > drivers/usb/typec/ucsi/ucsi.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h > > index 97eda8cd63df..1280cac314fe 100644 > > --- a/drivers/usb/typec/ucsi/ucsi.h > > +++ b/drivers/usb/typec/ucsi/ucsi.h > > @@ -395,7 +395,7 @@ struct ucsi_debugfs_entry { > > struct ucsi { > > u16 version; > > struct device *dev; > > - struct driver_data *driver_data; > > + void *driver_data; > > Nice, but why? > > And how was this building? I don't see a "struct driver_data" defined > anywhere here. I had not even thought about that, but that's weird. I can write anything after "struct" there, and it will just build without any warnings or errors. The complier does not seem to even check the type in this case, since the member is always assigned a void pointer. So this is actually a bug, no? thanks,
On Tue, Jun 18, 2024 at 04:14:57PM +0300, Heikki Krogerus wrote: > On Tue, Jun 18, 2024 at 02:20:03PM +0200, Greg Kroah-Hartman wrote: > > On Tue, Jun 18, 2024 at 03:00:24PM +0300, Heikki Krogerus wrote: > > > Let's use the same data type as struct device. > > > > > > Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > > > --- > > > drivers/usb/typec/ucsi/ucsi.h | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h > > > index 97eda8cd63df..1280cac314fe 100644 > > > --- a/drivers/usb/typec/ucsi/ucsi.h > > > +++ b/drivers/usb/typec/ucsi/ucsi.h > > > @@ -395,7 +395,7 @@ struct ucsi_debugfs_entry { > > > struct ucsi { > > > u16 version; > > > struct device *dev; > > > - struct driver_data *driver_data; > > > + void *driver_data; > > > > Nice, but why? > > > > And how was this building? I don't see a "struct driver_data" defined > > anywhere here. > > I had not even thought about that, but that's weird. > > I can write anything after "struct" there, and it will just build > without any warnings or errors. The complier does not seem to even > check the type in this case, since the member is always assigned a > void pointer. Ah, I guess the compiler never actually has to look up what 'struct driver_data' is if it is never referenced (i.e. you are only casting void * to it.) > So this is actually a bug, no? Kind of? But it works, so let's just leave it alone :) I'll take this patch as it is "obviously correct" now, but sure looked odd to start with. thanks, greg k-h
diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h index 97eda8cd63df..1280cac314fe 100644 --- a/drivers/usb/typec/ucsi/ucsi.h +++ b/drivers/usb/typec/ucsi/ucsi.h @@ -395,7 +395,7 @@ struct ucsi_debugfs_entry { struct ucsi { u16 version; struct device *dev; - struct driver_data *driver_data; + void *driver_data; const struct ucsi_operations *ops;
Let's use the same data type as struct device. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> --- drivers/usb/typec/ucsi/ucsi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)