[prev in list] [next in list] [prev in thread] [next in thread]
List: haiku-commits
Subject: [haiku-commits] haiku: hrev57711 - src/add-ons/kernel/file_systems/ramfs
From: waddlesplash <waddlesplash () gmail ! com>
Date: 2024-04-24 19:56:32
Message-ID: 20240424195632.6CCCD4AB99 () turing ! freelists ! org
[Download RAW message or body]
hrev57711 adds 1 changeset to branch 'master'
old head: 28b96e105fa5930eabb80805402e8873711afc4f
new head: 9673f7b8bfcc04f652e2b13ea0b4df56afbb7d69
overview: https://git.haiku-os.org/haiku/log/?qt=range&q=9673f7b8bfcc+%5E28b96e105fa5
----------------------------------------------------------------------------
9673f7b8bfcc: ramfs: honor the O_DIRECTORY flag on open()
by returning B_NOT_A_DIRECTORY on non-directory nodes, fix #18896.
* like BFS, opening a directory read-write returns B_IS_A_DIRECTORY, instead of
switching read-only.
* fill st_blocks.
Change-Id: I706dc13209299b95be3da04ae19a6a9397b50c37
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7629
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
[ Jérôme Duval <jerome.duval@gmail.com> ]
----------------------------------------------------------------------------
Revision: hrev57711
Commit: 9673f7b8bfcc04f652e2b13ea0b4df56afbb7d69
URL: https://git.haiku-os.org/haiku/commit/?id=9673f7b8bfcc
Author: Jérôme Duval <jerome.duval@gmail.com>
Date: Wed Apr 24 14:03:36 2024 UTC
Committer: waddlesplash <waddlesplash@gmail.com>
Commit-Date: Wed Apr 24 19:56:29 2024 UTC
Ticket: https://dev.haiku-os.org/ticket/18896
----------------------------------------------------------------------------
1 file changed, 6 insertions(+), 2 deletions(-)
src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp | 8 ++++++--
----------------------------------------------------------------------------
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 \
fb93fe9c2e..77569fdf87 100644
--- a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
@@ -693,6 +693,7 @@ ramfs_read_stat(fs_volume* _volume, fs_vnode* _node, struct stat \
*st) st->st_gid = node->GetGID();
st->st_size = node->GetSize();
st->st_blksize = kOptimalIOSize;
+ st->st_blocks = (st->st_size + st->st_blksize - 1) / st->st_blksize;
st->st_atime = node->GetATime();
st->st_mtime = node->GetMTime();
st->st_ctime = node->GetCTime();
@@ -883,8 +884,11 @@ ramfs_open(fs_volume* _volume, fs_vnode* _node, int openMode, \
void** _cookie) status_t error = B_OK;
if (VolumeReadLocker locker = volume) {
// directory can be opened read-only
- if (node->IsDirectory() && (openMode & O_RWMASK))
- openMode &= ~O_RWMASK;
+ if (node->IsDirectory() && (openMode & O_RWMASK) != O_RDONLY)
+ error = B_IS_A_DIRECTORY;
+ if (error == B_OK && (openMode & O_DIRECTORY) != 0 && !node->IsDirectory())
+ error = B_NOT_A_DIRECTORY;
+
int accessMode = open_mode_to_access(openMode);
// truncating requires write permission
if (error == B_OK && (openMode & O_TRUNC))
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic