diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/rxrpc/ar-connection.c | 2 | ||||
-rw-r--r-- | net/rxrpc/ar-recvmsg.c | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/net/rxrpc/ar-connection.c b/net/rxrpc/ar-connection.c index 4106ca95ec86..7bf5b5b9e8b9 100644 --- a/net/rxrpc/ar-connection.c +++ b/net/rxrpc/ar-connection.c | |||
@@ -381,6 +381,8 @@ static int rxrpc_connect_exclusive(struct rxrpc_sock *rx, | |||
381 | 381 | ||
382 | rxrpc_assign_connection_id(conn); | 382 | rxrpc_assign_connection_id(conn); |
383 | rx->conn = conn; | 383 | rx->conn = conn; |
384 | } else { | ||
385 | spin_lock(&trans->client_lock); | ||
384 | } | 386 | } |
385 | 387 | ||
386 | /* we've got a connection with a free channel and we can now attach the | 388 | /* we've got a connection with a free channel and we can now attach the |
diff --git a/net/rxrpc/ar-recvmsg.c b/net/rxrpc/ar-recvmsg.c index 898492a8d61b..34b5490dde65 100644 --- a/net/rxrpc/ar-recvmsg.c +++ b/net/rxrpc/ar-recvmsg.c | |||
@@ -180,7 +180,8 @@ int rxrpc_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
180 | if (copy > len - copied) | 180 | if (copy > len - copied) |
181 | copy = len - copied; | 181 | copy = len - copied; |
182 | 182 | ||
183 | if (skb->ip_summed == CHECKSUM_UNNECESSARY) { | 183 | if (skb->ip_summed == CHECKSUM_UNNECESSARY || |
184 | skb->ip_summed == CHECKSUM_PARTIAL) { | ||
184 | ret = skb_copy_datagram_iovec(skb, offset, | 185 | ret = skb_copy_datagram_iovec(skb, offset, |
185 | msg->msg_iov, copy); | 186 | msg->msg_iov, copy); |
186 | } else { | 187 | } else { |
@@ -353,6 +354,10 @@ csum_copy_error: | |||
353 | if (continue_call) | 354 | if (continue_call) |
354 | rxrpc_put_call(continue_call); | 355 | rxrpc_put_call(continue_call); |
355 | rxrpc_kill_skb(skb); | 356 | rxrpc_kill_skb(skb); |
357 | if (!(flags & MSG_PEEK)) { | ||
358 | if (skb_dequeue(&rx->sk.sk_receive_queue) != skb) | ||
359 | BUG(); | ||
360 | } | ||
356 | skb_kill_datagram(&rx->sk, skb, flags); | 361 | skb_kill_datagram(&rx->sk, skb, flags); |
357 | rxrpc_put_call(call); | 362 | rxrpc_put_call(call); |
358 | return -EAGAIN; | 363 | return -EAGAIN; |