All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Jiri Slaby <jslaby@suse.cz>
Cc: pavel@ucw.cz, linux-pm@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org, jirislaby@gmail.com,
	Nigel Cunningham <ncunningham@crca.org.au>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 1/5] FS: libfs, implement simple_write_to_buffer
Date: Thu, 29 Apr 2010 00:10:33 +0200	[thread overview]
Message-ID: <201004290010.33950.rjw@sisk.pl> (raw)
In-Reply-To: <1272356118-10012-1-git-send-email-jslaby@suse.cz>

On Tuesday 27 April 2010, Jiri Slaby wrote:
> It will be used in suspend code and serves as an easy wrap around
> copy_from_user. Similar to simple_read_from_buffer, it takes care
> of transfers with proper lengths depending on available and count
> parameters and advances ppos appropriately.

Will anyone object if I take this one into the suspend-2.6 tree?

Rafael


> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
> Cc: Nigel Cunningham <ncunningham@crca.org.au>
> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
> Cc: Alexander Viro <viro@zeniv.linux.org.uk>
> Cc: linux-fsdevel@vger.kernel.org
> ---
>  fs/libfs.c         |   35 +++++++++++++++++++++++++++++++++++
>  include/linux/fs.h |    2 ++
>  2 files changed, 37 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/libfs.c b/fs/libfs.c
> index ea9a6cc..cfab42a 100644
> --- a/fs/libfs.c
> +++ b/fs/libfs.c
> @@ -547,6 +547,40 @@ ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
>  }
>  
>  /**
> + * simple_write_to_buffer - copy data from user space to the buffer
> + * @to: the buffer to write to
> + * @available: the size of the buffer
> + * @ppos: the current position in the buffer
> + * @from: the user space buffer to read from
> + * @count: the maximum number of bytes to read
> + *
> + * The simple_write_to_buffer() function reads up to @count bytes from the user
> + * space address starting at @from into the buffer @to at offset @ppos.
> + *
> + * On success, the number of bytes written is returned and the offset @ppos is
> + * advanced by this number, or negative value is returned on error.
> + **/
> +ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
> +		const void __user *from, size_t count)
> +{
> +	loff_t pos = *ppos;
> +	size_t ret;
> +
> +	if (pos < 0)
> +		return -EINVAL;
> +	if (pos >= available || !count)
> +		return 0;
> +	if (count > available - pos)
> +		count = available - pos;
> +	ret = copy_from_user(to + pos, from, count);
> +	if (ret == count)
> +		return -EFAULT;
> +	count -= ret;
> +	*ppos = pos + count;
> +	return count;
> +}
> +
> +/**
>   * memory_read_from_buffer - copy data from the buffer
>   * @to: the kernel space buffer to read to
>   * @count: the maximum number of bytes to read
> @@ -864,6 +898,7 @@ EXPORT_SYMBOL(simple_statfs);
>  EXPORT_SYMBOL(simple_sync_file);
>  EXPORT_SYMBOL(simple_unlink);
>  EXPORT_SYMBOL(simple_read_from_buffer);
> +EXPORT_SYMBOL(simple_write_to_buffer);
>  EXPORT_SYMBOL(memory_read_from_buffer);
>  EXPORT_SYMBOL(simple_transaction_set);
>  EXPORT_SYMBOL(simple_transaction_get);
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 66f3caa..e594a8d 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2372,6 +2372,8 @@ extern void simple_release_fs(struct vfsmount **mount, int *count);
>  
>  extern ssize_t simple_read_from_buffer(void __user *to, size_t count,
>  			loff_t *ppos, const void *from, size_t available);
> +extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
> +		const void __user *from, size_t count);
>  
>  extern int simple_fsync(struct file *, struct dentry *, int);
>  
> 


      parent reply	other threads:[~2010-04-28 22:10 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-27  8:15 [PATCH 1/5] FS: libfs, implement simple_write_to_buffer Jiri Slaby
2010-04-27  8:15 ` Jiri Slaby
2010-04-27  8:15 ` [PATCH 2/5] PM / Hibernate: snapshot cleanup Jiri Slaby
2010-04-27  8:15   ` Jiri Slaby
2010-04-28  5:52   ` Pavel Machek
2010-04-28  5:52     ` Pavel Machek
2010-04-27  8:15 ` [PATCH 3/5] PM / Hibernate: separate block_io Jiri Slaby
2010-04-27  8:15   ` Jiri Slaby
2010-04-28  5:52   ` Pavel Machek
2010-04-28  5:52     ` Pavel Machek
2010-04-29  6:22     ` Jiri Slaby
2010-04-29  6:22       ` Jiri Slaby
2010-04-27  8:15 ` [PATCH 4/5] PM / Hibernate: move the first_sector out of swsusp_write Jiri Slaby
2010-04-27  8:15   ` Jiri Slaby
2010-04-27  8:15 ` [PATCH 5/5] PM / Hibernate: group swap ops Jiri Slaby
2010-04-27  8:15   ` Jiri Slaby
2010-04-27 21:58 ` [PATCH 1/5] FS: libfs, implement simple_write_to_buffer Rafael J. Wysocki
2010-04-28 22:16   ` Rafael J. Wysocki
2010-05-01 22:00     ` Rafael J. Wysocki
2010-05-01 22:00     ` Rafael J. Wysocki
2010-04-28 22:16   ` Rafael J. Wysocki
2010-04-27 21:58 ` Rafael J. Wysocki
2010-04-28 22:10 ` Rafael J. Wysocki
2010-04-28 22:10 ` Rafael J. Wysocki [this message]

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=201004290010.33950.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=jirislaby@gmail.com \
    --cc=jslaby@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=ncunningham@crca.org.au \
    --cc=pavel@ucw.cz \
    --cc=viro@zeniv.linux.org.uk \
    /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.