diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index e566f3c67677..652c32368ccc 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -900,8 +900,7 @@ int tcp_v4_md5_do_add(struct sock *sk, __be32 addr, | |||
900 | sizeof(*keys) * md5sig->entries4); | 900 | sizeof(*keys) * md5sig->entries4); |
901 | 901 | ||
902 | /* Free old key list, and reference new one */ | 902 | /* Free old key list, and reference new one */ |
903 | if (md5sig->keys4) | 903 | kfree(md5sig->keys4); |
904 | kfree(md5sig->keys4); | ||
905 | md5sig->keys4 = keys; | 904 | md5sig->keys4 = keys; |
906 | md5sig->alloced4++; | 905 | md5sig->alloced4++; |
907 | } | 906 | } |
@@ -939,10 +938,10 @@ int tcp_v4_md5_do_del(struct sock *sk, __be32 addr) | |||
939 | tp->md5sig_info->alloced4 = 0; | 938 | tp->md5sig_info->alloced4 = 0; |
940 | } else if (tp->md5sig_info->entries4 != i) { | 939 | } else if (tp->md5sig_info->entries4 != i) { |
941 | /* Need to do some manipulation */ | 940 | /* Need to do some manipulation */ |
942 | memcpy(&tp->md5sig_info->keys4[i], | 941 | memmove(&tp->md5sig_info->keys4[i], |
943 | &tp->md5sig_info->keys4[i+1], | 942 | &tp->md5sig_info->keys4[i+1], |
944 | (tp->md5sig_info->entries4 - i) * | 943 | (tp->md5sig_info->entries4 - i) * |
945 | sizeof(struct tcp4_md5sig_key)); | 944 | sizeof(struct tcp4_md5sig_key)); |
946 | } | 945 | } |
947 | tcp_free_md5sig_pool(); | 946 | tcp_free_md5sig_pool(); |
948 | return 0; | 947 | return 0; |