On Sat, 2021-11-20 at 06:43 +0800, Andrew Morton wrote: > On Fri, 19 Nov 2021 23:12:55 +0800 Kuan-Ying Lee < > Kuan-Ying.Lee@xxxxxxxxxxxx> wrote: > > > > > > Call sequence: > > > > > ptr = kmalloc(size, GFP_KERNEL); > > > > > page = virt_to_page(ptr); > > > > > kfree(page_address(page)); > > > > > ptr = kmalloc(size, GFP_KERNEL); > > > > > > How is this call sequence valid? page_address returns the address > > > of > > > the start of the page, while kmalloced object could have been > > > located > > > in the middle of it. > > > > Thanks for pointing out. I miss the offset. > > > > It should be listed as below. > > > > ptr = kmalloc(size, GFP_KERNEL); > > page = virt_to_page(ptr); > > offset = offset_in_page(ptr); > > kfree(page_address(page) + offset); > > ptr = kmalloc(size, GFP_KERNEL); > > I updated the changelog to reflect this. Thanks for updating changelog. :)