mirror of
https://github.com/apache/nuttx.git
synced 2026-05-26 18:56:10 +08:00
fs/file: add reference count protection for stack-allocated file structures
Issue: When using a stack-allocated file structure, the sequence: 1. file_open() initializes the stack file structure 2. file_mmap() creates memory mapping and increments reference count 3. file_munmap() decrements reference count and may free the file structure 4. file_close() attempts to close already freed structure → crash Root cause: The memory mapping operations (fs_reffilep/fs_putfilep) manage reference counts independently and can free the stack-allocated file structure prematurely. Solution: - Add reference count protection during file_open() for stack-allocated files - Clear reference count appropriately during file_close() - This ensures the file structure remains valid throughout its lifetime Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
This commit is contained in:
@@ -373,6 +373,11 @@ int file_open(FAR struct file *filep, FAR const char *path, int oflags, ...)
|
||||
ret = file_vopen(filep, path, oflags, 0, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (ret >= OK)
|
||||
{
|
||||
atomic_fetch_add(&filep->f_refs, 1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user