Message ID | 20171222204519.GA12047@gaurav.jindal |
---|---|
State | New |
Headers | show |
Series | locking:mutex Print warning if trylock in irq context | expand |
On Sat, Dec 23, 2017 at 02:15:19AM +0530, gaurav jindal wrote: > Since mutex_trylock must not be called from interrupt context, a robustness > can be added to this function by throwing a warning if it is called in > interrupt context. > It would help to make debugging easier in case of undesired calling of this > function. Or you run with lockdep enabled and not make this thing slower for everybody.
On Fri, Dec 22, 2017 at 09:51:09PM +0100, Peter Zijlstra wrote: > On Sat, Dec 23, 2017 at 02:15:19AM +0530, gaurav jindal wrote: > > Since mutex_trylock must not be called from interrupt context, a robustness > > can be added to this function by throwing a warning if it is called in > > interrupt context. > > It would help to make debugging easier in case of undesired calling of this > > function. > > Or you run with lockdep enabled and not make this thing slower for > everybody. Got the point. thanks for making it clear and consideration.
diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c index 858a075..fe1cace 100644 --- a/kernel/locking/mutex.c +++ b/kernel/locking/mutex.c @@ -1176,7 +1176,10 @@ void __sched mutex_lock_io(struct mutex *lock) */ int __sched mutex_trylock(struct mutex *lock) { - bool locked = __mutex_trylock(lock); + bool locked; + + WARN_ONCE(in_irq(), "%s wrongly called in irq context", __func__); + locked = __mutex_trylock(lock); if (locked) mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
Since mutex_trylock must not be called from interrupt context, a robustness can be added to this function by throwing a warning if it is called in interrupt context. It would help to make debugging easier in case of undesired calling of this function. Signed-off-by: gaurav jindal<gauravjindal1104@gmail.com> ---