Messages in this thread | | | Date | Wed, 21 Aug 2019 16:02:54 +0200 (CEST) | From | Thomas Gleixner <> | 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
| |