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:	Sat, 27 Mar 2010 00:23:19 -0400
From:	Steven Rostedt <rostedt@...dmis.org>
To:	Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
Cc:	mingo@...hat.com, hpa@...or.com, linux-kernel@...r.kernel.org,
	lizf@...fujitsu.com, tglx@...utronix.de, randy.dunlap@...cle.com,
	linux-tip-commits@...r.kernel.org
Subject: Re: [tip:tracing/urgent] tracing: Remove side effect from module
 tracepoints that caused a GPF

On Sat, 2010-03-27 at 00:10 -0400, Mathieu Desnoyers wrote:
> Steven, how about also merging my patch that address the underlying bug in
> module.h that cause the GPF in the first place into 2.6.33.x ?
> 

I must have missed it, can you resend. I was under the impression that
this was the fix for the GPF. If it isn't and your patch is the true
fix, then perhaps this patch does not need to be applied to 34, and can
wait till 35. And we can push your patch instead.

Thanks,

-- Steve

> Thanks,
> 
> Mathieu
> 
> * tip-bot for Li Zefan (lizf@...fujitsu.com) wrote:
> > Commit-ID:  3656d5431262ca25aba01d08a5b6e1295ab8feeb
> > Gitweb:     http://git.kernel.org/tip/3656d5431262ca25aba01d08a5b6e1295ab8feeb
> > Author:     Li Zefan <lizf@...fujitsu.com>
> > AuthorDate: Wed, 24 Mar 2010 10:57:43 +0800
> > Committer:  Steven Rostedt <rostedt@...dmis.org>
> > CommitDate: Fri, 26 Mar 2010 15:30:21 -0400
> > 
> > tracing: Remove side effect from module tracepoints that caused a GPF
> > 
> > Remove the @refcnt argument, because it has side-effects, and arguments with
> > side-effects are not skipped by the jump over disabled instrumentation and are
> > executed even when the tracepoint is disabled.
> > 
> > This was also causing a GPF as found by Randy Dunlap:
> > 
> > Subject: 2.6.33 GP fault only when built with tracing
> > LKML-Reference: <4BA2B69D.3000309@...cle.com>
> > 
> > Tested-by: Randy Dunlap <randy.dunlap@...cle.com>
> > Acked-by: Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
> > Cc: stable@...nel.org
> > Signed-off-by: Li Zefan <lizf@...fujitsu.com>
> > LKML-Reference: <4BA97FA7.6040406@...fujitsu.com>
> > Signed-off-by: Steven Rostedt <rostedt@...dmis.org>
> > ---
> >  include/linux/module.h        |    6 ++----
> >  include/trace/events/module.h |   14 +++++++-------
> >  kernel/module.c               |    3 +--
> >  3 files changed, 10 insertions(+), 13 deletions(-)
> > 
> > diff --git a/include/linux/module.h b/include/linux/module.h
> > index 5e869ff..393ec39 100644
> > --- a/include/linux/module.h
> > +++ b/include/linux/module.h
> > @@ -460,8 +460,7 @@ static inline void __module_get(struct module *module)
> >  	if (module) {
> >  		preempt_disable();
> >  		__this_cpu_inc(module->refptr->count);
> > -		trace_module_get(module, _THIS_IP_,
> > -				 __this_cpu_read(module->refptr->count));
> > +		trace_module_get(module, _THIS_IP_);
> >  		preempt_enable();
> >  	}
> >  }
> > @@ -475,8 +474,7 @@ static inline int try_module_get(struct module *module)
> >  
> >  		if (likely(module_is_live(module))) {
> >  			__this_cpu_inc(module->refptr->count);
> > -			trace_module_get(module, _THIS_IP_,
> > -				__this_cpu_read(module->refptr->count));
> > +			trace_module_get(module, _THIS_IP_);
> >  		}
> >  		else
> >  			ret = 0;
> > diff --git a/include/trace/events/module.h b/include/trace/events/module.h
> > index 4b0f48b..a585f81 100644
> > --- a/include/trace/events/module.h
> > +++ b/include/trace/events/module.h
> > @@ -53,9 +53,9 @@ TRACE_EVENT(module_free,
> >  
> >  DECLARE_EVENT_CLASS(module_refcnt,
> >  
> > -	TP_PROTO(struct module *mod, unsigned long ip, int refcnt),
> > +	TP_PROTO(struct module *mod, unsigned long ip),
> >  
> > -	TP_ARGS(mod, ip, refcnt),
> > +	TP_ARGS(mod, ip),
> >  
> >  	TP_STRUCT__entry(
> >  		__field(	unsigned long,	ip		)
> > @@ -65,7 +65,7 @@ DECLARE_EVENT_CLASS(module_refcnt,
> >  
> >  	TP_fast_assign(
> >  		__entry->ip	= ip;
> > -		__entry->refcnt	= refcnt;
> > +		__entry->refcnt	= __this_cpu_read(mod->refptr->count);
> >  		__assign_str(name, mod->name);
> >  	),
> >  
> > @@ -75,16 +75,16 @@ DECLARE_EVENT_CLASS(module_refcnt,
> >  
> >  DEFINE_EVENT(module_refcnt, module_get,
> >  
> > -	TP_PROTO(struct module *mod, unsigned long ip, int refcnt),
> > +	TP_PROTO(struct module *mod, unsigned long ip),
> >  
> > -	TP_ARGS(mod, ip, refcnt)
> > +	TP_ARGS(mod, ip)
> >  );
> >  
> >  DEFINE_EVENT(module_refcnt, module_put,
> >  
> > -	TP_PROTO(struct module *mod, unsigned long ip, int refcnt),
> > +	TP_PROTO(struct module *mod, unsigned long ip),
> >  
> > -	TP_ARGS(mod, ip, refcnt)
> > +	TP_ARGS(mod, ip)
> >  );
> >  
> >  TRACE_EVENT(module_request,
> > diff --git a/kernel/module.c b/kernel/module.c
> > index c968d36..21591ad 100644
> > --- a/kernel/module.c
> > +++ b/kernel/module.c
> > @@ -800,8 +800,7 @@ void module_put(struct module *module)
> >  		preempt_disable();
> >  		__this_cpu_dec(module->refptr->count);
> >  
> > -		trace_module_put(module, _RET_IP_,
> > -				 __this_cpu_read(module->refptr->count));
> > +		trace_module_put(module, _RET_IP_);
> >  		/* Maybe they're waiting for us to drop reference? */
> >  		if (unlikely(!module_is_live(module)))
> >  			wake_up_process(module->waiter);
> 


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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