* [PATCH] cros_ec: Use devm_kzalloc for private data @ 2018-05-09 23:06 Gwendal Grignou 2018-05-23 16:35 ` Enric Balletbo Serra 0 siblings, 1 reply; 8+ messages in thread From: Gwendal Grignou @ 2018-05-09 23:06 UTC (permalink / raw) To: bleung, lee.jones; +Cc: linux-kernel Use dev_kzmalloc, remove .release entry point. Signed-off-by: Gwendal Grignou <gwendal@chromium.org> --- drivers/mfd/cros_ec_dev.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index eafd06f62a3a..45d42511a3e5 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -262,13 +262,6 @@ static const struct file_operations fops = { #endif }; -static void __remove(struct device *dev) -{ - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, - class_dev); - kfree(ec); -} - static void cros_ec_sensors_register(struct cros_ec_dev *ec) { /* @@ -388,7 +381,7 @@ static int ec_device_probe(struct platform_device *pdev) int retval = -ENOMEM; struct device *dev = &pdev->dev; struct cros_ec_platform *ec_platform = dev_get_platdata(dev); - struct cros_ec_dev *ec = kzalloc(sizeof(*ec), GFP_KERNEL); + struct cros_ec_dev *ec = devm_kzalloc(dev, sizeof(*ec), GFP_KERNEL); if (!ec) return retval; @@ -410,7 +403,6 @@ static int ec_device_probe(struct platform_device *pdev) ec->class_dev.devt = MKDEV(ec_major, pdev->id); ec->class_dev.class = &cros_class; ec->class_dev.parent = dev; - ec->class_dev.release = __remove; retval = dev_set_name(&ec->class_dev, "%s", ec_platform->ec_name); if (retval) { -- 2.17.0.441.gb46fe60e1d-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] cros_ec: Use devm_kzalloc for private data 2018-05-09 23:06 [PATCH] cros_ec: Use devm_kzalloc for private data Gwendal Grignou @ 2018-05-23 16:35 ` Enric Balletbo Serra 2018-05-30 16:04 ` [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly Gwendal Grignou 2018-05-30 16:54 ` [PATCH v2] cros_ec: Use devm_kzalloc for private data Gwendal Grignou 0 siblings, 2 replies; 8+ messages in thread From: Enric Balletbo Serra @ 2018-05-23 16:35 UTC (permalink / raw) To: Gwendal Grignou; +Cc: Benson Leung, Lee Jones, linux-kernel Hi Gwendal, 2018-05-10 1:06 GMT+02:00 Gwendal Grignou <gwendal@chromium.org>: > Use dev_kzmalloc, remove .release entry point. > > Signed-off-by: Gwendal Grignou <gwendal@chromium.org> > --- > drivers/mfd/cros_ec_dev.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c > index eafd06f62a3a..45d42511a3e5 100644 > --- a/drivers/mfd/cros_ec_dev.c > +++ b/drivers/mfd/cros_ec_dev.c > @@ -262,13 +262,6 @@ static const struct file_operations fops = { > #endif > }; > > -static void __remove(struct device *dev) > -{ > - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, > - class_dev); > - kfree(ec); > -} > - > static void cros_ec_sensors_register(struct cros_ec_dev *ec) > { > /* > @@ -388,7 +381,7 @@ static int ec_device_probe(struct platform_device *pdev) > int retval = -ENOMEM; > struct device *dev = &pdev->dev; > struct cros_ec_platform *ec_platform = dev_get_platdata(dev); > - struct cros_ec_dev *ec = kzalloc(sizeof(*ec), GFP_KERNEL); > + struct cros_ec_dev *ec = devm_kzalloc(dev, sizeof(*ec), GFP_KERNEL); > > if (!ec) > return retval; > @@ -410,7 +403,6 @@ static int ec_device_probe(struct platform_device *pdev) > ec->class_dev.devt = MKDEV(ec_major, pdev->id); > ec->class_dev.class = &cros_class; > ec->class_dev.parent = dev; > - ec->class_dev.release = __remove; > > retval = dev_set_name(&ec->class_dev, "%s", ec_platform->ec_name); > if (retval) { > -- > 2.17.0.441.gb46fe60e1d-goog > The patch looks good to me, however, the patch doesn't apply cleanly if you have [1] already applied, and if not, then is this patch ([2]) which doesn't apply cleanly. To not have interdependencies I'd suggest apply first this patch and remove the following from [1] diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index eafd06f62a3a..cad12da7f884 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -264,8 +264,8 @@ static const struct file_operations fops = { static void __remove(struct device *dev) { - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, - class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); + kfree(ec); } With this change, [1] can go through the Benson tree and [2] through Lee tree independently. With the above change feel free to add my Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> If you want I can do this rework for you. Best regards, Enric [1] https://patchwork.kernel.org/patch/10390959/ [2] https://patchwork.kernel.org/patch/10390965/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly 2018-05-23 16:35 ` Enric Balletbo Serra @ 2018-05-30 16:04 ` Gwendal Grignou 2018-05-30 16:43 ` Enric Balletbo Serra 2018-05-30 19:06 ` Benson Leung 2018-05-30 16:54 ` [PATCH v2] cros_ec: Use devm_kzalloc for private data Gwendal Grignou 1 sibling, 2 replies; 8+ messages in thread From: Gwendal Grignou @ 2018-05-30 16:04 UTC (permalink / raw) To: bleung, eballetbo, lee.jones; +Cc: linux-kernel Move to_cros_ec_dev macro to cros_ec.h and use it when the private ec object is needed from device object. Signed-off-by: Gwendal Grignou <gwendal@chromium.org> --- Change since v1: Remove changes in cros_ec_dev.c to avoid inter-dependencies. drivers/platform/chrome/cros_ec_lightbar.c | 21 +++++++-------------- drivers/platform/chrome/cros_ec_sysfs.c | 2 -- drivers/platform/chrome/cros_ec_vbc.c | 9 +++------ include/linux/mfd/cros_ec.h | 2 ++ 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/drivers/platform/chrome/cros_ec_lightbar.c b/drivers/platform/chrome/cros_ec_lightbar.c index 6ea79d495aa2..68193bb53383 100644 --- a/drivers/platform/chrome/cros_ec_lightbar.c +++ b/drivers/platform/chrome/cros_ec_lightbar.c @@ -170,8 +170,7 @@ static ssize_t version_show(struct device *dev, struct device_attribute *attr, char *buf) { uint32_t version = 0, flags = 0; - struct cros_ec_dev *ec = container_of(dev, - struct cros_ec_dev, class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); int ret; ret = lb_throttle(); @@ -193,8 +192,7 @@ static ssize_t brightness_store(struct device *dev, struct cros_ec_command *msg; int ret; unsigned int val; - struct cros_ec_dev *ec = container_of(dev, - struct cros_ec_dev, class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); if (kstrtouint(buf, 0, &val)) return -EINVAL; @@ -238,8 +236,7 @@ static ssize_t led_rgb_store(struct device *dev, struct device_attribute *attr, { struct ec_params_lightbar *param; struct cros_ec_command *msg; - struct cros_ec_dev *ec = container_of(dev, - struct cros_ec_dev, class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); unsigned int val[4]; int ret, i = 0, j = 0, ok = 0; @@ -311,8 +308,7 @@ static ssize_t sequence_show(struct device *dev, struct ec_response_lightbar *resp; struct cros_ec_command *msg; int ret; - struct cros_ec_dev *ec = container_of(dev, - struct cros_ec_dev, class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); msg = alloc_lightbar_cmd_msg(ec); if (!msg) @@ -439,8 +435,7 @@ static ssize_t sequence_store(struct device *dev, struct device_attribute *attr, struct cros_ec_command *msg; unsigned int num; int ret, len; - struct cros_ec_dev *ec = container_of(dev, - struct cros_ec_dev, class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); for (len = 0; len < count; len++) if (!isalnum(buf[len])) @@ -488,8 +483,7 @@ static ssize_t program_store(struct device *dev, struct device_attribute *attr, int extra_bytes, max_size, ret; struct ec_params_lightbar *param; struct cros_ec_command *msg; - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, - class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); /* * We might need to reject the program for size reasons. The EC @@ -599,8 +593,7 @@ static umode_t cros_ec_lightbar_attrs_are_visible(struct kobject *kobj, struct attribute *a, int n) { struct device *dev = container_of(kobj, struct device, kobj); - struct cros_ec_dev *ec = container_of(dev, - struct cros_ec_dev, class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); struct platform_device *pdev = to_platform_device(ec->dev); struct cros_ec_platform *pdata = pdev->dev.platform_data; int is_cros_ec; diff --git a/drivers/platform/chrome/cros_ec_sysfs.c b/drivers/platform/chrome/cros_ec_sysfs.c index 5a6db3fe213a..f34a50121064 100644 --- a/drivers/platform/chrome/cros_ec_sysfs.c +++ b/drivers/platform/chrome/cros_ec_sysfs.c @@ -34,8 +34,6 @@ #include <linux/types.h> #include <linux/uaccess.h> -#define to_cros_ec_dev(dev) container_of(dev, struct cros_ec_dev, class_dev) - /* Accessor functions */ static ssize_t reboot_show(struct device *dev, diff --git a/drivers/platform/chrome/cros_ec_vbc.c b/drivers/platform/chrome/cros_ec_vbc.c index 6d38e6b08334..5356f26bc022 100644 --- a/drivers/platform/chrome/cros_ec_vbc.c +++ b/drivers/platform/chrome/cros_ec_vbc.c @@ -29,8 +29,7 @@ static ssize_t vboot_context_read(struct file *filp, struct kobject *kobj, loff_t pos, size_t count) { struct device *dev = container_of(kobj, struct device, kobj); - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, - class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); struct cros_ec_device *ecdev = ec->ec_dev; struct ec_params_vbnvcontext *params; struct cros_ec_command *msg; @@ -70,8 +69,7 @@ static ssize_t vboot_context_write(struct file *filp, struct kobject *kobj, loff_t pos, size_t count) { struct device *dev = container_of(kobj, struct device, kobj); - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, - class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); struct cros_ec_device *ecdev = ec->ec_dev; struct ec_params_vbnvcontext *params; struct cros_ec_command *msg; @@ -111,8 +109,7 @@ static umode_t cros_ec_vbc_is_visible(struct kobject *kobj, struct bin_attribute *a, int n) { struct device *dev = container_of(kobj, struct device, kobj); - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, - class_dev); + struct cros_ec_dev *ec = to_cros_ec_dev(dev); struct device_node *np = ec->ec_dev->dev->of_node; if (IS_ENABLED(CONFIG_OF) && np) { diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h index 4ff0cec979b0..4270972adb94 100644 --- a/include/linux/mfd/cros_ec.h +++ b/include/linux/mfd/cros_ec.h @@ -197,6 +197,8 @@ struct cros_ec_dev { u32 features[2]; }; +#define to_cros_ec_dev(dev) container_of(dev, struct cros_ec_dev, class_dev) + /** * cros_ec_suspend - Handle a suspend operation for the ChromeOS EC device * -- 2.17.0.921.gf22659ad46-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly 2018-05-30 16:04 ` [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly Gwendal Grignou @ 2018-05-30 16:43 ` Enric Balletbo Serra 2018-05-30 19:06 ` Benson Leung 1 sibling, 0 replies; 8+ messages in thread From: Enric Balletbo Serra @ 2018-05-30 16:43 UTC (permalink / raw) To: Gwendal Grignou; +Cc: Benson Leung, Lee Jones, linux-kernel Hi Gwendal, 2018-05-30 18:04 GMT+02:00 Gwendal Grignou <gwendal@chromium.org>: > Move to_cros_ec_dev macro to cros_ec.h and use it when the private ec > object is needed from device object. > > Signed-off-by: Gwendal Grignou <gwendal@chromium.org> > --- > Change since v1: > Remove changes in cros_ec_dev.c to avoid inter-dependencies. > > drivers/platform/chrome/cros_ec_lightbar.c | 21 +++++++-------------- > drivers/platform/chrome/cros_ec_sysfs.c | 2 -- > drivers/platform/chrome/cros_ec_vbc.c | 9 +++------ > include/linux/mfd/cros_ec.h | 2 ++ > 4 files changed, 12 insertions(+), 22 deletions(-) > > diff --git a/drivers/platform/chrome/cros_ec_lightbar.c b/drivers/platform/chrome/cros_ec_lightbar.c > index 6ea79d495aa2..68193bb53383 100644 > --- a/drivers/platform/chrome/cros_ec_lightbar.c > +++ b/drivers/platform/chrome/cros_ec_lightbar.c > @@ -170,8 +170,7 @@ static ssize_t version_show(struct device *dev, > struct device_attribute *attr, char *buf) > { > uint32_t version = 0, flags = 0; > - struct cros_ec_dev *ec = container_of(dev, > - struct cros_ec_dev, class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > int ret; > > ret = lb_throttle(); > @@ -193,8 +192,7 @@ static ssize_t brightness_store(struct device *dev, > struct cros_ec_command *msg; > int ret; > unsigned int val; > - struct cros_ec_dev *ec = container_of(dev, > - struct cros_ec_dev, class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > > if (kstrtouint(buf, 0, &val)) > return -EINVAL; > @@ -238,8 +236,7 @@ static ssize_t led_rgb_store(struct device *dev, struct device_attribute *attr, > { > struct ec_params_lightbar *param; > struct cros_ec_command *msg; > - struct cros_ec_dev *ec = container_of(dev, > - struct cros_ec_dev, class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > unsigned int val[4]; > int ret, i = 0, j = 0, ok = 0; > > @@ -311,8 +308,7 @@ static ssize_t sequence_show(struct device *dev, > struct ec_response_lightbar *resp; > struct cros_ec_command *msg; > int ret; > - struct cros_ec_dev *ec = container_of(dev, > - struct cros_ec_dev, class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > > msg = alloc_lightbar_cmd_msg(ec); > if (!msg) > @@ -439,8 +435,7 @@ static ssize_t sequence_store(struct device *dev, struct device_attribute *attr, > struct cros_ec_command *msg; > unsigned int num; > int ret, len; > - struct cros_ec_dev *ec = container_of(dev, > - struct cros_ec_dev, class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > > for (len = 0; len < count; len++) > if (!isalnum(buf[len])) > @@ -488,8 +483,7 @@ static ssize_t program_store(struct device *dev, struct device_attribute *attr, > int extra_bytes, max_size, ret; > struct ec_params_lightbar *param; > struct cros_ec_command *msg; > - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, > - class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > > /* > * We might need to reject the program for size reasons. The EC > @@ -599,8 +593,7 @@ static umode_t cros_ec_lightbar_attrs_are_visible(struct kobject *kobj, > struct attribute *a, int n) > { > struct device *dev = container_of(kobj, struct device, kobj); > - struct cros_ec_dev *ec = container_of(dev, > - struct cros_ec_dev, class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > struct platform_device *pdev = to_platform_device(ec->dev); > struct cros_ec_platform *pdata = pdev->dev.platform_data; > int is_cros_ec; > diff --git a/drivers/platform/chrome/cros_ec_sysfs.c b/drivers/platform/chrome/cros_ec_sysfs.c > index 5a6db3fe213a..f34a50121064 100644 > --- a/drivers/platform/chrome/cros_ec_sysfs.c > +++ b/drivers/platform/chrome/cros_ec_sysfs.c > @@ -34,8 +34,6 @@ > #include <linux/types.h> > #include <linux/uaccess.h> > > -#define to_cros_ec_dev(dev) container_of(dev, struct cros_ec_dev, class_dev) > - > /* Accessor functions */ > > static ssize_t reboot_show(struct device *dev, > diff --git a/drivers/platform/chrome/cros_ec_vbc.c b/drivers/platform/chrome/cros_ec_vbc.c > index 6d38e6b08334..5356f26bc022 100644 > --- a/drivers/platform/chrome/cros_ec_vbc.c > +++ b/drivers/platform/chrome/cros_ec_vbc.c > @@ -29,8 +29,7 @@ static ssize_t vboot_context_read(struct file *filp, struct kobject *kobj, > loff_t pos, size_t count) > { > struct device *dev = container_of(kobj, struct device, kobj); > - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, > - class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > struct cros_ec_device *ecdev = ec->ec_dev; > struct ec_params_vbnvcontext *params; > struct cros_ec_command *msg; > @@ -70,8 +69,7 @@ static ssize_t vboot_context_write(struct file *filp, struct kobject *kobj, > loff_t pos, size_t count) > { > struct device *dev = container_of(kobj, struct device, kobj); > - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, > - class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > struct cros_ec_device *ecdev = ec->ec_dev; > struct ec_params_vbnvcontext *params; > struct cros_ec_command *msg; > @@ -111,8 +109,7 @@ static umode_t cros_ec_vbc_is_visible(struct kobject *kobj, > struct bin_attribute *a, int n) > { > struct device *dev = container_of(kobj, struct device, kobj); > - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, > - class_dev); > + struct cros_ec_dev *ec = to_cros_ec_dev(dev); > struct device_node *np = ec->ec_dev->dev->of_node; > > if (IS_ENABLED(CONFIG_OF) && np) { > diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h > index 4ff0cec979b0..4270972adb94 100644 > --- a/include/linux/mfd/cros_ec.h > +++ b/include/linux/mfd/cros_ec.h > @@ -197,6 +197,8 @@ struct cros_ec_dev { > u32 features[2]; > }; > > +#define to_cros_ec_dev(dev) container_of(dev, struct cros_ec_dev, class_dev) > + > /** > * cros_ec_suspend - Handle a suspend operation for the ChromeOS EC device > * > -- > 2.17.0.921.gf22659ad46-goog > The patch looks good to me. Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Thanks, Enric ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly 2018-05-30 16:04 ` [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly Gwendal Grignou 2018-05-30 16:43 ` Enric Balletbo Serra @ 2018-05-30 19:06 ` Benson Leung 1 sibling, 0 replies; 8+ messages in thread From: Benson Leung @ 2018-05-30 19:06 UTC (permalink / raw) To: Gwendal Grignou, lee.jones Cc: bleung, eballetbo, lee.jones, linux-kernel, enric.balletbo [-- Attachment #1: Type: text/plain, Size: 571 bytes --] Hi Gwendal, On Wed, May 30, 2018 at 09:04:13AM -0700, Gwendal Grignou wrote: > Move to_cros_ec_dev macro to cros_ec.h and use it when the private ec > object is needed from device object. > > Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Applied to platform/chrome for v4.18. FYI, Lee, I'll add the new macro in cros_ec.h through my tree. Looks to merge clean with mfd's changes this time. Thanks, Benson -- Benson Leung Staff Software Engineer Chrome OS Kernel Google Inc. bleung@google.com Chromium OS Project bleung@chromium.org [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] cros_ec: Use devm_kzalloc for private data 2018-05-23 16:35 ` Enric Balletbo Serra 2018-05-30 16:04 ` [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly Gwendal Grignou @ 2018-05-30 16:54 ` Gwendal Grignou 2018-06-04 7:42 ` Lee Jones 2018-06-05 6:59 ` Lee Jones 1 sibling, 2 replies; 8+ messages in thread From: Gwendal Grignou @ 2018-05-30 16:54 UTC (permalink / raw) To: bleung, lee.jones; +Cc: linux-kernel Use dev_kzmalloc, remove .release entry point. Signed-off-by: Gwendal Grignou <gwendal@chromium.org> --- Change sinc v1: - Readd __remove to avoid a warning when loaded as a module. drivers/mfd/cros_ec_dev.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index 1d6dc5c7a19d..81466264f7fc 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -262,12 +262,7 @@ static const struct file_operations fops = { #endif }; -static void __remove(struct device *dev) -{ - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, - class_dev); - kfree(ec); -} +static void __remove(struct device *dev) { } static void cros_ec_sensors_register(struct cros_ec_dev *ec) { @@ -392,7 +387,7 @@ static int ec_device_probe(struct platform_device *pdev) int retval = -ENOMEM; struct device *dev = &pdev->dev; struct cros_ec_platform *ec_platform = dev_get_platdata(dev); - struct cros_ec_dev *ec = kzalloc(sizeof(*ec), GFP_KERNEL); + struct cros_ec_dev *ec = devm_kzalloc(dev, sizeof(*ec), GFP_KERNEL); if (!ec) return retval; @@ -414,7 +409,6 @@ static int ec_device_probe(struct platform_device *pdev) ec->class_dev.devt = MKDEV(ec_major, pdev->id); ec->class_dev.class = &cros_class; ec->class_dev.parent = dev; - ec->class_dev.release = __remove; retval = dev_set_name(&ec->class_dev, "%s", ec_platform->ec_name); if (retval) { -- 2.17.0.921.gf22659ad46-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] cros_ec: Use devm_kzalloc for private data 2018-05-30 16:54 ` [PATCH v2] cros_ec: Use devm_kzalloc for private data Gwendal Grignou @ 2018-06-04 7:42 ` Lee Jones 2018-06-05 6:59 ` Lee Jones 1 sibling, 0 replies; 8+ messages in thread From: Lee Jones @ 2018-06-04 7:42 UTC (permalink / raw) To: Gwendal Grignou; +Cc: bleung, linux-kernel On Wed, 30 May 2018, Gwendal Grignou wrote: > Use dev_kzmalloc, remove .release entry point. > > Signed-off-by: Gwendal Grignou <gwendal@chromium.org> > --- > Change sinc v1: > - Readd __remove to avoid a warning when loaded as a module. > > drivers/mfd/cros_ec_dev.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) Applied, thanks. -- Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] cros_ec: Use devm_kzalloc for private data 2018-05-30 16:54 ` [PATCH v2] cros_ec: Use devm_kzalloc for private data Gwendal Grignou 2018-06-04 7:42 ` Lee Jones @ 2018-06-05 6:59 ` Lee Jones 1 sibling, 0 replies; 8+ messages in thread From: Lee Jones @ 2018-06-05 6:59 UTC (permalink / raw) To: Gwendal Grignou; +Cc: bleung, linux-kernel On Wed, 30 May 2018, Gwendal Grignou wrote: > Use dev_kzmalloc, remove .release entry point. > > Signed-off-by: Gwendal Grignou <gwendal@chromium.org> > --- > Change sinc v1: > - Readd __remove to avoid a warning when loaded as a module. > > drivers/mfd/cros_ec_dev.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c > index 1d6dc5c7a19d..81466264f7fc 100644 > --- a/drivers/mfd/cros_ec_dev.c > +++ b/drivers/mfd/cros_ec_dev.c > @@ -262,12 +262,7 @@ static const struct file_operations fops = { > #endif > }; > > -static void __remove(struct device *dev) > -{ > - struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev, > - class_dev); > - kfree(ec); > -} > +static void __remove(struct device *dev) { } I missed this line when reviewing. Why are you keeping the function around? As a result, we now suffer with a build warning: drivers/mfd/cros_ec_dev.c:265:13: warning: '__remove' defined but not used [-Wunused-function] static void __remove(struct device *dev) { } Can I just remove the line? What are the ramifications of doing so? Please reply swiftly, so resolve this issue in good time. -- Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-06-05 6:59 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-05-09 23:06 [PATCH] cros_ec: Use devm_kzalloc for private data Gwendal Grignou 2018-05-23 16:35 ` Enric Balletbo Serra 2018-05-30 16:04 ` [PATCH v2] platform/chrome: Use to_cros_ec_dev more broadly Gwendal Grignou 2018-05-30 16:43 ` Enric Balletbo Serra 2018-05-30 19:06 ` Benson Leung 2018-05-30 16:54 ` [PATCH v2] cros_ec: Use devm_kzalloc for private data Gwendal Grignou 2018-06-04 7:42 ` Lee Jones 2018-06-05 6:59 ` Lee Jones
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox