dde_linux: call init_page_count for each page

The lx_emul_virt_to_pages implementation initialized the page ref
counter only for the first page, leaving the remaining elements in
uninitialized state. This, in turn, rendered the Linux page_pool (as
used by the emac network driver) ineffective, ultimately leading the a
memory leak. The fix changes the call of 'init_page_count' to take the
loop variable as argument.

Issue #4225
This commit is contained in:
Norman Feske 2021-09-21 14:15:05 +02:00
parent 4dacac3dbb
commit d072c408ab

View File

@ -29,7 +29,7 @@ struct page *lx_emul_virt_to_pages(void const *virt, unsigned count)
page = p;
for (i = 0; i < count; i++, p++) {
p->virtual = (void*)((uintptr_t)page_aligned_virt + i*PAGE_SIZE);
init_page_count(page);
init_page_count(p);
lx_emul_associate_page_with_virt_addr(p, p->virtual);
}