From fda0fa051265867c2399f4981fdccb9cc6df110d Mon Sep 17 00:00:00 2001 From: Marsman1996 Date: Mon, 19 Aug 2024 17:01:16 +0800 Subject: [PATCH] Align `len` in `madvise` --- kernel/aster-nix/src/syscall/madvise.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kernel/aster-nix/src/syscall/madvise.rs b/kernel/aster-nix/src/syscall/madvise.rs index 909875155..c9dfe4310 100644 --- a/kernel/aster-nix/src/syscall/madvise.rs +++ b/kernel/aster-nix/src/syscall/madvise.rs @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MPL-2.0 +use align_ext::AlignExt; + use super::SyscallReturn; use crate::prelude::*; @@ -22,6 +24,7 @@ pub fn sys_madvise( return Ok(SyscallReturn::Return(0)); } + let len = len.align_up(PAGE_SIZE); match behavior { MadviseBehavior::MADV_NORMAL | MadviseBehavior::MADV_SEQUENTIAL @@ -41,10 +44,6 @@ pub fn sys_madvise( } fn madv_free(start: Vaddr, len: usize, ctx: &Context) -> Result<()> { - if len % PAGE_SIZE != 0 { - return Ok(()); - } - let root_vmar = ctx.process.root_vmar(); let advised_range = start..start + len; let _ = root_vmar.destroy(advised_range);