Quoting Murali Nalajala (2019-10-02 17:06:14) > @@ -121,6 +118,7 @@ static void soc_release(struct device *dev) > struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr) > { > struct soc_device *soc_dev; > + const struct attribute_group **soc_attr_groups = NULL; Don't initialize this to NULL because it is only tested after it's been unconditionally assigned to the result of the allocation. > int ret; > > if (!soc_bus_type.p) { > @@ -136,10 +134,20 @@ struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr > goto out1; > } > > + soc_attr_groups = kzalloc(sizeof(*soc_attr_groups) * Please use kcalloc() instead and drop the define for NUM_ATTR_GROUPS because it's used once. > + NUM_ATTR_GROUPS, GFP_KERNEL); > + if (!soc_attr_groups) { > + ret = -ENOMEM; > + goto out2; > + } > + soc_attr_groups[0] = &soc_attr_group; > + soc_attr_groups[1] = soc_dev_attr->custom_attr_group; > + soc_attr_groups[2] = NULL; Drop this assignment to NULL because kzalloc() and kcalloc() zero out the memory anyway.