]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/nova: Align GEM memory allocation to system page size
authorBrendan Shephard <bshephar@bne-home.net>
Mon, 15 Dec 2025 08:34:16 +0000 (18:34 +1000)
committerDanilo Krummrich <dakr@kernel.org>
Mon, 29 Dec 2025 14:43:20 +0000 (15:43 +0100)
Use page::page_align for GEM object memory allocation to ensure the
allocation is page aligned. This is important on systems where the
default page size is not 4k. Such as 16k or 64k aarch64 systems.

This change uses the updated page_align() function which returns
Option<usize> for overflow safety. (See "rust: Return Option from
page_align and ensure no usize overflow").

Signed-off-by: Brendan Shephard <bshephar@bne-home.net>
Link: https://patch.msgid.link/20251215083416.266469-1-bshephar@bne-home.net
[ Import page module only. - Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
drivers/gpu/drm/nova/gem.rs

index 2760ba4f3450be86ab979b51c579b56db0e1f6dc..6ccfa5da57617f1340527ae6c7d2f2e22586a29b 100644 (file)
@@ -3,6 +3,7 @@
 use kernel::{
     drm,
     drm::{gem, gem::BaseObject},
+    page,
     prelude::*,
     sync::aref::ARef,
 };
@@ -27,11 +28,10 @@ impl gem::DriverObject for NovaObject {
 impl NovaObject {
     /// Create a new DRM GEM object.
     pub(crate) fn new(dev: &NovaDevice, size: usize) -> Result<ARef<gem::Object<Self>>> {
-        let aligned_size = size.next_multiple_of(1 << 12);
-
-        if size == 0 || size > aligned_size {
+        if size == 0 {
             return Err(EINVAL);
         }
+        let aligned_size = page::page_align(size).ok_or(EINVAL)?;
 
         gem::Object::new(dev, aligned_size)
     }