Commit Graph

2250 Commits

Author SHA1 Message Date
hujun5 a9d5f9287e fix compile error
Signed-off-by: hujun5 <hujun5@xiaomi.com>
2026-04-21 01:35:03 +08:00
tengshuangshuang dfd1bb2e7a add limit for MAX_MQUEUE_PATH to satisfy POSIX requirement.
A call to mq_open() when the length of a pathname component in name
exceeds {NAME_MAX} while _POSIX_NO_TRUNC is in effect shall return
-1 and set errno to ENAMETOOLONG.
In nuttx/fs/mqueue/mq_open.c:185-190
'''
  if (sizeof(CONFIG_FS_MQUEUE_VFS_PATH) + 1 + strlen(mq_name)
      >= MAX_MQUEUE_PATH)
    {
      ret = -ENAMETOOLONG;
      goto errout;
    }
'''

Signed-off-by: tengshuangshuang <tengshuangshuang@xiaomi.com>
2026-04-21 01:34:37 +08:00
tengshuangshuang a3e1f254d7 mq_open:fix mq_name check
https://man7.org/linux/man-pages/man7/mq_overview.7.html:
Each message queue is identified by a name of the form /somename; that is, a null-terminated string of up to NAME_MAX (i.e., 255) characters consisting of an initial slash, followed by one or more characters, none of which are slashes.

Signed-off-by: tengshuangshuang <tengshuangshuang@xiaomi.com>
2026-04-21 01:34:05 +08:00
tengshuangshuang d8c686c76f mq_open: when mq_open's oflags does not satisfy mode, mq_open should return -1 and errno == EACCES
A call to mq_open() when the message queue exists and the
permissions specified by oflag are denied shall return -1 and set
errno to EACCES.

Signed-off-by: tengshuangshuang <tengshuangshuang@xiaomi.com>
2026-04-21 01:32:45 +08:00
zhengyu16 5df9e16cb6 modify the logic of inode_reserve
Let inode_reserve return -ENOENT if the intermediate path doesn't
exits. Create a new func inode_reserve_path() to make some
register processes work properly.

Signed-off-by: zhengyu16 <zhengyu16@xiaomi.com>
2026-04-21 01:32:11 +08:00
zhengyu16 ebd0c8273b rename file_free to file_deallocate
file_free has been defined in libarchive

Signed-off-by: zhengyu16 <zhengyu16@xiaomi.com>
2026-04-21 01:29:30 +08:00
dongjiuzhu1 7bf04a6054 fs/inode: using file_allocate and file_dup to avoid racecondition to allocate new fd
issue description:
task A:                                            NSH:
1.open->                                           reboot->sync->task_fsfsync
2.nx_vopen->               context switch
3.fdlist_allocate:            ---->                4.fsync->file_sync->assert(inode or priv is empty)
(new fd with empty filep)
5.file_vopen:
(init empty filep)
6.return fd

Task A allocates a new fd with an empty filep in fdlist_allocate. Before
it can fully initialize the filep in file_vopen, the NSH task triggers a
file - system sync operation. The sync operation encounters the empty
filep associated with the newly allocated fd, causing the assertion to
fail and the system to crash.

To resolve this race condition, we should modify the fd allocation
process. Instead of allocating a new fd with an empty filep first and
then initializing it later, we should use the file_allocate_from_inode
function. This function allows us to initialize the file structure first
and then bind it to the new filep when allocating the fd. By doing so,
we ensure that the filep is always properly initialized before it is
used in any file - system operations, thus preventing the assertion
failure and the subsequent system crash.

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:27:05 +08:00
dongjiuzhu1 6f027250b7 Revert "fs/inode: using file_allocate_from_inode to avoid racecondition to allocate new fd"
This reverts commit 7af442cd543df5490ef1e45dd49684d3fc8ac72a.

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:27:04 +08:00
dongjiuzhu1 92d9504568 fs/inode: using file_allocate_from_inode to avoid racecondition to allocate new fd
issue description:
task A:                                            NSH:
1.open->                                           reboot->sync->task_fsfsync
2.nx_vopen->               context switch
3.fdlist_allocate:            ---->                4.fsync->file_sync->assert(inode or priv is empty)
(new fd with empty filep)
5.file_vopen:
(init empty filep)
6.return fd

Task A allocates a new fd with an empty filep in fdlist_allocate. Before
it can fully initialize the filep in file_vopen, the NSH task triggers a
file - system sync operation. The sync operation encounters the empty
filep associated with the newly allocated fd, causing the assertion to
fail and the system to crash.

