Skip to content

Commit

Permalink
sched_ext: Use kvzalloc for large exit_dump allocation
Browse files Browse the repository at this point in the history
Replace kzalloc with kvzalloc for the exit_dump buffer allocation, which
can require large contiguous memory depending on the implementation.
This change prevents allocation failures by allowing the system to fall
back to vmalloc when contiguous memory allocation fails.

Since this buffer is only used for debugging purposes, physical memory
contiguity is not required, making vmalloc a suitable alternative.

Cc: stable@vger.kernel.org
Fixes: 07814a9 ("sched_ext: Print debug dump after an error exit")
Suggested-by: Rik van Riel <riel@surriel.com>
Signed-off-by: Breno Leitao <leitao@debian.org>
Acked-by: Andrea Righi <arighi@nvidia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
  • Loading branch information
Breno Leitao authored and Tejun Heo committed Apr 8, 2025
1 parent 4a1d8ab commit 4706830
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions kernel/sched/ext.c
Original file line number Diff line number Diff line change
Expand Up @@ -4623,7 +4623,7 @@ static void scx_ops_bypass(bool bypass)

static void free_exit_info(struct scx_exit_info *ei)
{
kfree(ei->dump);
kvfree(ei->dump);
kfree(ei->msg);
kfree(ei->bt);
kfree(ei);
Expand All @@ -4639,7 +4639,7 @@ static struct scx_exit_info *alloc_exit_info(size_t exit_dump_len)

ei->bt = kcalloc(SCX_EXIT_BT_LEN, sizeof(ei->bt[0]), GFP_KERNEL);
ei->msg = kzalloc(SCX_EXIT_MSG_LEN, GFP_KERNEL);
ei->dump = kzalloc(exit_dump_len, GFP_KERNEL);
ei->dump = kvzalloc(exit_dump_len, GFP_KERNEL);

if (!ei->bt || !ei->msg || !ei->dump) {
free_exit_info(ei);
Expand Down

0 comments on commit 4706830

Please sign in to comment.