From: Dennis Zhou dennis@kernel.org
mainline inclusion from mainline-5.2-rc1 commit 8e5a2b9893f36457582596fdade10f6feb2797ee category: bugfix bugzilla: 34611 CVE: NA
------------------------------------------------- When updating the chunk's contig_hint on the free path of a hint that does not touch the page boundaries, it was incorrectly using the starting offset of the free region and the block's contig_hint. This could lead to incorrect assumptions about fit given a size and better alignment of the start. Fix this by using (end - start) as this is only called when updating a hint within a block.
Signed-off-by: Dennis Zhou dennis@kernel.org Reviewed-by: Peng Fan peng.fan@nxp.com (cherry picked from commit 8e5a2b9893f36457582596fdade10f6feb2797ee) Signed-off-by: Kefeng Wang wangkefeng.wang@huawei.com Signed-off-by: Liu Shixin liushixin2@huawei.com Reviewed-by: Kefeng Wang wangkefeng.wang@huawei.com Signed-off-by: Yang Yingliang yangyingliang@huawei.com --- mm/percpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/percpu.c b/mm/percpu.c index fef316942ea9..092f777422d6 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -871,7 +871,7 @@ static void pcpu_block_update_hint_free(struct pcpu_chunk *chunk, int bit_off, pcpu_chunk_refresh_hint(chunk); else pcpu_chunk_update(chunk, pcpu_block_off_to_off(s_index, start), - s_block->contig_hint); + end - start); }
/**