fs/fs_dup2: correct check before dup

Change-Id: I2387ab447f0d8ed9429960922a72de35b2730acb
Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
This commit is contained in:
Jiuzhu Dong 2021-03-22 15:08:39 +08:00 committed by Xiang Xiao
parent f57ba35151
commit 554310bd78
1 changed files with 10 additions and 3 deletions

View File

@ -88,14 +88,17 @@ int file_dup2(FAR struct file *filep1, FAR struct file *filep2)
* can maintain the correct open counts.
*/
if (inode->u.i_ops && inode->u.i_ops->open)
if (inode->u.i_ops)
{
#ifndef CONFIG_DISABLE_MOUNTPOINT
if (INODE_IS_MOUNTPT(inode))
{
/* Dup the open file on the in the new file structure */
ret = inode->u.i_mops->dup(filep1, &temp);
if (inode->u.i_mops->dup)
{
ret = inode->u.i_mops->dup(filep1, &temp);
}
}
else
#endif
@ -103,7 +106,11 @@ int file_dup2(FAR struct file *filep1, FAR struct file *filep2)
/* (Re-)open the pseudo file or device driver */
temp.f_priv = filep1->f_priv;
ret = inode->u.i_ops->open(&temp);
if (inode->u.i_ops->open)
{
ret = inode->u.i_ops->open(&temp);
}
}
/* Handle open failures */