fs/shmfs: Fix stat() system call for shmfs object

Set i_size for shmfs objects
This commit is contained in:
Ville Juven 2024-02-01 12:31:46 +02:00 committed by Xiang Xiao
parent 07ce2f717a
commit f0846e1d2d
3 changed files with 7 additions and 1 deletions

View File

@ -238,8 +238,13 @@ static int shmfs_truncate(FAR struct file *filep, off_t length)
filep->f_inode->i_private = shmfs_alloc_object(length);
if (!filep->f_inode->i_private)
{
filep->f_inode->i_size = 0;
ret = -EFAULT;
}
else
{
filep->f_inode->i_size = length;
}
}
else if (object->length != length)
{

View File

@ -284,6 +284,7 @@ int inode_stat(FAR struct inode *inode, FAR struct stat *buf, int resolve)
if (INODE_IS_SHM(inode))
{
buf->st_mode = S_IFSHM;
buf->st_size = inode->i_size;
}
else
#endif

View File

@ -412,7 +412,7 @@ struct inode
uint16_t i_flags; /* Flags for inode */
union inode_ops_u u; /* Inode operations */
ino_t i_ino; /* Inode serial number */
#ifdef CONFIG_PSEUDOFS_FILE
#if defined(CONFIG_PSEUDOFS_FILE) || defined(CONFIG_FS_SHMFS)
size_t i_size; /* The size of per inode driver */
#endif
#ifdef CONFIG_PSEUDOFS_ATTRIBUTES