From f9b218aa8ad99c08333b95641bf9bd075cb8c1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 26 May 2020 21:11:03 +0200 Subject: [PATCH] file_systems: fs_read_link() doesn't use a user buffer introduced in hrev26728 and hrev54107. Change-Id: I3e98d54e829bcce559c43a8ee1abe4d889c0a571 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2819 Reviewed-by: waddlesplash --- src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp | 3 ++- src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp | 5 +---- .../kernel/file_systems/iso9660/kernel_interface.cpp | 3 ++- src/add-ons/kernel/file_systems/nfs/nfs_add_on.c | 5 ++--- .../file_systems/packagefs/nodes/UnpackingLeafNode.cpp | 3 ++- .../packagefs/package_links/PackageLinkSymlink.cpp | 3 ++- src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp | 5 ++--- src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp | 7 +++---- 8 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index 6b9faf2375..90e8d2203e 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -1606,7 +1606,8 @@ bfs_read_link(fs_volume* _volume, fs_vnode* _node, char* buffer, *_bufferSize = linkLength; - return user_memcpy(buffer, inode->Node().short_symlink, bytesToCopy); + memcpy(buffer, inode->Node().short_symlink, bytesToCopy); + return B_OK; } diff --git a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp index e1e47ac4a2..b6773001b8 100644 --- a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp @@ -1313,10 +1313,7 @@ ext2_read_link(fs_volume *_volume, fs_vnode *_node, char *buffer, size_t bytesToCopy = std::min(static_cast(inode->Size()), *_bufferSize); - status_t result = user_memcpy(buffer, inode->Node().symlink, - bytesToCopy); - if (result != B_OK) - return result; + memcpy(buffer, inode->Node().symlink, bytesToCopy); } *_bufferSize = inode->Size(); diff --git a/src/add-ons/kernel/file_systems/iso9660/kernel_interface.cpp b/src/add-ons/kernel/file_systems/iso9660/kernel_interface.cpp index 0e963506bd..fc7aee3533 100644 --- a/src/add-ons/kernel/file_systems/iso9660/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/iso9660/kernel_interface.cpp @@ -569,7 +569,8 @@ fs_read_link(fs_volume* _volume, fs_vnode* _node, char* buffer, *_bufferSize = length; - return user_memcpy(buffer, node->attr.slName, bytesToCopy); + memcpy(buffer, node->attr.slName, bytesToCopy); + return B_OK; } diff --git a/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c b/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c index 6bfe7ef2ed..d2d26467b0 100644 --- a/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c +++ b/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c @@ -2254,7 +2254,6 @@ fs_readlink(fs_volume *_volume, fs_vnode *_node, char *buf, size_t *bufsize) struct XDRInPacket reply; fs_nspace *ns; fs_node *node; - status_t result; ns = _volume->private_volume; node = _node->private_node; @@ -2291,12 +2290,12 @@ fs_readlink(fs_volume *_volume, fs_vnode *_node, char *buf, size_t *bufsize) length = XDRInPacketGetDynamic(&reply, data); - result = user_memcpy(buf, data, min_c(length, *bufsize)); + memcpy(buf, data, min_c(length, *bufsize)); *bufsize = length; XDRInPacketDestroy(&reply); XDROutPacketDestroy(&call); - return result; + return B_OK; } static status_t diff --git a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingLeafNode.cpp b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingLeafNode.cpp index 5810d7cba4..b5865687df 100644 --- a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingLeafNode.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingLeafNode.cpp @@ -281,7 +281,8 @@ UnpackingLeafNode::ReadSymlink(void* buffer, size_t* bufferSize) *bufferSize = linkLength; - return user_memcpy(buffer, linkPath, bytesToCopy); + memcpy(buffer, linkPath, bytesToCopy); + return B_OK; } diff --git a/src/add-ons/kernel/file_systems/packagefs/package_links/PackageLinkSymlink.cpp b/src/add-ons/kernel/file_systems/packagefs/package_links/PackageLinkSymlink.cpp index 06045a7653..64ded39b11 100644 --- a/src/add-ons/kernel/file_systems/packagefs/package_links/PackageLinkSymlink.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/package_links/PackageLinkSymlink.cpp @@ -165,7 +165,8 @@ PackageLinkSymlink::ReadSymlink(void* buffer, size_t* bufferSize) *bufferSize = linkLength; - return user_memcpy(buffer, fLinkPath, bytesToCopy); + memcpy(buffer, fLinkPath, bytesToCopy); + return B_OK; } diff --git a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp index 287ef24dd3..013e1f5bd1 100644 --- a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp @@ -375,11 +375,10 @@ ramfs_read_symlink(fs_volume* _volume, fs_vnode* _node, char *buffer, size_t toRead = min(*bufferSize, symLink->GetLinkedPathLength()); if (toRead > 0) - error = user_memcpy(buffer, symLink->GetLinkedPath(), + memcpy(buffer, symLink->GetLinkedPath(), toRead); - if (error == B_OK) - *bufferSize = symLink->GetLinkedPathLength(); + *bufferSize = symLink->GetLinkedPathLength(); } else { FATAL("Node %" B_PRIdINO " pretends to be a SymLink, but isn't!\n", node->GetID()); diff --git a/src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp b/src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp index e28b7ca503..1d76d87913 100644 --- a/src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp +++ b/src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp @@ -1522,11 +1522,9 @@ StreamReader::_ReadIndirectItem(off_t offset, void *buffer, size_t bufferSize) off_t blockOffset = i * (off_t)fBlockSize; uint32 localOffset = max_c(0LL, offset - blockOffset); uint32 toRead = min_c(fBlockSize - localOffset, bufferSize); - status_t copyResult = user_memcpy(buffer, + memcpy(buffer, reinterpret_cast(block->GetData()) + localOffset, toRead); - if (copyResult != B_OK) - return copyResult; block->Put(); bufferSize -= toRead; @@ -1547,7 +1545,8 @@ StreamReader::_ReadDirectItem(off_t offset, void *buffer, size_t bufferSize) { //PRINT(("StreamReader::_ReadDirectItem(%Ld, %p, %lu)\n", offset, buffer, bufferSize)); // copy the data into the buffer - return user_memcpy(buffer, + memcpy(buffer, reinterpret_cast(fItem.GetData()) + offset, bufferSize); + return B_OK; }