diff --git a/unix/file.c b/unix/file.c
index 4d3a9f3621edb370c70809da8ea008bcf286b239..2c8652d7fb9f7015e26263b9a1c215b2d88ed326 100644
--- a/unix/file.c
+++ b/unix/file.c
@@ -105,6 +105,7 @@ STATIC mp_uint_t fdfile_write(mp_obj_t o_in, const void *buf, mp_uint_t size, in
 
 STATIC mp_uint_t fdfile_ioctl(mp_obj_t o_in, mp_uint_t request, uintptr_t arg, int *errcode) {
     mp_obj_fdfile_t *o = MP_OBJ_TO_PTR(o_in);
+    check_fd_is_open(o_in);
     switch (request) {
         case MP_STREAM_SEEK: {
             struct mp_stream_seek_t *s = (struct mp_stream_seek_t*)arg;