This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new f113d13cbf fs/inode: Fix inoderemove when removing an inode without 
parent
f113d13cbf is described below

commit f113d13cbffdd9479c05be83844a5183cbb1381b
Author: Alan Carvalho de Assis <acas...@gmail.com>
AuthorDate: Sat May 24 12:59:52 2025 -0300

    fs/inode: Fix inoderemove when removing an inode without parent
    
    This modification ensures that inoderemove will error instead of
    trying to remove an inode without parent.
    
    This fix was implement by Richard Jiayang Liu.
    
    Signed-off-by: Richard Jiayang Liu <rjl...@illinois.edu>
---
 fs/inode/fs_inoderemove.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/fs/inode/fs_inoderemove.c b/fs/inode/fs_inoderemove.c
index ec507adcd4..87c6d63339 100644
--- a/fs/inode/fs_inoderemove.c
+++ b/fs/inode/fs_inoderemove.c
@@ -92,7 +92,16 @@ static FAR struct inode *inode_unlink(FAR const char *path)
 
       else
         {
-          DEBUGASSERT(desc.parent != NULL);
+          /* The parent could be null if we are trying to remove the
+           * root inode. In that case, fail because we cannot remove it.
+           */
+
+          if (desc.parent == NULL)
+            {
+              inode = NULL;
+              goto errout;
+            }
+
           desc.parent->i_child = inode->i_peer;
         }
 
@@ -101,6 +110,7 @@ static FAR struct inode *inode_unlink(FAR const char *path)
       atomic_fetch_sub(&inode->i_crefs, 1);
     }
 
+errout:
   RELEASE_SEARCH(&desc);
   return inode;
 }

Reply via email to