The err_buf array uses 128 bytes of stack space. Move it off the stack by making it static. It's safe to use a shared buffer because klp_try_switch_task() is called under klp_mutex.
Showing the changes to kernel/livepatch (1 of 1 file). Show all
Unified · Split
| @@ -293,11 +293,11 @@ static int klp_check_stack(struct task_struct *task, char *err_buf) · 292 unmodified lines | ||
| 293 | 293 | */ |
| 294 | 294 | static bool klp_try_switch_task(struct task_struct *task) |
| 295 | 295 | { |
| 296 | + static char err_buf[STACK_ERR_BUF_SIZE]; | |
| 296 | 297 | struct rq *rq; |
| 297 | 298 | struct rq_flags flags; |
| 298 | 299 | int ret; |
| 299 | 300 | bool success = false; |
| 300 | − char err_buf[STACK_ERR_BUF_SIZE]; | |
| 301 | 301 | |
| 302 | 302 | err_buf[0] = '\0'; |
| 303 | 303 | |
| @@ -340,7 +340,6 @@ done: · 36 unmodified lines | ||
| 340 | 340 | pr_debug("%s", err_buf); |
| 341 | 341 | |
| 342 | 342 | return success; |
| 343 | − | |
| 344 | 343 | } |
| 345 | 344 | |
| 346 | 345 | /* |