From 47478e543dbe3fa9391035137e501c6739d4c872 Mon Sep 17 00:00:00 2001 From: dongjiuzhu1 Date: Thu, 31 Oct 2024 20:57:45 +0800 Subject: [PATCH] fs/shm: support shm_open with flags O_TRUNC testcase: https://fossies.org/linux/posixtestsuite/conformance/interfaces/shm_open/25-1.c Signed-off-by: dongjiuzhu1 --- fs/shm/shm_open.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/fs/shm/shm_open.c b/fs/shm/shm_open.c index 431ba2e0b7..50dacd5201 100644 --- a/fs/shm/shm_open.c +++ b/fs/shm/shm_open.c @@ -108,6 +108,17 @@ static int file_shm_open(FAR struct file *shm, FAR const char *name, inode_release(inode); goto errout_with_sem; } + + /* If the shared memory object already exists, truncate it to + * zero bytes. + */ + + if ((oflags & O_TRUNC) == O_TRUNC && inode->i_private != NULL) + { + shmfs_free_object(inode->i_private); + inode->i_private = NULL; + inode->i_size = 0; + } } else {