alpha and em mtu
Sten Spans
sten at blinkenlights.nl
Mon Nov 15 13:07:40 PST 2004
On Mon, 15 Nov 2004, John Baldwin wrote:
> On Monday 15 November 2004 02:34 pm, Sten Spans wrote:
>> On Mon, 15 Nov 2004, John Baldwin wrote:
>>>
>> 548 /*
>> 549 * Check that TCP offset makes sense,
>> 550 * pull out TCP options and adjust length. XXX
>> 551 */
>> 552 off = th->th_off << 2;
>> 553 if (off < sizeof (struct tcphdr) || off > tlen) {
>> 554 tcpstat.tcps_rcvbadoff++;
>> 555 goto drop;
>> 556 }
>>
>>
>> The box that talks to the alpha has mtu 9014, this might
>> help to expose the bug.
>
> It may be that the off0 argument is less than the size of an IP header but is
> not a multiple of 4. Can you try this to see if it prints anything out
> before crashing:
>
> Index: netinet/tcp_input.c
> ===================================================================
> RCS file: /usr/cvs/src/sys/netinet/tcp_input.c,v
> retrieving revision 1.255
> diff -u -r1.255 tcp_input.c
> --- netinet/tcp_input.c 7 Nov 2004 19:19:35 -0000 1.255
> +++ netinet/tcp_input.c 15 Nov 2004 20:09:27 -0000
> @@ -497,6 +497,8 @@
> ip_stripoptions(m, (struct mbuf *)0);
> off0 = sizeof(struct ip);
> }
> + if (off0 & 0x3 != 0)
> + printf("%s: off0 %d is misaligned\n", __func__, off0);
> if (m->m_len < sizeof (struct tcpiphdr)) {
> if ((m = m_pullup(m, sizeof (struct tcpiphdr))) == 0) {
> tcpstat.tcps_rcvshort++;
>
changed to ((off0 & 0x3) != 0), didn't seem to print anything.
--
Sten Spans
"There is a crack in everything, that's how the light gets in."
Leonard Cohen - Anthem
More information about the freebsd-alpha
mailing list