On Sat, Mar 18, 2023 at 06:14:50PM +0100, Julia Lawall wrote: > > > On Sat, 18 Mar 2023, Sumitra Sharma wrote: > > > The macro has the drawback that one cannot determine > > what type it applies to by looking at the definition. > > Hence this macro definition is not type-safe. > > > > The inline function gives the same benefits as the > > macro and only accepts the specific type of arguments. > > Use static because the definition only requires it to be > > visible in the current file. > > Sumitra, > > The subject line and log message could be a little less generic. For the > subject line, one has the impression that you are changing the definition > of container_of itself. > > The log message is also a bit wordy. Something like the following would > be more concise and still present the issue: > Okay. I will focus more on writing better patch subject and description. Thanks. Regards, Sumitra > Convert to_nvec_led from a macro to an inline function, to make the > relevant types apparent in the definition and to benefit from the type > checking performed by the compiler at call sites. > > julia > > > > > > Signed-off-by: Sumitra Sharma <sumitraartsy@xxxxxxxxx> > > --- > > drivers/staging/nvec/nvec_paz00.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/staging/nvec/nvec_paz00.c b/drivers/staging/nvec/nvec_paz00.c > > index 8b4da95081c8..9573ba762cdd 100644 > > --- a/drivers/staging/nvec/nvec_paz00.c > > +++ b/drivers/staging/nvec/nvec_paz00.c > > @@ -14,8 +14,10 @@ > > #include <linux/platform_device.h> > > #include "nvec.h" > > > > -#define to_nvec_led(led_cdev) \ > > - container_of(led_cdev, struct nvec_led, cdev) > > +static inline struct nvec_led *to_nvec_led(struct led_classdev *led_cdev) > > +{ > > + return container_of(led_cdev, struct nvec_led, cdev); > > +} > > > > #define NVEC_LED_REQ {'\x0d', '\x10', '\x45', '\x10', '\x00'} > > > > -- > > 2.25.1 > > > > > >