diff --git a/components/vfs/vfs_calls.c b/components/vfs/vfs_calls.c index bdc7acb9a8..b3dd952d17 100644 --- a/components/vfs/vfs_calls.c +++ b/components/vfs/vfs_calls.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -180,10 +180,22 @@ int esp_vfs_ioctl(int fd, int cmd, ...) __errno_r(r) = EBADF; return -1; } + + if (vfs->vfs->ioctl == NULL) { + __errno_r(r) = ENOSYS; + return -1; + } + int ret; va_list args; va_start(args, cmd); - CHECK_AND_CALL(ret, r, vfs, ioctl, local_fd, cmd, args); + + if (vfs->flags & ESP_VFS_FLAG_CONTEXT_PTR) { + ret = vfs->vfs->ioctl_p(vfs->ctx, local_fd, cmd, args); + } else { + ret = vfs->vfs->ioctl(local_fd, cmd, args); + } + va_end(args); return ret; }