Re: [4KSTACK][2.6.6] Stack overflow in radeonfb

From: Andrew Morton
Date: Fri May 14 2004 - 17:14:43 EST


Jörn Engel <joern@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Fri, 14 May 2004 11:49:23 +0200, Arjan van de Ven wrote:
> > On Fri, May 14, 2004 at 11:47:39AM +0200, Andrew Morton wrote:
> > > There's a `make buildcheck' target in -mm (from Arjan) into which we could
> > > integrate such a tool. Although probably it should be a different make
> > > target.
> >
> > I added it to buildcheck for now, based on Keith Owens' check-stack.sh
> > script. I added a tiny bit of perl (shudder) to it to
> > 1) Make it print in decimal not hex
> > 2) Filter the stack users to users of 400 bytes and higher
> >
> > I arbitrarily used 400; that surely is debatable.
>
> Keith' script has the major disadvantage of not working on anything
> but i386. Here is my old script that works on a few more.

That's nice and simple. All due respect to Keith, this is something
which humans have a chance of understanding too ;)

I removed the `vmlinux FORCE' targets from the makefile - that was forcing
a full rebuild after I'd just done one. Just let it check ./vmlinux and if
it's not there, it errors out...

It doesn't do modules, and hence requires a prior allyesconfig. I think it
would be better to do:

find . -name '*.o' | xargs objdump -d | perl scripts/checkstack.pl i386

but that produces slightly screwy output and, for some reason, duplicated
output:


0x 387c zconf_fopen: sub $0x101c,%esp
0x 3c0 huft_build: sub $0x5ac,%esp
0x 0 huft_build: sub $0x5ac,%esp
0x 0 huft_build: sub $0x59c,%esp
0x d30 inflate_dynamic: sub $0x528,%esp
0x 10f0 inflate_dynamic: sub $0x528,%esp
0x c10 inflate_dynamic: sub $0x524,%esp
0x 23 zconfparse: sub $0x50c,%esp
3: 81 ec fc 04 00 00 sub $0x4fc,%esp yyparse: sub $0x4fc,%esp
0x f9c inflate_fixed: sub $0x490,%esp
0x bdc inflate_fixed: sub $0x490,%esp
0x abc inflate_fixed: sub $0x490,%esp
0x 3d54 conf_read: sub $0x41c,%esp
0x fca0 snd_pcm_hw_params_old_user: sub $0x358,%esp
0x fc28 snd_pcm_hw_refine_old_user: sub $0x358,%esp
0x 6c58 snd_pcm_hw_refine_old_user: sub $0x358,%esp
0x 10448 snd_pcm_hw_refine_old_user: sub $0x358,%esp
0x 104c0 snd_pcm_hw_params_old_user: sub $0x358,%esp
0x 54e0 snd_pcm_hw_params_old_user: sub $0x358,%esp
0x 5468 snd_pcm_hw_refine_old_user: sub $0x358,%esp
0x 6cd0 snd_pcm_hw_params_old_user: sub $0x358,%esp
0x 42db conf_write: sub $0x30c,%esp
0x c8 nlmclnt_proc: sub $0x280,%esp
0x 1b54 snd_pcm_oss_get_formats: sub $0x280,%esp
0x 1d074 snd_pcm_oss_get_formats: sub $0x280,%esp
0x 761c8 nlmclnt_proc: sub $0x280,%esp
0x 1c854 snd_pcm_oss_get_formats: sub $0x280,%esp
0x 4b8 nlmclnt_proc: sub $0x280,%esp
0x 1b54 snd_pcm_oss_get_formats: sub $0x280,%esp


You wanna take a look at that please?


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/