Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[firefly-linux-kernel-4.4.55.git] / fs / ncpfs / file.c
index 5f9d5624e377f46517042227d82ce058dd9083ee..011324ce9df21181d6983f1fe81c659e1120a814 100644 (file)
@@ -170,20 +170,15 @@ ncp_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
        struct file *file = iocb->ki_filp;
        struct inode *inode = file_inode(file);
        size_t already_written = 0;
-       loff_t pos = iocb->ki_pos;
-       size_t count = iov_iter_count(from);
        size_t bufsize;
        int errno;
        void *bouncebuffer;
+       off_t pos;
 
        ncp_dbg(1, "enter %pD2\n", file);
-       errno = generic_write_checks(file, &pos, &count, 0);
-       if (errno)
+       errno = generic_write_checks(iocb, from);
+       if (errno <= 0)
                return errno;
-       iov_iter_truncate(from, count);
-       
-       if (!count)
-               return 0;
 
        errno = ncp_make_open(inode, O_WRONLY);
        if (errno) {
@@ -201,10 +196,11 @@ ncp_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
                errno = -EIO;   /* -ENOMEM */
                goto outrel;
        }
+       pos = iocb->ki_pos;
        while (iov_iter_count(from)) {
                int written_this_time;
                size_t to_write = min_t(size_t,
-                                     bufsize - ((off_t)pos % bufsize),
+                                     bufsize - (pos % bufsize),
                                      iov_iter_count(from));
 
                if (copy_from_iter(bouncebuffer, to_write, from) != to_write) {
@@ -249,8 +245,6 @@ static int ncp_release(struct inode *inode, struct file *file) {
 const struct file_operations ncp_file_operations =
 {
        .llseek         = generic_file_llseek,
-       .read           = new_sync_read,
-       .write          = new_sync_write,
        .read_iter      = ncp_file_read_iter,
        .write_iter     = ncp_file_write_iter,
        .unlocked_ioctl = ncp_ioctl,