From: David Miller <davem@davemloft.net>
To: davej@redhat.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: frequent slab corruption (since a long time)
Date: Tue, 01 Aug 2006 22:05:38 -0700 (PDT) [thread overview]
Message-ID: <20060801.220538.89280517.davem@davemloft.net> (raw)
In-Reply-To: <20060802021617.GH22589@redhat.com>
From: Dave Jones <davej@redhat.com>
Date: Tue, 1 Aug 2006 22:16:17 -0400
> Anyone have any clues where that value could be coming from?
Some of the dumps in there looks like ethernet headers. For example,
in comment #7:
000: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a
010: 5a 5a 00 11 85 6a 0f ef 00 e0 52 cf 6c 00 08 00
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
That looks like an ethernet header for an IPv4 packet to ethernet
destination MAC 00:11:85:6a:0f:ef from ethernet source MAC
00:e0:52:cf:6c:00
But this chunk is OK since we are looking at a neighbouring
INUSE object.
The reocurring corruption:
0b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b ff ff ff ff
0c0: 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
is less identifyable. Although tg3_alloc_rx_skb() shows up
consistently in the neighbouring objects, the actually
corrupted piece is marked by release_mem() which is the
TTY layer.
The corruption is always a 32-bit 0xffffffff followed by
a 32-bit 0x00000000, 12 bytes into the object.
If it's sitting next to RX ethernet packets, it's probably
something in the vacinity of 1500+ bytes in size as that's
how large the RX skb data areas will be that the tg3 driver
allocates unless it is in Jumbo MTU mode.
By default, do_tty_write() will use a chunk size of 2048 for the write
buffer, tty->write_buf, and this is freed up as part of release_mem()
processing.
Another possibility, is the struct tty_struct itself since that is a
sizable structure too. And this theory is supported by
alloc_tty_struct() being in some of the triggering backtraces.
Perhaps a TTY refcounting problem or race condition of some sort.
What is 12-bytes into the tty_struct on x86? The struct tty_ldisc,
"ldisc" is. Oddly enough, this doesn't match up, since we'd expect
TTY_LDISC_MAGIC (0x5403) and instead we see 0xffffffff there.
Also, after the magic, we'd expect the address of the "n_tty"
string in tty_ldisc_N_TTY to show up in the next word, instead
we find NULL (0x00000000) there.
Something is clobbering the ldisc member of this free'd tty_struct is
seems. Maybe there is some problem with ldisc refcounting.
next prev parent reply other threads:[~2006-08-02 5:05 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-02 2:16 Dave Jones
2006-08-02 2:34 ` Roland Dreier
2006-08-02 3:37 ` Andi Kleen
2006-08-02 4:22 ` Dave Jones
2006-08-02 4:35 ` Andi Kleen
2006-08-02 4:46 ` Dave Jones
2006-08-02 5:05 ` David Miller [this message]
2006-08-02 5:31 ` David Miller
2006-08-02 22:23 ` Dave Jones
2006-08-02 22:49 ` David Miller
2006-08-03 17:40 ` Alan Cox
2006-08-03 17:56 ` Dave Jones
2006-08-03 20:48 ` Alan Cox
2006-08-02 23:14 ` Alan Cox
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060801.220538.89280517.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=davej@redhat.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome