Messages in this thread | | | Date | Sun, 21 Dec 2008 09:53:04 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: [BUG] Null pointer deref with hrtimer_try_to_cancel() |
| |
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
| |