mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
treewide: Drop WARN_ON_FUNCTION_MISMATCH
CONFIG_CFI_CLANG no longer breaks cross-module function address equality, which makes WARN_ON_FUNCTION_MISMATCH unnecessary. Remove the definition and switch back to WARN_ON_ONCE. Signed-off-by: Sami Tolvanen <samitolvanen@google.com> Reviewed-by: Kees Cook <keescook@chromium.org> Tested-by: Kees Cook <keescook@chromium.org> Tested-by: Nathan Chancellor <nathan@kernel.org> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Tested-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20220908215504.3686827-15-samitolvanen@google.com
This commit is contained in:
parent
607289a7cd
commit
4b24356312
@ -220,22 +220,6 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
|
|||||||
# define WARN_ON_SMP(x) ({0;})
|
# define WARN_ON_SMP(x) ({0;})
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* WARN_ON_FUNCTION_MISMATCH() warns if a value doesn't match a
|
|
||||||
* function address, and can be useful for catching issues with
|
|
||||||
* callback functions, for example.
|
|
||||||
*
|
|
||||||
* With CONFIG_CFI_CLANG, the warning is disabled because the
|
|
||||||
* compiler replaces function addresses taken in C code with
|
|
||||||
* local jump table addresses, which breaks cross-module function
|
|
||||||
* address equality.
|
|
||||||
*/
|
|
||||||
#if defined(CONFIG_CFI_CLANG) && defined(CONFIG_MODULES)
|
|
||||||
# define WARN_ON_FUNCTION_MISMATCH(x, fn) ({ 0; })
|
|
||||||
#else
|
|
||||||
# define WARN_ON_FUNCTION_MISMATCH(x, fn) WARN_ON_ONCE((x) != (fn))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1050,8 +1050,7 @@ static void __kthread_queue_delayed_work(struct kthread_worker *worker,
|
|||||||
struct timer_list *timer = &dwork->timer;
|
struct timer_list *timer = &dwork->timer;
|
||||||
struct kthread_work *work = &dwork->work;
|
struct kthread_work *work = &dwork->work;
|
||||||
|
|
||||||
WARN_ON_FUNCTION_MISMATCH(timer->function,
|
WARN_ON_ONCE(timer->function != kthread_delayed_work_timer_fn);
|
||||||
kthread_delayed_work_timer_fn);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If @delay is 0, queue @dwork->work immediately. This is for
|
* If @delay is 0, queue @dwork->work immediately. This is for
|
||||||
|
@ -1651,7 +1651,7 @@ static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
|
|||||||
struct work_struct *work = &dwork->work;
|
struct work_struct *work = &dwork->work;
|
||||||
|
|
||||||
WARN_ON_ONCE(!wq);
|
WARN_ON_ONCE(!wq);
|
||||||
WARN_ON_FUNCTION_MISMATCH(timer->function, delayed_work_timer_fn);
|
WARN_ON_ONCE(timer->function != delayed_work_timer_fn);
|
||||||
WARN_ON_ONCE(timer_pending(timer));
|
WARN_ON_ONCE(timer_pending(timer));
|
||||||
WARN_ON_ONCE(!list_empty(&work->entry));
|
WARN_ON_ONCE(!list_empty(&work->entry));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user