diff options
author | Andy Grover <andy.grover@oracle.com> | 2010-02-03 22:40:32 -0500 |
---|---|---|
committer | Andy Grover <andy.grover@oracle.com> | 2010-09-08 21:12:02 -0400 |
commit | 372cd7dedfd1ea93a9ae8d9c282e910dc1b76773 (patch) | |
tree | 248c672e0fd7fdb8015c51d02a0e74df8d9feef9 /net/rds | |
parent | 5b2366bd2835919e2e6a836e837eab4a9274bd46 (diff) |
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: Andy Grover <andy.grover@oracle.com>
Diffstat (limited to 'net/rds')
-rw-r--r-- | net/rds/message.c | 2 | ||||
-rw-r--r-- | net/rds/send.c | 13 |
2 files changed, 8 insertions, 7 deletions
diff --git a/net/rds/message.c b/net/rds/message.c index 4bd9504ca048..f4c3be0878e9 100644 --- a/net/rds/message.c +++ b/net/rds/message.c | |||
@@ -330,8 +330,6 @@ int rds_message_copy_from_user(struct rds_message *rm, struct iovec *first_iov, | |||
330 | sg++; | 330 | sg++; |
331 | } | 331 | } |
332 | 332 | ||
333 | rm->data.op_active = 1; | ||
334 | |||
335 | out: | 333 | out: |
336 | return ret; | 334 | return ret; |
337 | } | 335 | } |
diff --git a/net/rds/send.c b/net/rds/send.c index 66dc6b045261..ad89a63c4304 100644 --- a/net/rds/send.c +++ b/net/rds/send.c | |||
@@ -970,11 +970,14 @@ int rds_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, | |||
970 | goto out; | 970 | goto out; |
971 | } | 971 | } |
972 | 972 | ||
973 | rm->data.op_sg = rds_message_alloc_sgs(rm, ceil(payload_len, PAGE_SIZE)); | 973 | /* Attach data to the rm */ |
974 | /* XXX fix this to not allocate memory */ | 974 | if (payload_len) { |
975 | ret = rds_message_copy_from_user(rm, msg->msg_iov, payload_len); | 975 | rm->data.op_sg = rds_message_alloc_sgs(rm, ceil(payload_len, PAGE_SIZE)); |
976 | if (ret) | 976 | ret = rds_message_copy_from_user(rm, msg->msg_iov, payload_len); |
977 | goto out; | 977 | if (ret) |
978 | goto out; | ||
979 | } | ||
980 | rm->data.op_active = 1; | ||
978 | 981 | ||
979 | rm->m_daddr = daddr; | 982 | rm->m_daddr = daddr; |
980 | 983 | ||