瀏覽代碼

[DCCP]: Fix skb leak in dccp_sendmsg

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Arnaldo Carvalho de Melo 19 年之前
父節點
當前提交
20472af986
共有 1 個文件被更改,包括 12 次插入0 次删除
  1. 12 0
      net/dccp/proto.c

+ 12 - 0
net/dccp/proto.c

@@ -206,6 +206,18 @@ int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
 		goto out_discard;
 
 	rc = dccp_write_xmit(sk, skb, len);
+	/*
+	 * XXX we don't use sk_write_queue, so just discard the packet.
+	 *     Current plan however is to _use_ sk_write_queue with
+	 *     an algorith similar to tcp_sendmsg, where the main difference
+	 *     is that in DCCP we have to respect packet boundaries, so
+	 *     no coalescing of skbs.
+	 *
+	 *     This bug was _quickly_ found & fixed by just looking at an OSTRA
+	 *     generated callgraph 8) -acme
+	 */
+	if (rc != 0)
+		goto out_discard;
 out_release:
 	release_sock(sk);
 	return rc ? : len;