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: 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 > > >