Message ID | 1473566941-25149-1-git-send-email-axel.lin@ingics.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sep 11 2016 or thereabouts, Axel Lin wrote: > A kfree(readbuf) call was missed if hid_hw_raw_request() fails, fix it. > Also avoid mixing direct return with goto in the error paths. > > Signed-off-by: Axel Lin <axel.lin@ingics.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Cheers, Benjamin > --- > drivers/hid/hid-alps.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/hid/hid-alps.c b/drivers/hid/hid-alps.c > index 048befd..2808da9 100644 > --- a/drivers/hid/hid-alps.c > +++ b/drivers/hid/hid-alps.c > @@ -139,8 +139,8 @@ static int u1_read_write_register(struct hid_device *hdev, u32 address, > if (read_flag) { > readbuf = kzalloc(U1_FEATURE_REPORT_LEN, GFP_KERNEL); > if (!readbuf) { > - kfree(input); > - return -ENOMEM; > + ret = -ENOMEM; > + goto exit; > } > > ret = hid_hw_raw_request(hdev, U1_FEATURE_REPORT_ID, readbuf, > @@ -149,6 +149,7 @@ static int u1_read_write_register(struct hid_device *hdev, u32 address, > > if (ret < 0) { > dev_err(&hdev->dev, "failed read register (%d)\n", ret); > + kfree(readbuf); > goto exit; > } > > -- > 2.7.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, 11 Sep 2016, Axel Lin wrote: > A kfree(readbuf) call was missed if hid_hw_raw_request() fails, fix it. > Also avoid mixing direct return with goto in the error paths. Applied to hid.git#for-4.8/upstream-fixes, thanks.
diff --git a/drivers/hid/hid-alps.c b/drivers/hid/hid-alps.c index 048befd..2808da9 100644 --- a/drivers/hid/hid-alps.c +++ b/drivers/hid/hid-alps.c @@ -139,8 +139,8 @@ static int u1_read_write_register(struct hid_device *hdev, u32 address, if (read_flag) { readbuf = kzalloc(U1_FEATURE_REPORT_LEN, GFP_KERNEL); if (!readbuf) { - kfree(input); - return -ENOMEM; + ret = -ENOMEM; + goto exit; } ret = hid_hw_raw_request(hdev, U1_FEATURE_REPORT_ID, readbuf, @@ -149,6 +149,7 @@ static int u1_read_write_register(struct hid_device *hdev, u32 address, if (ret < 0) { dev_err(&hdev->dev, "failed read register (%d)\n", ret); + kfree(readbuf); goto exit; }
A kfree(readbuf) call was missed if hid_hw_raw_request() fails, fix it. Also avoid mixing direct return with goto in the error paths. Signed-off-by: Axel Lin <axel.lin@ingics.com> --- drivers/hid/hid-alps.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)