summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2010-05-28 08:32:42 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2010-05-28 08:32:42 +0000
commit34c21f7445bcf7cc87e61515e75776a02274c460 (patch)
treed0023d2fdd0d44628f8315987505061dc56a6a52
parent2d2ee666765f51936858ef4b1429bfc1c7adfb3a (diff)
Make sure the temporary buffer used to generate tcp options is properly
aligned, otherwise we lose on strict alignment architecture. Should fix problems with gcc4 compiled bsd.rd's that people see on sparc64. ok millert@, beck@, jsing@
-rw-r--r--sys/netinet/tcp_output.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index d4da8619528..036c54176cd 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_output.c,v 1.87 2009/06/05 00:05:22 claudio Exp $ */
+/* $OpenBSD: tcp_output.c,v 1.88 2010/05/28 08:32:41 kettenis Exp $ */
/* $NetBSD: tcp_output.c,v 1.16 1997/06/03 16:17:09 kml Exp $ */
/*
@@ -212,7 +212,8 @@ tcp_output(struct tcpcb *tp)
int off, flags, error;
struct mbuf *m;
struct tcphdr *th;
- u_char opt[MAX_TCPOPTLEN];
+ u_int32_t optbuf[howmany(MAX_TCPOPTLEN, sizeof(u_int32_t))];
+ u_char *opt = (u_char *)optbuf;
unsigned int optlen, hdrlen, packetlen;
int idle, sendalot = 0;
#ifdef TCP_SACK