Hi David, while reviewing the tcp_md5-related code further i came across with another two of these casts which you probably have missed. I don't actually think that they impose a problem by now, but as you said we should remove them. Matthias --- linux-2.6.23.1.orig/net/ipv4/tcp_ipv4.c 2007-10-16 17:25:05.000000000 +0200 +++ linux-2.6.23.1/net/ipv4/tcp_ipv4.c 2007-10-16 17:50:05.000000000 +0200 @@ -857,16 +857,16 @@ int tcp_v4_md5_do_add(struct sock *sk, _ u8 *newkey, u8 newkeylen) { /* Add Key to the list */ - struct tcp4_md5sig_key *key; + struct tcp_md5sig_key *key; struct tcp_sock *tp = tcp_sk(sk); struct tcp4_md5sig_key *keys; - key = (struct tcp4_md5sig_key *)tcp_v4_md5_do_lookup(sk, addr); + key = tcp_v4_md5_do_lookup(sk, addr); if (key) { /* Pre-existing entry - just update that one. */ - kfree(key->base.key); - key->base.key = newkey; - key->base.keylen = newkeylen; + kfree(key->key); + key->key = newkey; + key->keylen = newkeylen; } else { struct tcp_md5sig_info *md5sig; --- linux-2.6.23.1.orig/net/ipv6/tcp_ipv6.c 2007-10-16 17:47:57.000000000 +0200 +++ linux-2.6.23.1/net/ipv6/tcp_ipv6.c 2007-10-16 17:49:25.000000000 +0200 @@ -560,16 +560,16 @@ static int tcp_v6_md5_do_add(struct sock char *newkey, u8 newkeylen) { /* Add key to the list */ - struct tcp6_md5sig_key *key; + struct tcp_md5sig_key *key; struct tcp_sock *tp = tcp_sk(sk); struct tcp6_md5sig_key *keys; - key = (struct tcp6_md5sig_key*) tcp_v6_md5_do_lookup(sk, peer); + key = tcp_v6_md5_do_lookup(sk, peer); if (key) { /* modify existing entry - just update that one */ - kfree(key->base.key); - key->base.key = newkey; - key->base.keylen = newkeylen; + kfree(key->key); + key->key = newkey; + key->keylen = newkeylen; } else { /* reallocate new list if current one is full. */ if (!tp->md5sig_info) { Signed-off-by: Matthias M. Dellweg <2500@xxxxxx> - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html