Commit 062ea674 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'uaccess.__copy_to_user' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull uaccess/__copy_to_user updates from Al Viro:
 "Getting rid of __copy_to_user() callers - stuff that doesn't fit into
  other series"

* 'uaccess.__copy_to_user' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  dlmfs: convert dlmfs_file_read() to copy_to_user()
  esas2r: don't bother with __copy_to_user()
parents 56446efa 0702e4f3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1510,7 +1510,7 @@ ioctl_done:
	}

	/* Always copy the buffer back, if only to pick up the status */
	err = __copy_to_user(arg, ioctl, sizeof(struct atto_express_ioctl));
	err = copy_to_user(arg, ioctl, sizeof(struct atto_express_ioctl));
	if (err != 0) {
		esas2r_log(ESAS2R_LOG_WARN,
			   "ioctl_handler copy_to_user didn't copy everything (err %d, cmd %u)",
+14 −19
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@ static ssize_t dlmfs_file_read(struct file *filp,
			       loff_t *ppos)
{
	int bytes_left;
	ssize_t readlen, got;
	ssize_t got;
	char *lvb_buf;
	struct inode *inode = file_inode(filp);

@@ -237,36 +237,31 @@ static ssize_t dlmfs_file_read(struct file *filp,
	if (*ppos >= i_size_read(inode))
		return 0;

	/* don't read past the lvb */
	if (count > i_size_read(inode) - *ppos)
		count = i_size_read(inode) - *ppos;

	if (!count)
		return 0;

	if (!access_ok(buf, count))
		return -EFAULT;

	/* don't read past the lvb */
	if ((count + *ppos) > i_size_read(inode))
		readlen = i_size_read(inode) - *ppos;
	else
		readlen = count;

	lvb_buf = kmalloc(readlen, GFP_NOFS);
	lvb_buf = kmalloc(count, GFP_NOFS);
	if (!lvb_buf)
		return -ENOMEM;

	got = user_dlm_read_lvb(inode, lvb_buf, readlen);
	got = user_dlm_read_lvb(inode, lvb_buf, count);
	if (got) {
		BUG_ON(got != readlen);
		bytes_left = __copy_to_user(buf, lvb_buf, readlen);
		readlen -= bytes_left;
		BUG_ON(got != count);
		bytes_left = copy_to_user(buf, lvb_buf, count);
		count -= bytes_left;
	} else
		readlen = 0;
		count = 0;

	kfree(lvb_buf);

	*ppos = *ppos + readlen;
	*ppos = *ppos + count;

	mlog(0, "read %zd bytes\n", readlen);
	return readlen;
	mlog(0, "read %zu bytes\n", count);
	return count;
}

static ssize_t dlmfs_file_write(struct file *filp,