Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1236056 > unrolled thread
| Started by | Luis de Bethencourt <luisbg@osg.samsung.com> |
|---|---|
| First post | 2015-09-30 12:30 +0200 |
| Last post | 2015-10-06 11:00 +0200 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] HID: hiddev: fix returned errno code in hiddev_connect() Luis de Bethencourt <luisbg@osg.samsung.com> - 2015-09-30 12:30 +0200
Re: [PATCH] HID: hiddev: fix returned errno code in hiddev_connect() Jiri Kosina <jikos@kernel.org> - 2015-09-30 21:50 +0200
Re: [PATCH] HID: hiddev: fix returned errno code in hiddev_connect() Luis de Bethencourt <luisbg@osg.samsung.com> - 2015-10-03 23:40 +0200
Re: [PATCH] HID: hiddev: fix returned errno code in hiddev_connect() Jiri Kosina <jikos@kernel.org> - 2015-10-05 16:30 +0200
Re: [PATCH] HID: hiddev: fix returned errno code in hiddev_connect() Luis de Bethencourt <luisbg@osg.samsung.com> - 2015-10-06 11:00 +0200
| From | Luis de Bethencourt <luisbg@osg.samsung.com> |
|---|---|
| Date | 2015-09-30 12:30 +0200 |
| Subject | [PATCH] HID: hiddev: fix returned errno code in hiddev_connect() |
| Message-ID | <qeml7-1mP-39@gated-at.bofh.it> |
The driver is using -1 instead of the -ENOMEM defined macro to specify that a buffer allocation failed. Since the error number is propagated, the caller will get a -EPERM which is the wrong error condition. Also, the smatch tool complains with the following warning: hiddev_connect() warn: returning -1 instead of -ENOMEM is sloppy Signed-off-by: Luis de Bethencourt <luisbg@osg.samsung.com> --- drivers/hid/usbhid/hiddev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index 2f1ddca..c5290ff 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c @@ -894,7 +894,7 @@ int hiddev_connect(struct hid_device *hid, unsigned int force) } if (!(hiddev = kzalloc(sizeof(struct hiddev), GFP_KERNEL))) - return -1; + return -ENOMEM; init_waitqueue_head(&hiddev->wait); INIT_LIST_HEAD(&hiddev->list); -- 2.5.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Jiri Kosina <jikos@kernel.org> |
|---|---|
| Date | 2015-09-30 21:50 +0200 |
| Subject | Re: [PATCH] HID: hiddev: fix returned errno code in hiddev_connect() |
| Message-ID | <qevy1-6hR-5@gated-at.bofh.it> |
| In reply to | #1236056 |
On Wed, 30 Sep 2015, Luis de Bethencourt wrote: > The driver is using -1 instead of the -ENOMEM defined macro to specify > that a buffer allocation failed. Since the error number is propagated, > the caller will get a -EPERM which is the wrong error condition. Generally I agree that the more specific errno, the better. But I am not really sure where you are seeing the bug (mapping to -EPERM) in this case? I think the only caller of hiddev_connect() should be hid_connect(), and the only thing that guy cares about whether individual callbacks succeed or fail, so that it sets hdev->clamed flags accordingly. Could you please be more specific about the -EPERM mapping you are talking about? Thanks, -- Jiri Kosina SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Luis de Bethencourt <luisbg@osg.samsung.com> |
|---|---|
| Date | 2015-10-03 23:40 +0200 |
| Message-ID | <qfCH8-5Dz-9@gated-at.bofh.it> |
| In reply to | #1236708 |
On 30/09/15 20:40, Jiri Kosina wrote: > On Wed, 30 Sep 2015, Luis de Bethencourt wrote: > >> The driver is using -1 instead of the -ENOMEM defined macro to specify >> that a buffer allocation failed. Since the error number is propagated, >> the caller will get a -EPERM which is the wrong error condition. > > Generally I agree that the more specific errno, the better. > > But I am not really sure where you are seeing the bug (mapping to -EPERM) > in this case? I think the only caller of hiddev_connect() should be > hid_connect(), and the only thing that guy cares about whether individual > callbacks succeed or fail, so that it sets hdev->clamed flags accordingly. > > Could you please be more specific about the -EPERM mapping you are talking > about? > > Thanks, > I agree with you. The only caller of hiddev_connect() only checks if the callback succeded. It checks if the return < 0. What I meant is that -1 means -EPERM. [0] This patch is purely about the correctness of using -ENOMEM. The word "propagated" was not the best way to describe this problem. I could edit the commit message if you would like. Thanks for the review, Luis [0] http://lxr.free-electrons.com/source/include/uapi/asm-generic/errno-base.h#L15 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jiri Kosina <jikos@kernel.org> |
|---|---|
| Date | 2015-10-05 16:30 +0200 |
| Subject | Re: [PATCH] HID: hiddev: fix returned errno code in hiddev_connect() |
| Message-ID | <qgeW5-1th-5@gated-at.bofh.it> |
| In reply to | #1239006 |
On Sat, 3 Oct 2015, Luis de Bethencourt wrote: > > But I am not really sure where you are seeing the bug (mapping to > > -EPERM) in this case? I think the only caller of hiddev_connect() > > should be hid_connect(), and the only thing that guy cares about > > whether individual callbacks succeed or fail, so that it sets > > hdev->clamed flags accordingly. > > > > Could you please be more specific about the -EPERM mapping you are > > talking about? > > > I agree with you. The only caller of hiddev_connect() only checks if the > callback succeded. It checks if the return < 0. > What I meant is that -1 means -EPERM. [0] I still don't understand what problem you are chasing here, sorry. EPERM is defined to be 1, yes. So are many other completely unrelated #defines. > This patch is purely about the correctness of using -ENOMEM. The word > "propagated" was not the best way to describe this problem. I could edit > the commit message if you would like. You seem to imply that someone might be interpreting that -1 as a define from errno.h. But that's not the case. Are you going to look at every 'return -1' occurence in the kernel and convert it to something else? That can keep you busy for quite some time: $ git grep 'return -1' | wc -l 9167 The only cleanup I'd imagine at least remotely possible in this case would be to convert the ->connect() callbacks return bool. -- Jiri Kosina SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Luis de Bethencourt <luisbg@osg.samsung.com> |
|---|---|
| Date | 2015-10-06 11:00 +0200 |
| Message-ID | <qgwgi-1eJ-15@gated-at.bofh.it> |
| In reply to | #1239592 |
On 05/10/15 15:24, Jiri Kosina wrote: > On Sat, 3 Oct 2015, Luis de Bethencourt wrote: > >>> But I am not really sure where you are seeing the bug (mapping to >>> -EPERM) in this case? I think the only caller of hiddev_connect() >>> should be hid_connect(), and the only thing that guy cares about >>> whether individual callbacks succeed or fail, so that it sets >>> hdev->clamed flags accordingly. >>> >>> Could you please be more specific about the -EPERM mapping you are >>> talking about? >>> >> I agree with you. The only caller of hiddev_connect() only checks if the >> callback succeded. It checks if the return < 0. >> What I meant is that -1 means -EPERM. [0] > > I still don't understand what problem you are chasing here, sorry. EPERM > is defined to be 1, yes. So are many other completely unrelated #defines. > >> This patch is purely about the correctness of using -ENOMEM. The word >> "propagated" was not the best way to describe this problem. I could edit >> the commit message if you would like. > > You seem to imply that someone might be interpreting that -1 as a define > from errno.h. But that's not the case. > > Are you going to look at every 'return -1' occurence in the kernel and > convert it to something else? That can keep you busy for quite some time: > > $ git grep 'return -1' | wc -l > 9167 > > The only cleanup I'd imagine at least remotely possible in this case would > be to convert the ->connect() callbacks return bool. > This is a very good point. I will write a second version of the patch that converts the return to a boolean. Thanks for the review, Luis -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web