lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 15 Mar 2016 15:43:52 -0400
From:	Steven Rostedt <rostedt@...dmis.org>
To:	Namhyung Kim <namhyung@...nel.org>
Cc:	Jiri Olsa <jolsa@...hat.com>, Jiri Olsa <jolsa@...nel.org>,
	lkml <linux-kernel@...r.kernel.org>,
	Ingo Molnar <mingo@...nel.org>,
	Peter Zijlstra <a.p.zijlstra@...llo.nl>,
	Arnaldo Carvalho de Melo <acme@...nel.org>
Subject: Re: [PATCH 4/5] ftrace: Make ftrace_hash_rec_enable return update
 bool

On Sat, 12 Mar 2016 17:35:02 +0900
Namhyung Kim <namhyung@...nel.org> wrote:

> Hi Jiri,
> 
> On Fri, Mar 11, 2016 at 07:15:06PM +0100, Jiri Olsa wrote:
> > On Fri, Mar 11, 2016 at 11:28:00PM +0900, Namhyung Kim wrote:
> > 
> > SNIP
> >   
> > > > @@ -1694,7 +1695,7 @@ static void __ftrace_hash_rec_update(struct ftrace_ops *ops,
> > > >  		if (inc) {
> > > >  			rec->flags++;
> > > >  			if (FTRACE_WARN_ON(ftrace_rec_count(rec) == FTRACE_REF_MAX))
> > > > -				return;
> > > > +				return false;
> > > >  
> > > >  			/*
> > > >  			 * If there's only a single callback registered to a
> > > > @@ -1720,7 +1721,7 @@ static void __ftrace_hash_rec_update(struct ftrace_ops *ops,
> > > >  				rec->flags |= FTRACE_FL_REGS;
> > > >  		} else {
> > > >  			if (FTRACE_WARN_ON(ftrace_rec_count(rec) == 0))
> > > > -				return;
> > > > +				return false;
> > > >  			rec->flags--;
> > > >  
> > > >  			/*
> > > > @@ -1753,22 +1754,27 @@ static void __ftrace_hash_rec_update(struct ftrace_ops *ops,
> > > >  			 */
> > > >  		}
> > > >  		count++;
> > > > +
> > > > +		update |= ftrace_test_record(rec, 1) != FTRACE_UPDATE_IGNORE;  

Yeah, this is confusing. Mind adding a comment above this:

	/* Must match FTRACE_UPDATE_CALLS in ftrace_modify_all_code() */

That way others will know why this is a '1'.

-- Steve

> > > 
> > > Shouldn't it use 'inc' instead of 1 for the second argument of
> > > the ftrace_test_record()?  
> > 
> > I dont think so, 1 is to update calls (FTRACE_UPDATE_CALLS)
> > check ftrace_modify_all_code:
> > 
> >         if (command & FTRACE_UPDATE_CALLS)
> >                 ftrace_replace_code(1);
> >         else if (command & FTRACE_DISABLE_CALLS)
> >                 ftrace_replace_code(0);
> > 
> > both ftrace_startup, ftrace_shutdown use FTRACE_UPDATE_CALLS  
> 
> Ah, ok.  So the second argument of the ftrace_test_record() is not
> 'enable' actually..  :-/
> 
> > 
> > you'd use 0 only to disable all, check ftrace_check_record comments:
> > 
> >         /*
> >          * If we are updating calls:
> >          *
> >          *   If the record has a ref count, then we need to enable it
> >          *   because someone is using it.
> >          *
> >          *   Otherwise we make sure its disabled.
> >          *
> >          * If we are disabling calls, then disable all records that
> >          * are enabled.
> >          */
> >         if (enable && ftrace_rec_count(rec))
> >                 flag = FTRACE_FL_ENABLED;
> > 
> > 
> > used by ftrace_shutdown_sysctl  
> 
> I got it.  Thank you for the explanation!
> 
> Thanks,
> Namhyung

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