To resolve this race condition, we should modify the fd allocation
process. Instead of allocating a new fd with an empty filep first and
then initializing it later, we should use the file_allocate_from_inode
function. This function allows us to initialize the file structure first
and then bind it to the new filep when allocating the fd. By doing so,
we ensure that the filep is always properly initialized before it is
used in any file - system operations, thus preventing the assertion
failure and the subsequent system crash.

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
Signed-off-by: ligd <liguiding1@xiaomi.com>
2026-04-21 01:27:04 +08:00
dongjiuzhu1 c13960ce87 Revert "fs/inode: using file_allocate_from_inode to avoid racecondition to allocate new fd"
This reverts commit 6377a6b7f395fa0eb310aa328994bbc67979c6c9.

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:27:04 +08:00
dongjiuzhu1 7391d2831f fs/inode: using file_allocate_from_inode to avoid racecondition to allocate new fd
issue description:
task A:                                            NSH:
1.open->                                           reboot->sync->task_fsfsync
2.nx_vopen->               context switch
3.fdlist_allocate:            ---->                4.fsync->file_sync->assert(inode or priv is empty)
(new fd with empty filep)
5.file_vopen:
(init empty filep)
6.return fd

Task A allocates a new fd with an empty filep in fdlist_allocate. Before
it can fully initialize the filep in file_vopen, the NSH task triggers a
file - system sync operation. The sync operation encounters the empty
filep associated with the newly allocated fd, causing the assertion to
fail and the system to crash.

To resolve this race condition, we should modify the fd allocation
process. Instead of allocating a new fd with an empty filep first and
then initializing it later, we should use the file_allocate_from_inode
function. This function allows us to initialize the file structure first
and then bind it to the new filep when allocating the fd. By doing so,
we ensure that the filep is always properly initialized before it is
used in any file - system operations, thus preventing the assertion
failure and the subsequent system crash.

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:27:03 +08:00
huojianchao 16366b438b fix inode_search memleak and mq_open deadloop
Root cause:
sender_thread                     receiver thread
mq_open()                      |  mq_open() --creat succ
file_mq_vopen()                |
inode_find()                   |
  inode_search() --buffer      |
                   memleak     |
nxmq_alloc_msgq()              |
inode_reserve() --fail, eexist |
                               |
retry find inode,path is wrong |
find fail->retry->find fail    |
dead loop                      |
                               |

Signed-off-by: huojianchao<huojianchao@xiaomi.com>
2026-04-21 01:26:18 +08:00
buxiasen f69f6a8484 mq_open: fix when two thread open at same time with SMP
The inode may set to invalid information cause 2nd open report fail.

Signed-off-by: buxiasen <buxiasen@xiaomi.com>
2026-04-21 01:25:12 +08:00
ligd effbcf1df7 mq_open: fix memleak in mq_open, regerrsion when merge
Signed-off-by: ligd <liguiding1@xiaomi.com>
2026-04-21 01:25:05 +08:00
Xiang Xiao 187c8b47c9 fs: Move inotify.c from fs/notify/ to fs/vfs/
and merge fs/notify/notify.h into fs/vfs/vfs.h

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2026-04-21 01:25:03 +08:00
guohao15 998d66f859 fs:Replace critical section of fs/mqueue
Signed-off-by: guohao15 <guohao15@xiaomi.com>
2026-04-21 01:25:00 +08:00
dongjiuzhu1 9c1dfdf964 fs/vfs: clear filep when call file_open/file_mq_open to avoid random value
fix crash caused by stack random value

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:24:55 +08:00
dongjiuzhu1 52a5a37fad fs/vfs: Separate file descriptors from file descriptions
This patch is a rework of the NuttX file descriptor implementation. The
goal is two-fold:

1. Improve POSIX compliance. The old implementation tied file description
to inode only, not the file struct. POSIX however dictates otherwise.
2. Fix a bug with descriptor duplication (dup2() and dup3()). There is
an existing race condition with this POSIX API that currently results
in a kernel side crash.

The crash occurs when a partially open / closed file descriptor is
duplicated. The reason for the crash is that even if the descriptor is
closed, the file might still be in use by the kernel (due to e.g. ongoing
write to file). The open file data is changed by file_dup3() and this
causes a crash in the device / drivers themselves as they lose access to
the inode and private data.

The fix is done by separating struct file into file and file descriptor
structs. The file struct can live on even if the descriptor is closed,
fixing the crash. This also fixes the POSIX issue, as two descriptors
can now point to the same file.

Signed-off-by: Ville Juven <ville.juven@unikie.com>
Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:24:55 +08:00
guohao15 7035ad9cbd inode:use inode_addref API instead of atomic API
Signed-off-by: guohao15 <guohao15@xiaomi.com>
2026-04-21 01:24:45 +08:00
zhangyuan29 b514aa773f arch_atomic: only support atomic_xx and atomic64_xx function
Modify the kernel to use only atomic_xx and atomic64_xx interfaces,
avoiding the use of sizeof or typeof to determine the type of
atomic operations, thereby simplifying the kernel's atomic
interface operations.

