On Fri, Nov 22, 2024 at 01:18:28AM +0200, Abdiel Janulgue wrote: > We need an abstraction of struct page to construct a scatterlist which is > needed for an internal firmware structure. Now most of pages needed there > come from vmalloc_to_page() which, unlike the current rust Page abstraction, > not allocated on demand but is an existing mapping. > > Hope that clears things up! That's very helpful! So the lifetime of the scatterllist must not outlive the lifetime of the vmalloc allocation. That means you can call kmap_local_page() on the page in the scatterlist without worrying about the refcount of the struct page. BTW, you can't call page_address() on vmalloc memory because vmalloc can allocate pages from HIGHMEM. Unless you're willing to disable support for 32-bit systems with highmem ...