Skip to content

Commit

Permalink
RDMA/uverbs: Optimize clearing of extra bytes in response
Browse files Browse the repository at this point in the history
Clear extra bytes in response in batch manner instead
of doing it per-byte.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
  • Loading branch information
Leon Romanovsky authored and Jason Gunthorpe committed Dec 11, 2018
1 parent a276a4d commit 9435ef4
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions drivers/infiniband/core/uverbs_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,19 +58,21 @@
static int uverbs_response(struct uverbs_attr_bundle *attrs, const void *resp,
size_t resp_len)
{
u8 __user *cur = attrs->ucore.outbuf + resp_len;
u8 __user *end = attrs->ucore.outbuf + attrs->ucore.outlen;
int ret;

if (copy_to_user(attrs->ucore.outbuf, resp,
min(attrs->ucore.outlen, resp_len)))
return -EFAULT;

/* Zero fill any extra memory that user space might have provided */
for (; cur < end; cur++) {
ret = put_user(0, cur);
if (resp_len < attrs->ucore.outlen) {
/*
* Zero fill any extra memory that user
* space might have provided.
*/
ret = clear_user(attrs->ucore.outbuf + resp_len,
attrs->ucore.outlen - resp_len);
if (ret)
return ret;
return -EFAULT;
}

return 0;
Expand Down

0 comments on commit 9435ef4

Please sign in to comment.