Messages in this thread Patch in this message | | | Date | Thu, 5 Feb 2015 15:20:50 -0500 | From | Sowmini Varadhan <> | Subject | [PATCH] rds: Make rds_message_copy_from_user() return 0 on success. |
| |
Commit c310e72c8992 ("rds: switch ->inc_copy_to_user() to passing iov_iter") breaks rds_message_copy_from_user() semantics on success, and causes it to return nbytes copied, when it should return 0. This commit fixes that bug.
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com> --- net/rds/message.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/net/rds/message.c b/net/rds/message.c index 5a21e6f..756c737 100644 --- a/net/rds/message.c +++ b/net/rds/message.c @@ -266,7 +266,7 @@ struct rds_message *rds_message_map_pages(unsigned long *page_addrs, unsigned in int rds_message_copy_from_user(struct rds_message *rm, struct iov_iter *from) { - unsigned long to_copy; + unsigned long to_copy, nbytes; unsigned long sg_off; struct scatterlist *sg; int ret = 0; @@ -293,9 +293,9 @@ int rds_message_copy_from_user(struct rds_message *rm, struct iov_iter *from) sg->length - sg_off); rds_stats_add(s_copy_from_user, to_copy); - ret = copy_page_from_iter(sg_page(sg), sg->offset + sg_off, - to_copy, from); - if (ret != to_copy) + nbytes = copy_page_from_iter(sg_page(sg), sg->offset + sg_off, + to_copy, from); + if (nbytes != to_copy) return -EFAULT; sg_off += to_copy; -- 1.7.1
| |