From: Leigh Brown <leigh@solinno.co.uk>
Date: Mon, 18 Dec 2006 01:12:30 +0000 (-0800)
Subject: [TCP]: Fix oops caused by tcp_v4_md5_do_del
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8228a18dd30f5c988b722495ea6c25cb1d2be035;p=linux.git

[TCP]: Fix oops caused by tcp_v4_md5_do_del

md5sig_info.alloced4 must be set to zero when freeing keys4, otherwise
it will not be alloc'd again when another key is added to the same
socket by tcp_v4_md5_do_add.

Signed-off-by: Leigh Brown <leigh@solinno.co.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
---

diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index a1222d6968c44..fa814fc506d59 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -928,6 +928,7 @@ int tcp_v4_md5_do_del(struct sock *sk, __be32 addr)
 			if (tp->md5sig_info->entries4 == 0) {
 				kfree(tp->md5sig_info->keys4);
 				tp->md5sig_info->keys4 = NULL;
+				tp->md5sig_info->alloced4 = 0;
 			} else if (tp->md5sig_info->entries4 != i) {
 				/* Need to do some manipulation */
 				memcpy(&tp->md5sig_info->keys4[i],