On Tue, Mar 14, 2023 at 11:50:21AM +0100, Petr Mladek wrote: > > static int klp_check_stack(struct task_struct *task, const char **oldname) > > { > > - static unsigned long entries[MAX_STACK_ENTRIES]; > > + unsigned long *entries = this_cpu_ptr(klp_stack_entries); > > struct klp_object *obj; > > struct klp_func *func; > > int ret, nr_entries; > > > > - ret = stack_trace_save_tsk_reliable(task, entries, ARRAY_SIZE(entries)); > > + /* Protect 'klp_stack_entries' */ > > + lockdep_assert_preemption_disabled(); > > I think about adding: > > /* > * Stay on the safe side even when cond_resched() is called from > * an IRQ context by mistake. > */ > if (!in_task()) > return -EINVAL; > > Or is this prevented another way, please? An IRQ handler trying to schedule would be a pretty major bug, no? I think there are already several different checks for that. For example, the __might_resched() call in cond_resched(). -- Josh