diff --git a/components/dfs/src/dfs_fs.c b/components/dfs/src/dfs_fs.c index 7e1dbd3584b344778ed72ad2b894bea110c06624..a3a8210225269af2476a90483631021535011fc1 100644 --- a/components/dfs/src/dfs_fs.c +++ b/components/dfs/src/dfs_fs.c @@ -285,7 +285,16 @@ int dfs_mount(const char *device_name, /* open device, but do not check the status of device */ if (dev_id != RT_NULL) - rt_device_open(fs->dev_id, RT_DEVICE_OFLAG_RDWR); + { + if (rt_device_open(fs->dev_id, + RT_DEVICE_OFLAG_RDWR) != RT_EOK) + { + /* The underlaying device has error, clear the entry. */ + dfs_lock(); + rt_memset(fs, 0, sizeof(struct dfs_filesystem)); + goto err1; + } + } /* call mount of this filesystem */ if ((*ops)->mount(fs, rwflag, data) < 0)