Commit 372cd7de authored by Andy Grover's avatar Andy Grover

RDS: Do not set op_active in r_m_copy_from_user().

Do not allocate sgs for data for 0-length datagrams

Set data.op_active in rds_sendmsg() instead of
rds_message_copy_from_user().
Signed-off-by: default avatarAndy Grover <andy.grover@oracle.com>
parent 5b2366bd
...@@ -330,8 +330,6 @@ int rds_message_copy_from_user(struct rds_message *rm, struct iovec *first_iov, ...@@ -330,8 +330,6 @@ int rds_message_copy_from_user(struct rds_message *rm, struct iovec *first_iov,
sg++; sg++;
} }
rm->data.op_active = 1;
out: out:
return ret; return ret;
} }
......
...@@ -970,11 +970,14 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, ...@@ -970,11 +970,14 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
goto out; goto out;
} }
/* Attach data to the rm */
if (payload_len) {
rm->data.op_sg = rds_message_alloc_sgs(rm, ceil(payload_len, PAGE_SIZE)); rm->data.op_sg = rds_message_alloc_sgs(rm, ceil(payload_len, PAGE_SIZE));
/* XXX fix this to not allocate memory */
ret = rds_message_copy_from_user(rm, msg->msg_iov, payload_len); ret = rds_message_copy_from_user(rm, msg->msg_iov, payload_len);
if (ret) if (ret)
goto out; goto out;
}
rm->data.op_active = 1;
rm->m_daddr = daddr; rm->m_daddr = daddr;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment