Commit 9435ef4c authored by Leon Romanovsky's avatar Leon Romanovsky Committed by Jason Gunthorpe
Browse files

RDMA/uverbs: Optimize clearing of extra bytes in response



Clear extra bytes in response in batch manner instead
of doing it per-byte.

Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Reviewed-by: default avatarYuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent a276a4d9
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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;