WIP: update tizen_qemu_defconfig
[platform/kernel/linux-starfive.git] / fs / aio.c
index 5b2ff20..e85ba0b 100644 (file)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -361,6 +361,9 @@ static int aio_ring_mremap(struct vm_area_struct *vma)
        spin_lock(&mm->ioctx_lock);
        rcu_read_lock();
        table = rcu_dereference(mm->ioctx_table);
+       if (!table)
+               goto out_unlock;
+
        for (i = 0; i < table->nr; i++) {
                struct kioctx *ctx;
 
@@ -374,6 +377,7 @@ static int aio_ring_mremap(struct vm_area_struct *vma)
                }
        }
 
+out_unlock:
        rcu_read_unlock();
        spin_unlock(&mm->ioctx_lock);
        return res;
@@ -1552,7 +1556,7 @@ static int aio_read(struct kiocb *req, const struct iocb *iocb,
        if (unlikely(!file->f_op->read_iter))
                return -EINVAL;
 
-       ret = aio_setup_rw(READ, iocb, &iovec, vectored, compat, &iter);
+       ret = aio_setup_rw(ITER_DEST, iocb, &iovec, vectored, compat, &iter);
        if (ret < 0)
                return ret;
        ret = rw_verify_area(READ, file, &req->ki_pos, iov_iter_count(&iter));
@@ -1580,7 +1584,7 @@ static int aio_write(struct kiocb *req, const struct iocb *iocb,
        if (unlikely(!file->f_op->write_iter))
                return -EINVAL;
 
-       ret = aio_setup_rw(WRITE, iocb, &iovec, vectored, compat, &iter);
+       ret = aio_setup_rw(ITER_SOURCE, iocb, &iovec, vectored, compat, &iter);
        if (ret < 0)
                return ret;
        ret = rw_verify_area(WRITE, file, &req->ki_pos, iov_iter_count(&iter));