From: Jiri Slaby <jirislaby@gmail.com>
To: Oliver Neukum <oliver@neukum.org>
Cc: Jiri Kosina <jikos@jikos.cz>,
linux-input@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: cleanup of hiddev
Date: Mon, 03 Nov 2008 20:58:11 +0100 [thread overview]
Message-ID: <490F57D3.6060503@gmail.com> (raw)
In-Reply-To: <200811031731.38055.oliver@neukum.org>
Oliver Neukum napsal(a):
> Hi Jiřis,
:)
Hi.
> this is the cleanup of hiddev against current vanilla. What do you think?
See my comments below.
> diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
> index 3ac3207..78f5a3b 100644
> --- a/drivers/hid/usbhid/hiddev.c
> +++ b/drivers/hid/usbhid/hiddev.c
> @@ -317,8 +325,8 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun
>
> while (retval == 0) {
> if (list->head == list->tail) {
> - add_wait_queue(&list->hiddev->wait, &wait);
> set_current_state(TASK_INTERRUPTIBLE);
> + add_wait_queue(&list->hiddev->wait, &wait);
maybe better to convert to prepare_to_wait()?
>
> while (list->head == list->tail) {
But moved here (or the set_current_state).
> if (file->f_flags & O_NONBLOCK) {
> @@ -335,7 +343,6 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun
> }
>
> schedule();
> - set_current_state(TASK_INTERRUPTIBLE);
This is wrong. Schedule ensures state to be TASK_RUNNING. Not setting it
again for the next loop would be a bug (but better to be done right after
the while statement).
> }
>
> set_current_state(TASK_RUNNING);
and finish_wait()
> @@ -810,13 +817,6 @@ int hiddev_connect(struct hid_device *hid, unsigned int force)
> if (!(hiddev = kzalloc(sizeof(struct hiddev), GFP_KERNEL)))
> return -1;
>
> - retval = usb_register_dev(usbhid->intf, &hiddev_class);
> - if (retval) {
> - err_hid("Not able to get a minor for this device.");
> - kfree(hiddev);
> - return -1;
> - }
> -
> init_waitqueue_head(&hiddev->wait);
> INIT_LIST_HEAD(&hiddev->list);
> spin_lock_init(&hiddev->list_lock);
> @@ -828,6 +828,14 @@ int hiddev_connect(struct hid_device *hid, unsigned int force)
>
> hiddev_table[usbhid->intf->minor - HIDDEV_MINOR_BASE] = hiddev;
usbhid->intf->minor is set even after this call:
> + retval = usb_register_dev(usbhid->intf, &hiddev_class);
> + if (retval) {
> + err_hid("Not able to get a minor for this device.");
> + hiddev_table[usbhid->intf->minor - HIDDEV_MINOR_BASE] = NULL;
> + kfree(hiddev);
> + return -1;
> + }
> +
> return 0;
> }
>
--
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
next prev parent reply other threads:[~2008-11-03 20:05 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-03 16:31 cleanup of hiddev Oliver Neukum
2008-11-03 19:58 ` Jiri Slaby [this message]
[not found] ` <490F57D3.6060503-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-11-04 12:17 ` Oliver Neukum
[not found] ` <200811041317.40482.oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org>
2008-11-04 15:19 ` Jiri Slaby
[not found] ` <4910681D.6020701-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-11-04 15:29 ` Oliver Neukum
2008-11-04 15:33 ` Jiri Slaby
2008-11-04 17:56 ` Oliver Neukum
[not found] ` <200811041856.47950.oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org>
2008-11-04 20:34 ` Jiri Slaby
2008-11-04 22:51 ` Oliver Neukum
2008-11-04 22:57 ` Jiri Slaby
2008-11-04 22:59 ` Oliver Neukum
2008-11-04 14:19 ` Oliver Neukum
2008-11-04 15:00 ` Alan Stern
2008-11-04 15:12 ` Oliver Neukum
2008-11-04 15:17 ` Jiri Slaby
2008-11-04 13:07 ` Oliver Neukum
-- strict thread matches above, loose matches on Subject: below --
2008-11-05 11:52 Oliver Neukum
[not found] ` <200811051252.40133.oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org>
2008-11-05 12:03 ` Jiri Slaby
2008-11-11 23:53 ` Jiri Kosina
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=490F57D3.6060503@gmail.com \
--to=jirislaby@gmail.com \
--cc=jikos@jikos.cz \
--cc=linux-input@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=oliver@neukum.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).