]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'iocb' into for-davem
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 9 Apr 2015 04:00:30 +0000 (00:00 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 9 Apr 2015 04:01:38 +0000 (00:01 -0400)
trivial conflict in net/socket.c and non-trivial one in crypto -
that one had evaded aio_complete() removal.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
24 files changed:
1  2 
arch/s390/hypfs/inode.c
crypto/algif_skcipher.c
drivers/infiniband/hw/qib/qib_file_ops.c
drivers/scsi/sg.c
fs/affs/file.c
fs/aio.c
fs/btrfs/file.c
fs/btrfs/inode.c
fs/ceph/file.c
fs/ecryptfs/file.c
fs/ext4/indirect.c
fs/ext4/inode.c
fs/fuse/dev.c
fs/nfs/direct.c
fs/nfs/file.c
fs/xfs/xfs_file.c
include/linux/fs.h
include/net/sock.h
kernel/printk/printk.c
kernel/sysctl.c
mm/shmem.c
net/ipv4/raw.c
net/socket.c
sound/core/pcm_native.c

Simple merge
index 0aa02635ceda67a0591c6eb2a25a1d789a8a2012,0c8a1e5ccadf7d1ca16d9da3bd1042e3ff724177..8f903b6df29978987b1c70e4589d46218095b202
@@@ -75,40 -52,6 +75,40 @@@ struct skcipher_async_req 
  #define MAX_SGL_ENTS ((4096 - sizeof(struct skcipher_sg_list)) / \
                      sizeof(struct scatterlist) - 1)
  
-       aio_complete(iocb, err, err);
 +static void skcipher_free_async_sgls(struct skcipher_async_req *sreq)
 +{
 +      struct skcipher_async_rsgl *rsgl, *tmp;
 +      struct scatterlist *sgl;
 +      struct scatterlist *sg;
 +      int i, n;
 +
 +      list_for_each_entry_safe(rsgl, tmp, &sreq->list, list) {
 +              af_alg_free_sg(&rsgl->sgl);
 +              if (rsgl != &sreq->first_sgl)
 +                      kfree(rsgl);
 +      }
 +      sgl = sreq->tsg;
 +      n = sg_nents(sgl);
 +      for_each_sg(sgl, sg, n, i)
 +              put_page(sg_page(sg));
 +
 +      kfree(sreq->tsg);
 +}
 +
 +static void skcipher_async_cb(struct crypto_async_request *req, int err)
 +{
 +      struct sock *sk = req->data;
 +      struct alg_sock *ask = alg_sk(sk);
 +      struct skcipher_ctx *ctx = ask->private;
 +      struct skcipher_async_req *sreq = GET_SREQ(req, ctx);
 +      struct kiocb *iocb = sreq->iocb;
 +
 +      atomic_dec(&ctx->inflight);
 +      skcipher_free_async_sgls(sreq);
 +      kfree(req);
++      iocb->ki_complete(iocb, err, err);
 +}
 +
  static inline int skcipher_sndbuf(struct sock *sk)
  {
        struct alg_sock *ask = alg_sk(sk);
Simple merge
diff --cc fs/affs/file.c
Simple merge
diff --cc fs/aio.c
Simple merge
diff --cc fs/btrfs/file.c
Simple merge
Simple merge
diff --cc fs/ceph/file.c
Simple merge
Simple merge
Simple merge
diff --cc fs/ext4/inode.c
Simple merge
diff --cc fs/fuse/dev.c
Simple merge
diff --cc fs/nfs/direct.c
Simple merge
diff --cc fs/nfs/file.c
Simple merge
index a2e1cb8a568bf9d45e32c43539a2e6f8b56d83f4,f527618cb42b8b490d3b3aa2787afab4eb94ab36..f44212fae65327347db1ba9f8ec1739d30650f44
@@@ -36,9 -36,7 +36,8 @@@
  #include "xfs_trace.h"
  #include "xfs_log.h"
  #include "xfs_icache.h"
 +#include "xfs_pnfs.h"
  
- #include <linux/aio.h>
  #include <linux/dcache.h>
  #include <linux/falloc.h>
  #include <linux/pagevec.h>
Simple merge
Simple merge
Simple merge
diff --cc kernel/sysctl.c
Simple merge
diff --cc mm/shmem.c
Simple merge
diff --cc net/ipv4/raw.c
Simple merge
diff --cc net/socket.c
index 073809f4125f276799418342f9c60519a3da82e9,f6c519d7b3ba9d47e0f967345d8a9153c1c23df2..989b1ae32afaad0cd2519b83a2c843ac4074528e
@@@ -808,10 -855,11 +808,10 @@@ static ssize_t sock_read_iter(struct ki
        if (iocb->ki_pos != 0)
                return -ESPIPE;
  
-       if (iocb->ki_nbytes == 0)       /* Match SYS5 behaviour */
+       if (!iov_iter_count(to))        /* Match SYS5 behaviour */
                return 0;
  
-       res = sock_recvmsg(sock, &msg, iocb->ki_nbytes, msg.msg_flags);
 -      res = __sock_recvmsg(iocb, sock, &msg,
 -                           iov_iter_count(to), msg.msg_flags);
++      res = sock_recvmsg(sock, &msg, iov_iter_count(to), msg.msg_flags);
        *to = msg.msg_iter;
        return res;
  }
@@@ -833,7 -880,7 +833,7 @@@ static ssize_t sock_write_iter(struct k
        if (sock->type == SOCK_SEQPACKET)
                msg.msg_flags |= MSG_EOR;
  
-       res = sock_sendmsg(sock, &msg, iocb->ki_nbytes);
 -      res = __sock_sendmsg(iocb, sock, &msg, iov_iter_count(from));
++      res = sock_sendmsg(sock, &msg, iov_iter_count(from));
        *from = msg.msg_iter;
        return res;
  }
Simple merge