Skip to content

Commit 83b28c3

Browse files
committed
[FIX][DFSv2][ELMFAT]修复多线程环境下lseek返回值概率性被篡改的问题
1 parent f52fb60 commit 83b28c3

File tree

1 file changed

+3
-2
lines changed
  • components/dfs/dfs_v2/filesystems/elmfat

1 file changed

+3
-2
lines changed

components/dfs/dfs_v2/filesystems/elmfat/dfs_elm.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ int dfs_elm_flush(struct dfs_file *file)
629629
off_t dfs_elm_lseek(struct dfs_file *file, off_t offset, int wherece)
630630
{
631631
FRESULT result = FR_OK;
632-
632+
off_t pos = 0;
633633
switch (wherece)
634634
{
635635
case SEEK_SET:
@@ -656,11 +656,12 @@ off_t dfs_elm_lseek(struct dfs_file *file, off_t offset, int wherece)
656656
RT_ASSERT(fd != RT_NULL);
657657
rt_mutex_take(&file->vnode->lock, RT_WAITING_FOREVER);
658658
result = f_lseek(fd, offset);
659+
pos = fd->fptr;
659660
rt_mutex_release(&file->vnode->lock);
660661
if (result == FR_OK)
661662
{
662663
/* return current position */
663-
return fd->fptr;
664+
return pos;
664665
}
665666
}
666667
else if (file->vnode->type == FT_DIRECTORY)

0 commit comments

Comments
 (0)