Re: [PATCH 2/2] timer: Make sure TIMER_FLAG_MASK bits are free in allocated base

From: Thomas Gleixner
Date: Fri Feb 28 2014 - 05:52:48 EST


On Fri, 28 Feb 2014, Viresh Kumar wrote:

> Currently we are using two lowest bit of base for internal purpose and so they
> both should be zero in the allocated address. The code was doing the right thing
> before this patch came in:
>
> commit c5f66e99b7cb091e3d51ae8e8156892e8feb7fa3
> Author: Tejun Heo <tj@xxxxxxxxxx>
> Date: Wed Aug 8 11:10:28 2012 -0700
>
> timer: Implement TIMER_IRQSAFE
>
> Tejun probably forgot to update this piece of code which checks if the lowest
> 'n' bits are zero or not and so wasn't updated according to the new flag. Lets
> use TIMER_FLAG_MASK in the calculations here, so that this code wouldn't require
> a change later on with another flag in.

Are you planning to introduce more flag horror? Don't go there. The
timer_list code is about to be rewritten completely and I'm not going
to add new features to the existing code base.

> Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>
> ---
> kernel/timer.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/timer.c b/kernel/timer.c
> index e8e7839..d52a8ff 100644
> --- a/kernel/timer.c
> +++ b/kernel/timer.c
> @@ -1548,9 +1548,8 @@ static int init_timers_cpu(int cpu)
> if (!base)
> return -ENOMEM;
>
> - /* Make sure that tvec_base is 2 byte aligned */
> - if (tbase_get_deferrable(base)) {
> - WARN_ON(1);
> + /* Make sure tvec_base has TIMER_FLAG_MASK bits free */
> + if (WARN_ON(base != tbase_get_base(base))) {
> kfree(base);
> return -ENOMEM;
> }
> --
> 1.7.12.rc2.18.g61b472e
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/