fs/mqueue: fix inverted 'created' flag in file_mq_vopen

The 'created' flag values were incorrectly inverted in file_mq_vopen():

1. When opening an existing message queue (inode_find succeeds):
   - Before: incorrectly set *created = 1 (indicating new creation)
   - After: correctly set *created = 0 (indicating existing queue)

2. When creating a new message queue (inode_find fails):
   - Before: incorrectly set *created = 0 (indicating existing queue)
   - After: correctly set *created = 1 (indicating new creation)

This bug could lead to incorrect resource management and cleanup behavior
in the calling function nxmq_vopen() when file_allocate() returns an error,
as it relies on the 'created' flag to determine whether the message queue
was newly created and needs to be cleaned up.

Impact:
- Resource leak when opening existing queues that should not be released
- Missing cleanup when creating new queues that should be released on error

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
This commit is contained in:
dongjiuzhu1
2025-07-01 18:44:11 +08:00
committed by Xiang Xiao
parent 53fccb56c9
commit 1b6733c056
+2 -2
View File
@@ -269,7 +269,7 @@ static int file_mq_vopen(FAR struct file *mq, FAR const char *mq_name,
if (created)
{
*created = 1;
*created = 0;
}
}
else
@@ -321,7 +321,7 @@ static int file_mq_vopen(FAR struct file *mq, FAR const char *mq_name,
if (created)
{
*created = 0;
*created = 1;
}
}