Signed-off-by: zhangyuan29 <zhangyuan29@xiaomi.com>
2026-04-21 01:18:41 +08:00
dongjiuzhu1 9e7d6df0a4 fs/mqeue: fix bug about release mq resource when file_allocate return failed
Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:17:45 +08:00
guohao15 ad62adbd20 bugfix:the inode may have been removed by other core
Signed-off-by: guohao15 <guohao15@xiaomi.com>
2026-04-21 01:16:34 +08:00
anjiahao 7e07cf9cba mqueue:fix msgq memleak
if first call unlink after call nxmq_file_close
cause i_crefs not 0 will leak msqg, inode will
free in unlink, but forget free msgq

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2026-04-21 01:16:20 +08:00
Alin Jerpelea b2c99b0098 fs: migrate to SPDX identifier
Most tools used for compliance and SBOM generation use SPDX identifiers
This change brings us a step closer to an easy SBOM generation.

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2026-04-21 01:13:34 +08:00
openvela-robot 77f0bea7f5 Merge branch 'master' into vela
apache/nuttx commit id: eb27ebba8adfe29644a7b890f86e6f16941921dc

Signed-off-by: ligd <liguiding1@xiaomi.com>
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2026-04-21 01:12:27 +08:00
openvela-robot 87c6ff19cf mm: Fix some typos
Signed-off-by: xuxingliang <xuxingliang@xiaomi.com>
2026-04-21 01:12:20 +08:00
openvela-robot b2f5ba0753 syslog: convert \n to \r\n in syslog framework layer
Signed-off-by: yangsong8 <yangsong8@xiaomi.com>
2026-04-21 01:12:15 +08:00
openvela-robot 24c239f8f5 arm/cmake: fix cmake compile error
1. The -c parameter should not be added during the link phase, otherwise the link will fail.
2. If it is the clang compiler, its toolchain library should use --print-file-name to find it, otherwise an error will occur

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2026-04-21 01:12:09 +08:00
openvela-robot 44ed68d400 fs/rpmsgfs: return real err value when open failed
Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-04-21 01:12:00 +08:00
openvela-robot 85912ed402 syslog/channel: rename syslog_channel() to syslog_channel_register()
Change syslog API naming more reasonable:

1. rename syslog_channel() to syslog_channel_register()
2. rename syslog_channel_remove() to syslog_channel_unregister()

Signed-off-by: chao an <anchao@lixiang.com>
2026-04-21 01:11:54 +08:00
openvela-robot 0fdd165dfa Fix disable msi when msi capability not exist issue
Signed-off-by: yezhonghui <yezhonghui@xiaomi.com>
2026-04-21 01:11:48 +08:00
openvela-robot 61f4f9411d openamp: sync with community
Comminity has upgrade the openamp to the last commit (near 2024.05 Release),
sync back to vela.

Only modify the makefile and upgrade the patch, should be no impact in any
features.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-04-21 01:11:43 +08:00
openvela-robot 4ea93dbabf add a flag of lin internal sleep/wakeup state
Signed-off-by: wangxiaoxin <wangxiaoxin@xiaomi.com>
2026-04-21 01:11:35 +08:00
openvela-robot 5081b31bd0 cmake(sync):sync CMakeLists.txt conflict of libc with github
Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2026-04-21 01:11:30 +08:00
openvela-robot 39fce4b20d arch/x86_64: Resolving NUC Boot Failure Issue
The segment of the Xen PVH boot protocol was not specified during linking and was placed before .loader.text, causing the boot to fail

Signed-off-by: liwenxiang1 <liwenxiang1@xiaomi.com>
2026-04-21 01:11:24 +08:00
openvela-robot d2e613094f arm64/makefile: No longer using hwasan pile insertion
Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
2026-04-21 01:11:19 +08:00
openvela-robot a3dd40b0d9 mm: call sched_note within mm lock
Signed-off-by: xuxingliang <xuxingliang@xiaomi.com>
2026-04-21 01:11:12 +08:00
openvela-robot 8b787c52e2 sched: sync minor differences in community code
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2026-04-21 01:11:07 +08:00
openvela-robot bf0c4ea69a libc/modlib: Make modlib selectable from defconfig
since bootloader may call modlib functions directly
to load elf firmware without binfmt, dlfcn or module.

BTW, this patch also remove the duplicated selecttion

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2026-04-21 01:11:02 +08:00
openvela-robot d194b91929 Revert "math32.h: remove typeof depends"
This reverts commit 4e9f8176a08aa25c7173bc4c748e721b0841ddac.

