Re: [CHECKER] 37 stack variables >= 1K in 2.4.17

Dawson Engler (engler@csl.Stanford.EDU)
Thu, 13 Jun 2002 14:50:28 -0700 (PDT)


> On 13 Jun 2002, Andi Kleen wrote:
>
> > Alexander Viro <viro@math.psu.edu> writes:
> > >
> > > I mean that due to the loop (link_path_walk->do_follow_link->foofs_follow_link
> > > ->vfs_follow_link->link_path_walk) you will get infinite maximal depth
> > > for everything that can be called by any of these functions. And that's
> > > a _lot_ of stuff.
> >
> > Surely an analysis pass can detect recursive function chains and flag them
> > (e.g. the global IPA alias analysis pass in open64 does this)
>
> Ugh... OK, let me try again:
>
> One bit of apriory information needed to get anything interesting from
> this analysis: there is a set of mutually recursive functions (see above)
> and there is a limit (5) on the depth of recursion in that loop.
>
> It has to be known to checker. Explicitly, since
> a) automatically deducing it is not realistic
> b) cutting off the stuff behind that loop will cut off a _lot_ of
> things - both in filesystems and in VFS (and in block layer, while we are
> at it).

We're all about jamming system specific information into the checking
extensions. It's usually just a few if statements. So to be clear: we
can simply assume that the loop
link_path_walk
->do_follow_link
->foofs_follow_link
->vfs_follow_link
->link_path_walk
can happen exactly 5 times?

In general such restrictions are interesting, since they concretely
show how having a way to include system-specific knowlege into checking
is useful. Are there any other such relationships? The other example
I know of is the do_page_fault (sp?) routine that can potentially be
invoked at very copy_*_user site that page faults. You need to know
this to detect certain classes of deadlock, but there's no way to
discern this path from the code without a priori knowlege.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/