From 9c3fc9130421dc54e5033eacdc22d13f27830869 Mon Sep 17 00:00:00 2001 From: hujun5 Date: Mon, 16 Dec 2024 12:15:05 +0800 Subject: [PATCH] fs: fix comment in https://github.com/apache/nuttx/pull/15163 Signed-off-by: hujun5 --- fs/inode/fs_files.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/fs/inode/fs_files.c b/fs/inode/fs_files.c index fc9be258cc..b8bf8b7faf 100644 --- a/fs/inode/fs_files.c +++ b/fs/inode/fs_files.c @@ -76,17 +76,15 @@ static FAR struct file *files_fget_by_index(FAR struct filelist *list, filep = &list->fl_files[l1][l2]; #ifdef CONFIG_FS_REFCOUNT - int32_t refs = 0; - if (filep->f_inode != NULL) { /* When the reference count is zero but the inode has not yet been * released, At this point we should return a null pointer */ + int32_t refs = atomic_read(&filep->f_refs); do { - refs = atomic_read(&filep->f_refs); if (refs == 0) { filep = NULL; @@ -99,18 +97,12 @@ static FAR struct file *files_fget_by_index(FAR struct filelist *list, { filep = NULL; } - else + else if (atomic_fetch_add(&filep->f_refs, 1) == 0) { - do - { - if (atomic_cmpxchg(&filep->f_refs, &refs, 2)) - { - *new = true; - break; - } - } - while (!atomic_try_cmpxchg(&filep->f_refs, &refs, refs + 1)); + atomic_fetch_add(&filep->f_refs, 1); + *new = true; } + #else if (filep->f_inode == NULL && new == NULL) {