From 53a3cd8bd5f731f7119b11f610fb7627095fbe04 Mon Sep 17 00:00:00 2001 From: Raghav Sharma Date: Sat, 14 Feb 2026 18:45:13 +0530 Subject: [PATCH] xfs: fix SMAP violation during file read Change-Id: I5106cfeef8e13462ce7402dbe6255f270176d1be Reviewed-on: https://review.haiku-os.org/c/haiku/+/10332 Tested-by: Commit checker robot Reviewed-by: Adrien Destugues --- src/add-ons/kernel/file_systems/xfs/Inode.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/file_systems/xfs/Inode.cpp b/src/add-ons/kernel/file_systems/xfs/Inode.cpp index 11262dc660..b73ee31547 100644 --- a/src/add-ons/kernel/file_systems/xfs/Inode.cpp +++ b/src/add-ons/kernel/file_systems/xfs/Inode.cpp @@ -608,7 +608,7 @@ Inode::ReadAt(off_t pos, uint8* buffer, size_t* length) return B_BAD_VALUE; } - if (pos >= Size() || length == 0) { + if (pos >= Size() || *length == 0) { TRACE("inode %" B_PRIdINO ": ReadAt 0 (pos %" B_PRIdOFF ", length %" B_PRIuSIZE ")\n", ID(), pos, *length); *length = 0; @@ -671,9 +671,9 @@ Inode::ReadAt(off_t pos, uint8* buffer, size_t* length) return B_IO_ERROR; } - - memcpy((void*) (buffer + lengthRead), - (void*)(block + offsetIntoBlock), lengthToRead); + if (user_memcpy((void*)(buffer + lengthRead), + (void*)(block + offsetIntoBlock), lengthToRead) < B_OK) + return B_BAD_ADDRESS; pos += lengthToRead; *length -= lengthToRead;