Re: [BUG] Null pointer deref with hrtimer_try_to_cancel()

From: Thomas Gleixner
Date: Sun Dec 21 2008 - 03:56:20 EST


On Sat, 20 Dec 2008, Oleg Nesterov wrote:
> On 12/20, Thomas Gleixner wrote:
> >
> > +static int no_timer_create(struct k_itimer *new_timer)
> > +{
> > + return -EOPNOTSUPP;
> > +}
> > +
> > /*
> > * Return nonzero if we know a priori this clockid_t value is bogus.
> > */
> > @@ -248,6 +253,7 @@ static __init int init_posix_timers(void)
> > .clock_getres = hrtimer_get_res,
> > .clock_get = posix_get_monotonic_raw,
> > .clock_set = do_posix_clock_nosettime,
> > + .timer_create = no_timer_create,
>
> Agreed, this patch is better than mine (and thanks for your
> explanation about CLOCK_MONOTONIC_RAW).
>
> I am not sure about -EOPNOTSUPP. To clarify, I do not claim this
> is wrong, I just do not know.
>
> But please note that sys_timer_create() does:
>
> if (invalid_clockid(which_clock))
> return -EINVAL;

EINVAL is wrong for timer_create(CLOCK_MONOTONIC_RAW) as clockid is
valid, just the operation of creating a timer is not supported for it.

> And ltp's timer_create04.c expects timer_create(MAX_CLOCKS == 4)
> returns -EINVAL.

That's because timer_create04.c does not know about
CLOCK_MONOTONIC_RAW yet.

Thanks,

tglx
--
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/