AIO interface should prefer AIO operations over iter_op

Signed-off-by: Tadeusz Struk <[email protected]>
---
 fs/aio.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/fs/aio.c b/fs/aio.c
index f8e52a1..389f4dd 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1449,11 +1449,15 @@ rw_common:
                if (rw == WRITE)
                        file_start_write(file);
 
-               if (iter_op) {
+               if (rw_op) {
+                       ret = rw_op(req, iovec, nr_segs, req->ki_pos);
+               } else if (iter_op) {
                        iov_iter_init(&iter, rw, iovec, nr_segs, 
req->ki_nbytes);
                        ret = iter_op(req, &iter);
                } else {
-                       ret = rw_op(req, iovec, nr_segs, req->ki_pos);
+                       if (iovec != inline_vecs)
+                               kfree(iovec);
+                       return -EINVAL;
                }
 
                if (rw == WRITE)

--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to