Reason for revert:
This patch are using to fix the following build warning when build with greenhills compiler:
    CC:  syslog/vsyslog.c "pthread/pthread_create.c", line 443: warning #1931-D: operand of sizeof is
              not a type, variable, or dereferenced pointer expression
              ptcb->cmn.timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
                                    ^

    CC:  dirent/lib_closedir.c "sched/sched_profil.c", line 81: warning #1931-D: operand of sizeof is not a
              type, variable, or dereferenced pointer expression
        wd_start(&prof->timer, PROFTICK, profil_timer_handler, arg);
                               ^

    "sched/sched_profil.c", line 142: warning #1931-D: operand of sizeof is not a
              type, variable, or dereferenced pointer expression
        wd_start(&prof->timer, PROFTICK, profil_timer_handler, (wdparm_t)prof);
                               ^

    CC:  common/arm_modifyreg8.c "sched/sched_setscheduler.c", line 165: warning #1931-D: operand of sizeof is
              not a type, variable, or dereferenced pointer expression
                tcb->timeslice  = MSEC2TICK(CONFIG_RR_INTERVAL);
                                  ^

    CC:  misc/lib_utsname.c "sched/sched_unlock.c", line 275: warning #1931-D: operand of sizeof is not a
              type, variable, or dereferenced pointer expression
                rtcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
                                  ^

    "sched/sched_roundrobin.c", line 119: warning #1931-D: operand of sizeof is
              not a type, variable, or dereferenced pointer expression
                tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
                                 ^

we need to keep the modification
2026-04-21 01:10:57 +08:00
openvela-robot ac82d776ab usb: Fix issue with the calculation descriptor length error
Signed-off-by: yangsong8 <yangsong8@xiaomi.com>
2026-04-21 01:10:47 +08:00
openvela-robot 0662b2ac02 rpmsgdev/blk: sync with communitfy, minor nxstyle fix
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-04-21 01:10:42 +08:00
openvela-robot 97534cf708 add lin status changes the format of the reported frame and add the macros that lin needs
Signed-off-by: wangxiaoxin <wangxiaoxin@xiaomi.com>
2026-04-21 01:10:37 +08:00
openvela-robot 492cec3ec5 nuttx/sim: Fix MacOs build error with argument unused during compilation: '-no-pie'
Signed-off-by: cuiziwei <cuiziwei@xiaomi.com>
2026-04-21 01:10:31 +08:00
openvela-robot 1f0a222301 sim/m64:Fix ld error with .rodata can not be used when making a PIE object.
/usr/bin/ld: nuttx.rel: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: failed to set dynamic section sizes: bad value

Signed-off-by: cuiziwei <cuiziwei@xiaomi.com>
2026-04-21 01:10:25 +08:00
openvela-robot 80196e894b nuttx: Change the judgment of GCCVER version to greater equal.
Signed-off-by: cuiziwei <cuiziwei@xiaomi.com>
2026-04-21 01:10:19 +08:00
openvela-robot 6c85ce6822 vsprintf:fix bug when print int64 0x8000000000000000
stdio/lib_libvsprintf.c:1018:17: runtime error: negation of -9223372036854775808 cannot be
represented in type 'long long int'; cast to an unsigned type to negate this value to itself
    #0 0x3326a86 in vsprintf_internal stdio/lib_libvsprintf.c:1018
    #1 0x332926b in lib_vsprintf stdio/lib_libvsprintf.c:1363
    #2 0x3777978 in vfprintf stdio/lib_vfprintf.c:52
    #3 0x671b3a0 in printf stdio/lib_printf.c:44
    #4 0x37abc0c in hello_main /data/project/code/vela-pt/apps/examples/hello/hello_main.c:38
    #5 0x33201d3 in nxtask_startup sched/task_startup.c:70
    #6 0x3208ecb in nxtask_start task/task_start.c:134
    #7 0x3357a49 in pre_start sim/sim_initialstate.c:52

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-04-21 01:10:13 +08:00
openvela-robot 78d736af82 arm/toolchain.defs: sync the whole-archive config with community
Signed-off-by: guoshichao <guoshichao@xiaomi.com>
2026-04-21 01:10:07 +08:00
openvela-robot 47daa79e0b nuttx/x86_64:Add _sinit and _einit initialization.
Signed-off-by: cuiziwei <cuiziwei@xiaomi.com>
2026-04-21 01:10:02 +08:00
openvela-robot 5d60745acb strptime.c:len is not defined.
Bring all code that uses the variable len under the CONFIG_LIBC_LOCALE

Signed-off-by: chenjiahua1 <chenjiahua1@xiaomi.com>
2026-04-21 01:09:56 +08:00