Null pointer deref with hrtimer_try_to_cancel()
authorThomas Gleixner <tglx@linutronix.de>
Sat, 20 Dec 2008 20:27:34 +0000 (21:27 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 20 Dec 2008 22:13:45 +0000 (14:13 -0800)
commit3d44cc3e01ee1b40317f79ed54324e25c4f848df
tree99feb824dd6beda01bf11c56e412ff147bf24551
parentab65387243f47a7bc11725f733c86bf27248b326
Null pointer deref with hrtimer_try_to_cancel()

Impact: Prevent kernel crash with posix timer clockid CLOCK_MONOTONIC_RAW

commit 2d42244ae71d6c7b0884b5664cf2eda30fb2ae68 (clocksource:
introduce CLOCK_MONOTONIC_RAW) introduced a new clockid, which is only
available to read out the raw not NTP adjusted system time.

The above commit did not prevent that a posix timer can be created
with that clockid. The timer_create() syscall succeeds and initializes
the timer to a non existing hrtimer base. When the timer is deleted
either by timer_delete() or by the exit() cleanup the kernel crashes.

Prevent the creation of timers for CLOCK_MONOTONIC_RAW by setting the
posix clock function to no_timer_create which returns an error code.

Reported-and-tested-by: Eric Sesterhenn <snakebyte@gmx.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/posix-timers.c