From c0a25a69eb9532396c7ff06dd8ab506403aba4a2 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 27 May 2024 11:49:06 +1000 Subject: [PATCH] extmod/modos: Only sync FAT filesystems using disk_ioctl. Eventually this needs to be made a generic call to the underlying VFS. But for now this prevents `disk_ioctl()` crashing on non-FAT filesystems. Signed-off-by: Damien George --- extmod/modos.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extmod/modos.c b/extmod/modos.c index eda359b97..7f1e31fba 100644 --- a/extmod/modos.c +++ b/extmod/modos.c @@ -76,8 +76,9 @@ static mp_obj_t mp_os_sync(void) { #if MICROPY_VFS_FAT for (mp_vfs_mount_t *vfs = MP_STATE_VM(vfs_mount_table); vfs != NULL; vfs = vfs->next) { - // this assumes that vfs->obj is fs_user_mount_t with block device functions - disk_ioctl(MP_OBJ_TO_PTR(vfs->obj), CTRL_SYNC, NULL); + if (mp_obj_is_type(vfs->obj, &mp_fat_vfs_type)) { + disk_ioctl(MP_OBJ_TO_PTR(vfs->obj), CTRL_SYNC, NULL); + } } #endif return mp_const_none;