tcp: md5: Handle RCU dereference of md5sig_info
authorMat Martineau <mathew.j.martineau@linux.intel.com>
Thu, 21 Dec 2017 18:29:10 +0000 (10:29 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Dec 2017 22:23:50 +0000 (17:23 -0500)
Dereference tp->md5sig_info in tcp_v4_destroy_sock() the same way it is
done in the adjacent call to tcp_clear_md5_list().

Resolves this sparse warning:

net/ipv4/tcp_ipv4.c:1914:17: warning: incorrect type in argument 1 (different address spaces)
net/ipv4/tcp_ipv4.c:1914:17:    expected struct callback_head *head
net/ipv4/tcp_ipv4.c:1914:17:    got struct callback_head [noderef] <asn:4>*<noident>

Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Acked-by: Christoph Paasch <cpaasch@apple.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_ipv4.c

index dd945b1..5d20324 100644 (file)
@@ -1911,7 +1911,7 @@ void tcp_v4_destroy_sock(struct sock *sk)
        /* Clean up the MD5 key list, if any */
        if (tp->md5sig_info) {
                tcp_clear_md5_list(sk);
-               kfree_rcu(tp->md5sig_info, rcu);
+               kfree_rcu(rcu_dereference_protected(tp->md5sig_info, 1), rcu);
                tp->md5sig_info = NULL;
        }
 #endif