On Mon, 8 Apr 2019, Andy Lutomirski wrote:
> On Sun, Apr 7, 2019 at 11:46 PM Thomas Gleixner <t...@linutronix.de> wrote:
> >
> > On Sun, 7 Apr 2019, Andy Lutomirski wrote:
> > > On Sun, Apr 7, 2019 at 3:44 PM Thomas Gleixner <t...@linutronix.de> wrote:
> > > > Actually we have: save_stack_trace()
> > > >
> > >
> > > Like I did here:
> > >
> > > https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git/log/?h=WIP.x86/stackguards
> >
> > Kinda, but what that code wants is to skip any entry before 'caller'. So we
> > either add something like save_stack_trace_from() which is trivial on x86
> > because unwind_start() already has an argument to hand in the start of
> > stack or we filter out the entries up to 'caller' in that code.
> >
> >
> Whoops!
> 
> I could add a save_stack_trace_from() or I could add a "caller"
> argument to struct stack_trace.  Any preference as to which looks
> better?  The latter seems a little nicer to me.

The whole interface with struct stack_trace sucks. Why is skip and max
entries in that struct and not an argument? I went through all the call
sites and it just makes me shudder. That terminate trace with ULONG_MAX is
another horrible hack which is then undone on several callsites
again. Before we add more hacky stuff to it, lets cleanup that whole mess
first.

Thanks,

        tglx



Reply via email to