All of lore.kernel.org
 help / color / mirror / Atom feed
From: LABBE Corentin <montjoie.mailing@gmail.com>
To: cpaul@redhat.com
Cc: David Herrmann <dh.herrmann@gmail.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Linux API <linux-api@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>, Joe Perches <joe@perches.com>,
	Jiri Slaby <jslaby@suse.com>,
	Vishnu Patekar <vishnupatekar0510@gmail.com>,
	Sebastian Ott <sebott@linux.vnet.ibm.com>,
	Benjamin Tissoires <benjamin.tissoires@redhat.com>,
	Hans de Goede <hdegoede@redhat.com>,
	linux-doc@vger.kernel.org
Subject: Re: [PATCH v8] Input: Add userio module
Date: Fri, 9 Oct 2015 16:52:44 +0200	[thread overview]
Message-ID: <20151009145244.GB20559@Red> (raw)
In-Reply-To: <1444401053-6686-1-git-send-email-cpaul@redhat.com>

On Fri, Oct 09, 2015 at 10:30:53AM -0400, cpaul@redhat.com wrote:
> From: Stephen Chandler Paul <cpaul@redhat.com>
> +
> +static ssize_t userio_char_read(struct file *file, char __user *user_buffer,
> +				size_t count, loff_t *ppos)
> +{
> +	struct userio_device *userio = file->private_data;
> +	int ret;
> +	size_t nonwrap_len, copylen;
> +	unsigned char buf[USERIO_BUFSIZE];
> +	unsigned long flags;
> +
> +	if (!count)
> +		return 0;
> +
> +	/*
> +	 * By the time we get here, the data that was waiting might have been
> +	 * taken by another thread. Grab the mutex and check if there's still
> +	 * any data waiting, otherwise repeat this process until we have data
> +	 * (unless the file descriptor is non-blocking of course)
> +	 */
> +	for (;;) {
> +		spin_lock_irqsave(&userio->buf_lock, flags);
> +
> +		if (userio->head != userio->tail)
> +			break;
> +
> +		spin_unlock_irqrestore(&userio->buf_lock, flags);
> +
> +		if (file->f_flags & O_NONBLOCK)
> +			return -EAGAIN;
> +
> +		ret = wait_event_interruptible(userio->waitq,
> +					       userio->head != userio->tail);
> +		if (ret)
> +			return ret;
> +	}
> +
> +	nonwrap_len = CIRC_CNT_TO_END(userio->head, userio->tail,
> +				      USERIO_BUFSIZE);
> +	copylen = min(nonwrap_len, count);
> +	memcpy(buf, &userio->buf[userio->tail], copylen);
> +
> +	userio->tail = (userio->tail + copylen) % USERIO_BUFSIZE;
> +
> +	spin_unlock_irqrestore(&userio->buf_lock, flags);
> +
> +	if (copy_to_user(user_buffer, buf, copylen))
> +		return -EFAULT;
> +
> +	return copylen;
> +}

Hello

I think you could simplify by just return copy_to_user() since it return copylen in case of success.

Regards


  reply	other threads:[~2015-10-09 14:52 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-17 23:00 [PATCH v5] Input: Add userio module cpaul
2015-09-19 17:39 ` Dmitry Torokhov
2015-09-22 10:59 ` David Herrmann
2015-09-23 17:49   ` [PATCH v6 1/1] " cpaul
     [not found]     ` <1443030589-27574-1-git-send-email-cpaul-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-23 17:54       ` [PATCH v6.1 " cpaul-H+wXaHxf7aLQT0dZR+AlfA
2015-09-23 17:54         ` cpaul
2015-10-02 17:37         ` Dmitry Torokhov
2015-10-05 14:06           ` Stephen Chandler Paul
2015-10-05 14:06             ` Stephen Chandler Paul
2015-10-23 20:47             ` [PATCH v6.2 " cpaul
2015-10-24 22:40               ` Dmitry Torokhov
2015-10-26 13:51                 ` Lyude
2015-10-26 23:26                   ` Dmitry Torokhov
2015-10-27 18:10                     ` Lyude
2015-10-28  2:01                       ` Dmitry Torokhov
2015-10-05 15:55           ` [PATCH v7] " cpaul
2015-10-08 17:20             ` David Herrmann
     [not found]               ` <CANq1E4RCwq49T=iR40NfQLtxKdLCoTLFQB2KA17ksqRyTB568w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-09 14:30                 ` [PATCH v8] " cpaul-H+wXaHxf7aLQT0dZR+AlfA
2015-10-09 14:30                   ` cpaul
2015-10-09 14:52                   ` LABBE Corentin [this message]
2015-10-09 14:59                     ` Stephen Chandler Paul
2015-10-09 14:59                       ` Stephen Chandler Paul
2015-10-24 22:26               ` [PATCH v7] " Dmitry Torokhov

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=20151009145244.GB20559@Red \
    --to=montjoie.mailing@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=benjamin.tissoires@redhat.com \
    --cc=cpaul@redhat.com \
    --cc=dh.herrmann@gmail.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=joe@perches.com \
    --cc=jslaby@suse.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mchehab@osg.samsung.com \
    --cc=sebott@linux.vnet.ibm.com \
    --cc=vishnupatekar0510@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.