Re: [PATCH v2 4/4] rust: add abstraction for `struct page`

From: Matthew Wilcox
Date: Tue Feb 27 2024 - 10:37:37 EST


On Thu, Feb 08, 2024 at 03:47:54PM +0000, Alice Ryhl wrote:
> +impl Page {
> + /// Allocates a new page.
> + pub fn new() -> Result<Self, AllocError> {
> + // SAFETY: These are the correct arguments to allocate a single page.
> + let page = unsafe {
> + bindings::alloc_pages(
> + bindings::GFP_KERNEL | bindings::__GFP_ZERO | bindings::__GFP_HIGHMEM,

I thought I raised this last time, but this is over-specialised for
Binder's purposes. Many places that want to allocate a page want
different GFP flags from this; they shouldn't even be the default flags.
So either what you're defining here is a BinderPage, or new() needs
to take GFP flags.