kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg().
Changes
1 files changed · +8 −7
| File | Status | Add | Del | Content |
|---|---|---|---|---|
| net/kcm/kcmsock.c | modified | +8 | −7 | View file |
net/kcm/kcmsock.c
View filediff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
index 740539a..dd1d8ff 100644
--- a/net/kcm/kcmsock.c
+++ b/net/kcm/kcmsock.c
@@ -930,17 +930,18 @@ partial_message:
out_error:
kcm_push(kcm);
- if (copied && sock->type == SOCK_SEQPACKET) {
+ if (sock->type == SOCK_SEQPACKET) {
/* Wrote some bytes before encountering an
* error, return partial success.
*/
- goto partial_message;
- }
-
- if (head != kcm->seq_skb)
+ if (copied)
+ goto partial_message;
+ if (head != kcm->seq_skb)
+ kfree_skb(head);
+ } else {
kfree_skb(head);
- else if (copied)
- kcm_tx_msg(head)->last_skb = skb;
+ kcm->seq_skb = NULL;
+ }
err = sk_stream_error(sk, msg->msg_flags, err);