summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Miller <davem@davemloft.net>2007-10-10 03:27:19 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2007-11-02 08:44:11 -0700
commit55d0058fe82cade2896d316952341c64d7dfa7c9 (patch)
tree77f39ae85f76efdc729e25be67ae7b91b6c1b738 /include
parent692767dfebce10bc997073eb707a934348cdfe08 (diff)
downloadlinux-stable-55d0058fe82cade2896d316952341c64d7dfa7c9.tar.gz
linux-stable-55d0058fe82cade2896d316952341c64d7dfa7c9.tar.bz2
linux-stable-55d0058fe82cade2896d316952341c64d7dfa7c9.zip
Fix TCP MD5 on big-endian.
changeset f8ab18d2d987a59ccbf0495032b2aef05b730037 in mainline. Based upon a report and initial patch by Peter Lieven. tcp4_md5sig_key and tcp6_md5sig_key need to start with the exact same members as tcp_md5sig_key. Because they are both cast to that type by tcp_v{4,6}_md5_do_lookup(). Unfortunately tcp{4,6}_md5sig_key use a u16 for the key length instead of a u8, which is what tcp_md5sig_key uses. This just so happens to work by accident on little-endian, but on big-endian it doesn't. Instead of casting, just place tcp_md5sig_key as the first member of the address-family specific structures, adjust the access sites, and kill off the ugly casts. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include')
-rw-r--r--include/net/tcp.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 06827e38a089..a99b4f6fb2cb 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -1061,14 +1061,12 @@ struct tcp_md5sig_key {
};
struct tcp4_md5sig_key {
- u8 *key;
- u16 keylen;
+ struct tcp_md5sig_key base;
__be32 addr;
};
struct tcp6_md5sig_key {
- u8 *key;
- u16 keylen;
+ struct tcp_md5sig_key base;
#if 0
u32 scope_id; /* XXX */
#endif