mirror of
https://github.com/torvalds/linux.git
synced 2026-06-06 05:27:07 +02:00
ANDROID: kthread: cfi: disable callback pointer check with modules
With CFI, a callback function passed to __kthread_queue_delayed_work from a module can point to a jump table entry defined in the module instead of the one used in the core kernel, which breaks this test: WARN_ON_ONCE(timer->function != kthread_delayed_work_timer_fn); To work around the problem, disable the warning when CFI and modules are both enabled. Bug: 145210207 Change-Id: I5b0a60bb69ce8e2bc0d8e4bf6736457b6425b6cf Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
This commit is contained in:
parent
83eeb88742
commit
0f186b1e6e
|
|
@ -912,7 +912,13 @@ static void __kthread_queue_delayed_work(struct kthread_worker *worker,
|
|||
struct timer_list *timer = &dwork->timer;
|
||||
struct kthread_work *work = &dwork->work;
|
||||
|
||||
WARN_ON_ONCE(timer->function != kthread_delayed_work_timer_fn);
|
||||
/*
|
||||
* With CFI, timer->function can point to a jump table entry in a module,
|
||||
* which fails the comparison. Disable the warning if CFI and modules are
|
||||
* both enabled.
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_CFI_CLANG) || !IS_ENABLED(CONFIG_MODULES))
|
||||
WARN_ON_ONCE(timer->function != kthread_delayed_work_timer_fn);
|
||||
|
||||
/*
|
||||
* If @delay is 0, queue @dwork->work immediately. This is for
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user