Re: 2.0.33 Oops

Andrea Arcangeli (arcangeli@mbox.queen.it)
Tue, 31 Mar 1998 23:43:23 +0200 (CEST)


On Tue, 31 Mar 1998, Mitch Adair wrote:

>Mar 31 13:01:53 ns1.acan.net kernel: Unable to handle kernel NULL pointer dereference at virtual address c000000d
>Mar 31 13:01:53 ns1.acan.net kernel: current->tss.cr3 = 00f1f000, 8r3 = 00f1f000Mar 31 13:01:53 ns1.acan.net kernel: *pde = 00102067
>Mar 31 13:01:54 ns1.acan.net kernel: *pte = 00000000
>Mar 31 13:01:54 ns1.acan.net kernel: Oops: 0000
>Mar 31 13:01:54 ns1.acan.net kernel: CPU: 0
>Mar 31 13:01:54 ns1.acan.net kernel: EIP: 0010:[tcp_recvmsg+364/1032]

The Oops happened in linux/net/ipv4/tcp.c:

/*
* Next get a buffer.
*/

current->state = TASK_INTERRUPTIBLE;

skb = sk->receive_queue.next;
while (skb != (struct sk_buff *)&sk->receive_queue)
{
if (before(*seq, skb->seq))
break;
offset = *seq - skb->seq;
if (skb->h.th->syn)
^^^^
offset--;
if (offset < skb->len)
goto found_ok_skb;
if (skb->h.th->fin)
goto found_fin_ok;
if (!(flags & MSG_PEEK))
skb->used = 1;
skb = skb->next;
}

The Oops happened trying to dereference the pointer to the struct tcphdr
skb->h.th.

Andrea[s] Arcangeli

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu