diff options
| author | angryproton <[email protected]> | 2025-12-24 22:52:04 +0800 |
|---|---|---|
| committer | R b b666 <[email protected]> | 2025-12-26 21:03:26 +0800 |
| commit | ec0c2bbbd8b1f894eca15be5f1d0b0f63f64fd83 (patch) | |
| tree | 0dbe89632149f6b0c027acd7b8810246eab0a5d8 | |
| parent | 239f371fcb6f4aaa4189cd6b5691c24853f76ea8 (diff) | |
[FIX][DFSv2][ELMFAT]修复多线程环境下lseek返回值概率性被篡改的问题
| -rw-r--r-- | components/dfs/dfs_v2/filesystems/elmfat/dfs_elm.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/components/dfs/dfs_v2/filesystems/elmfat/dfs_elm.c b/components/dfs/dfs_v2/filesystems/elmfat/dfs_elm.c index 625a7cec5e..8ddeec2d42 100644 --- a/components/dfs/dfs_v2/filesystems/elmfat/dfs_elm.c +++ b/components/dfs/dfs_v2/filesystems/elmfat/dfs_elm.c @@ -629,7 +629,7 @@ int dfs_elm_flush(struct dfs_file *file) off_t dfs_elm_lseek(struct dfs_file *file, off_t offset, int wherece) { FRESULT result = FR_OK; - + off_t pos = 0; switch (wherece) { case SEEK_SET: @@ -656,11 +656,12 @@ off_t dfs_elm_lseek(struct dfs_file *file, off_t offset, int wherece) RT_ASSERT(fd != RT_NULL); rt_mutex_take(&file->vnode->lock, RT_WAITING_FOREVER); result = f_lseek(fd, offset); + pos = fd->fptr; rt_mutex_release(&file->vnode->lock); if (result == FR_OK) { /* return current position */ - return fd->fptr; + return pos; } } else if (file->vnode->type == FT_DIRECTORY) |
