[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.21.1908211557420.2223@nanos.tec.linutronix.de>
Date: Wed, 21 Aug 2019 16:02:54 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: Julien Grall <julien.grall@....com>
cc: linux-rt-users@...r.kernel.org, linux-kernel@...r.kernel.org,
maz@...nel.org, bigeasy@...utronix.de, rostedt@...dmis.org
Subject: Re: [RT PATCH 3/3] hrtimer: Prevent using uninitialized spin_lock
in hrtimer_grab_expiry_lock()
On Wed, 21 Aug 2019, Julien Grall wrote:
> migration_base is used as a placeholder when an hrtimer is switching
> between base (see switch_hrtimer_timer_base). It is possible
> theoritically possible to have timer->base equal to migration_base.
>
> Even if it is a placeholder, it would pass all the current check in
> hrtimer_grab_expiry_lock() leading to use softirq_expiry_lock
> uninitialized.
>
> This is can be prevented by checking whether the base is equal to
> the placeholder (i.e. migration_base).
That's a lame argument. The point is that it does not make sense to do that
on migration base, but not for the reason you are giving (uninitialized
lock).
If base == migration_base then there is no point to lock soft_expiry_lock
simply because the timer is not executing the callback in soft irq context
and the whole lock/unlock dance can be avoided.
But, yes. Good catch.
Thanks,
tglx
Powered by blists - more mailing lists