Message ID | 20220915123422.520721-1-marcus.folkesson@gmail.com |
---|---|
State | New |
Headers | show |
Series | HID: hid-cmedia: use device managed resources | expand |
Hi, Do you pick up this (and the similiar [PATCH] HID: hid-alps: use default remove for hid device [PATCH] HID: hid-elan: use default remove for hid device ) patch as well? On Thu, Sep 15, 2022 at 02:34:22PM +0200, Marcus Folkesson wrote: > When we do not need to free() any memory in .remove, we can remove > cmhid_remove as well. > hid_device_remove() will call hid_hw_stop() as default .remove function > if no function is specified. > > Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> > --- > drivers/hid/hid-cmedia.c | 25 +++++-------------------- > 1 file changed, 5 insertions(+), 20 deletions(-) > > diff --git a/drivers/hid/hid-cmedia.c b/drivers/hid/hid-cmedia.c > index cab42047bc99..87786a88b119 100644 > --- a/drivers/hid/hid-cmedia.c > +++ b/drivers/hid/hid-cmedia.c > @@ -145,11 +145,9 @@ static int cmhid_probe(struct hid_device *hid, const struct hid_device_id *id) > int ret; > struct cmhid *cm; > > - cm = kzalloc(sizeof(struct cmhid), GFP_KERNEL); > - if (!cm) { > - ret = -ENOMEM; > - goto allocfail; > - } > + cm = devm_kzalloc(&hid->dev, sizeof(struct cmhid), GFP_KERNEL); > + if (!cm) > + return -ENOMEM; > > cm->hid = hid; > > @@ -159,28 +157,16 @@ static int cmhid_probe(struct hid_device *hid, const struct hid_device_id *id) > ret = hid_parse(hid); > if (ret) { > hid_err(hid, "parse failed\n"); > - goto fail; > + return ret; > } > > ret = hid_hw_start(hid, HID_CONNECT_DEFAULT | HID_CONNECT_HIDDEV_FORCE); > if (ret) { > hid_err(hid, "hw start failed\n"); > - goto fail; > + return ret; > } > > return 0; Outch, I just saw that we should just return ret here. IOW if (ret) hid_err(hid, "hw start failed\n"); return ret; Do you want me to send v2 or do you fix that when applying? Thanks, Marcus Folkesson
diff --git a/drivers/hid/hid-cmedia.c b/drivers/hid/hid-cmedia.c index cab42047bc99..87786a88b119 100644 --- a/drivers/hid/hid-cmedia.c +++ b/drivers/hid/hid-cmedia.c @@ -145,11 +145,9 @@ static int cmhid_probe(struct hid_device *hid, const struct hid_device_id *id) int ret; struct cmhid *cm; - cm = kzalloc(sizeof(struct cmhid), GFP_KERNEL); - if (!cm) { - ret = -ENOMEM; - goto allocfail; - } + cm = devm_kzalloc(&hid->dev, sizeof(struct cmhid), GFP_KERNEL); + if (!cm) + return -ENOMEM; cm->hid = hid; @@ -159,28 +157,16 @@ static int cmhid_probe(struct hid_device *hid, const struct hid_device_id *id) ret = hid_parse(hid); if (ret) { hid_err(hid, "parse failed\n"); - goto fail; + return ret; } ret = hid_hw_start(hid, HID_CONNECT_DEFAULT | HID_CONNECT_HIDDEV_FORCE); if (ret) { hid_err(hid, "hw start failed\n"); - goto fail; + return ret; } return 0; -fail: - kfree(cm); -allocfail: - return ret; -} - -static void cmhid_remove(struct hid_device *hid) -{ - struct cmhid *cm = hid_get_drvdata(hid); - - hid_hw_stop(hid); - kfree(cm); } static const struct hid_device_id cmhid_devices[] = { @@ -195,7 +181,6 @@ static struct hid_driver cmhid_driver = { .raw_event = cmhid_raw_event, .input_configured = cmhid_input_configured, .probe = cmhid_probe, - .remove = cmhid_remove, .input_mapping = cmhid_input_mapping, };
When we do not need to free() any memory in .remove, we can remove cmhid_remove as well. hid_device_remove() will call hid_hw_stop() as default .remove function if no function is specified. Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> --- drivers/hid/hid-cmedia.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-)