From: Paul Jackson <pj@sgi.com>
To: Andrew Morton <akpm@osdl.org>
Cc: greg@kroah.com, ebiederm@xmission.com,
linux-kernel@vger.kernel.org, yanmin.zhang@intel.com,
neilb@cse.unsw.edu.au, steiner@sgi.com, hawkes@sgi.com
Subject: Re: + proc-dont-lock-task_structs-indefinitely-cpuset-fix-2.patch added to -mm tree
Date: Thu, 2 Mar 2006 11:12:01 -0800 [thread overview]
Message-ID: <20060302111201.cf61552f.pj@sgi.com> (raw)
In-Reply-To: <20060301234215.62010fec.akpm@osdl.org>
John, Jack,
Adding you to this one. We've seen this before, and
I wasted Andrew's and others time chasing it again.
I speculate at the bottom of this message that I
should add a panic on the kzalloc that fails if one
has 1024 CPUS, SPINLOCK debug, and just slightly larger
data structures with a new patch than we had before.
Feel free to comment on whether such a panic, or other
remedy would be desirable or not.
===
Andrew wrote:
> OK. This is awful. I cannot see it.
Crap - I should have recognized this problem a day ago.
I wasted your time. Sorry.
The extra data pushed the size of our (big SN2) sysfs_cpus[] array
past the point that it could be kzalloc'd.
The initial failure is in the file:
arch/ia64/kernel/topology.c
function:
topology_init
line:
sysfs_cpus = kzalloc(sizeof(struct ia64_cpu) * NR_CPUS, GFP_KERNEL);
With our large NR_CPUS of 1024, and the additional cost of
the CONFIG_DEBUG_SPINLOCK* debug stuff, and the little bit of
additional data added by this patch, that kzalloc() fails.
The final collapse occurs in the file:
fs/sysfs/group.c
function:
sysfs_create_group
line:
BUG_ON(!kobj || !kobj->dentry);
where kobj->dentry points to 0x58.
The offset of dentry in struct kobject is 0x50, and the offset of that
kobj in the containing struct sys_dev is another 0x8 bytes, resulting
in the failed reference:
Unable to handle kernel NULL pointer dereference (address 0000000000000058)
The drivers/base/cpu.c array:
static struct sys_device *cpu_sys_devices[NR_CPUS];
is never filled in, as a result of the above kzalloc() failure, causing
the routine get_cpu_sysdev() in drivers/base/cpu.c to return a NULL
pointer (unknowingly).
I should stare at the code between this point of initial failure and
the point that the house of cards finally collapsed and see if
something should have squeaked sooner.
Though I'm not a guru in this code, so I'm saying a little prayer that
someone else will have a more useful suggestion.
I've added a couple of SGI wizards in this area to the cc list.
I suspect that the short term solution is to proceed without
prejudice to the patch that triggered this:
gregkh-driver-allow-sysfs-attribute-files-to-be-pollable.patch
while I look at some way, if just a stop gap measure, to complain
earlier in the boot, closer to the scene of the original crime,
so that others hitting this won't waste more time.
Perhaps failing that first kzalloc should cause a complaint,
if not a panic. It would seem that the system is beyond repair
if that kzalloc fails. And since the system hasn't even finished
booting yet, and is for sure trying to boot some larger than tried
before configuration, might just as well announce ones death boldly.
--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.925.600.0401
next prev parent reply other threads:[~2006-03-02 19:12 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200603010120.k211KqVP009559@shell0.pdx.osdl.net>
2006-03-01 2:18 ` + proc-dont-lock-task_structs-indefinitely-cpuset-fix-2.patch added to -mm tree Paul Jackson
2006-03-01 2:36 ` Andrew Morton
2006-03-01 3:45 ` Paul Jackson
2006-03-01 4:10 ` Paul Jackson
2006-03-01 5:05 ` Eric W. Biederman
2006-03-01 5:25 ` Paul Jackson
2006-03-01 6:11 ` Eric W. Biederman
2006-03-01 6:15 ` Eric W. Biederman
2006-03-01 7:20 ` [PATCH] proc: Reference couting fix Eric W. Biederman
2006-03-01 7:26 ` [PATCH] proc: task_mmu bug fix Eric W. Biederman
2006-03-01 7:46 ` Andrew Morton
2006-03-01 12:49 ` Eric W. Biederman
2006-03-01 13:14 ` Hugh Dickins
2006-03-01 13:15 ` Rafael J. Wysocki
2006-03-01 18:33 ` Paul Jackson
2006-03-01 7:48 ` + proc-dont-lock-task_structs-indefinitely-cpuset-fix-2.patch added to -mm tree Paul Jackson
2006-03-01 8:26 ` Andrew Morton
2006-03-01 8:39 ` Paul Jackson
2006-03-01 9:53 ` Paul Jackson
2006-03-01 10:02 ` Andrew Morton
2006-03-01 10:14 ` Paul Jackson
2006-03-01 10:11 ` Paul Jackson
2006-03-01 10:31 ` Paul Jackson
2006-03-01 19:21 ` Greg KH
2006-03-01 20:58 ` Paul Jackson
2006-03-01 21:30 ` Greg KH
2006-03-01 22:26 ` Andrew Morton
2006-03-01 22:50 ` Greg KH
2006-03-01 23:20 ` Paul Jackson
2006-03-01 23:40 ` Andrew Morton
2006-03-02 0:10 ` Paul Jackson
2006-03-02 0:35 ` Paul Jackson
2006-03-01 23:10 ` Paul Jackson
2006-03-01 23:40 ` Paul Jackson
2006-03-02 4:20 ` Andrew Morton
2006-03-02 6:14 ` Paul Jackson
2006-03-02 7:42 ` Andrew Morton
2006-03-02 19:12 ` Paul Jackson [this message]
2006-03-02 21:52 ` Andrew Morton
2006-03-03 6:33 ` Paul Jackson
2006-03-03 6:44 ` Andrew Morton
2006-03-01 4:31 ` Eric W. Biederman
2006-03-01 4:58 ` Paul Jackson
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=20060302111201.cf61552f.pj@sgi.com \
--to=pj@sgi.com \
--cc=akpm@osdl.org \
--cc=ebiederm@xmission.com \
--cc=greg@kroah.com \
--cc=hawkes@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@cse.unsw.edu.au \
--cc=steiner@sgi.com \
--cc=yanmin.zhang@intel.com \
/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