walnux/include/nuttx
Ville Juven b8e30b54ec 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>
2025-06-12 18:12:42 +08:00
..
1wire include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
aie nuttx ai driver update 2024-10-17 22:35:40 +08:00
analog style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
audio nuttx/audio: add fake audio driver. 2024-12-20 11:47:08 -03:00
binfmt style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
can drivers/can: move CAN utils to CAN common files 2025-05-14 10:30:25 -03:00
clk include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
contactless include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
coresight style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
crypto include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
dma include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
drivers style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
eeprom include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
efuse include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
fs fs/vfs: Separate file descriptors from file descriptions 2025-06-12 18:12:42 +08:00
himem include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
hwspinlock include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
i2c include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
i3c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
input style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
ioexpander style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
lcd style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
leds style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
lib style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
math style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
mbox include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
mm style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
modem include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
motor style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
mtd style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
net arm64/imx9: Support & configure RGMII-ID on RTL8211F 2025-06-05 08:58:24 +02:00
note style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
nx style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
pci style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
pinctrl include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
power style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
rc style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
regmap include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
reset style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
rf include: migrate license to ASF 2024-11-06 19:46:13 +08:00
rmt include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
rpmsg style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
rptun rptun_bmp: add remote_cpu to rptun_secure_init 2025-01-14 13:34:35 +08:00
segger include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
sensors style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
serial style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
spi style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
syslog drivers/syslog: remove implement of syslog_putc() 2024-11-15 19:46:36 +08:00
timers style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
usb style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
usrsock include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
vhost drivers/vhost: add vhost framework for NuttX 2024-10-03 17:37:40 +08:00
video style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
virtio virtio-mmio/pci: add alloc_buf/free_buf for mmio and pci transport layer 2024-10-09 23:32:58 +08:00
wireless include: fix Private Types banners 2025-05-28 10:17:15 +08:00
.gitignore
addrenv.h modlib/gnu-elf.ld.in: fix regression with armv7a 2025-01-17 23:16:26 +08:00
allsyms.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
arch.h libc/stream: Support lowsyslog. 2025-04-02 12:01:46 +08:00
ascii.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
atexit.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
atomic.h include/nuttx/atomic.h: For each ATOMIC func, cast the parameters to (FAR intXX_t *) of correct size 2025-04-17 20:14:15 +08:00
bits.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
board.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
cache.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
can.h drivers/can: move CAN utils to CAN common files 2025-05-14 10:30:25 -03:00
cancelpt.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
circbuf.h lib/circbuf: add static initialize macro helper 2024-12-17 20:48:23 +08:00
clock.h clock: Add clock_delay2abstick. 2025-05-12 19:56:29 +08:00
compiler.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
coredump.h coredump: fix issue that nvic region overlapped by board memory region 2025-01-24 09:15:56 +08:00
crc8.h libc: add CRC-8-ROHC support 2024-10-13 03:09:26 +08:00
crc16.h libs/libc/crc16: Separate implementation of crc16xmodem from crc16 2025-04-10 16:47:28 +08:00
crc32.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
crc64.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
elf.h nuttx/elf.h: Fix build error with unknown type name 'bool'. 2024-10-15 12:35:10 +08:00
environ.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
envpath.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
ethtool.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
event.h fs: support VFS-based named event group 2024-10-09 01:40:00 +08:00
fdcheck.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
fdt.h qemu/armv7a: register cfi flash 2025-02-11 17:23:44 +08:00
gdbstub.h gdbstub: change send buffer to const char 2025-01-20 20:07:13 +08:00
hashtable.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
idr.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
init.h sched: change nxsched_islocked_global to nxsched_islocked_tcb 2024-10-05 13:49:55 +08:00
instrument.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
ipcc.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
irq.h sched/spin_lock: rename raw_spin_lock to spin_lock_notrace 2025-02-13 20:48:15 +08:00
kmalloc.h userspace: Exclude nuttx/arch.h 2024-11-01 16:59:37 +08:00
kthread.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
lin.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
lirc.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
list.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
macro.h arch_atomic : Introduce CONFIG_LIBC_ARCH_ATOMIC 2024-11-15 14:01:56 +08:00
memoryregion.h libs/misc/memoryregion: remove unused memory_region 2024-10-18 21:32:48 +08:00
mmcsd.h mmcsd:add postsleep fields for mmc_ioc_cmd 2024-10-15 02:06:00 +08:00
module.h libc/elf: rename modlib to libelf 2025-04-11 09:43:22 +08:00
mqueue.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
mutex.h Clean up the nxmutex library 2025-05-08 16:00:05 +08:00
notifier.h userspace: Exclude nuttx/arch.h 2024-11-01 16:59:37 +08:00
nuttx.h macro/align: Fix ALIGN_UP and ALIGN_DOWN 2025-01-11 12:13:10 +08:00
page.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
panic_notifier.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
pgalloc.h mm/gran: add gran_alloc_align API 2025-05-12 15:01:37 +08:00
progmem.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
pthread.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
queue.h include: queue.h: Make flink clear after sq_rem 2024-10-16 13:56:49 +08:00
random.h libc: Refine the arc4random_buf implementation 2024-10-26 18:04:21 -03:00
reboot_notifier.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
rwsem.h Revert "shced:sem: replace mutex with spinlock" 2024-10-29 23:01:39 +08:00
sched.h fs/vfs: Separate file descriptors from file descriptions 2025-06-12 18:12:42 +08:00
sched_note.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
scsi.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
sdio.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
sdio_slave.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
semaphore.h Integrate nxmutex support fully into nxsem 2025-05-08 16:00:05 +08:00
signal.h signal: add sig_tgkill() kenrnel version support 2024-10-10 02:38:12 +08:00
spawn.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
spinlock.h nuttx/spinlock: Define empty macro for spin_unlock 2025-06-11 23:39:21 +08:00
spinlock_type.h fix compile error 2025-01-08 09:28:58 +08:00
streams.h blk/mtdoutstream: use lib_sostream_s to support seek 2024-11-30 03:08:35 +08:00
symtab.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
tee.h drivers/misc/optee: Fix GP API compatibility 2025-05-13 10:14:01 +08:00
thermal.h drivers/thermal: Add support for passive trip point 2025-02-16 11:22:41 -03:00
tls.h sched/gettid: Move thread ID to TLS 2025-04-08 22:53:10 +08:00
trace.h support trace_beginex and trace_endex 2024-10-13 10:23:44 +08:00
uorb.h drivers/sensor: Fix spell errors of uorb.h 2025-05-11 20:28:17 +08:00
userspace.h userspace: Exclude nuttx/arch.h 2024-11-01 16:59:37 +08:00
vt100.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
wdog.h sched: Add comments for wd_start_next and work_queue_next. 2025-06-10 11:02:45 -03:00
wqueue.h sched: Add comments for wd_start_next and work_queue_next. 2025-06-10 11:02:45 -03:00
zoneinfo.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00