/* napi busy poll default timeout */
        unsigned int            napi_busy_poll_to;
        bool                    napi_prefer_busy_poll;
+       bool                    napi_enabled;
 
        DECLARE_HASHTABLE(napi_ht, 4);
 #endif
 
        if (napi.pad[0] || napi.pad[1] || napi.pad[2] || napi.resv)
                return -EINVAL;
 
-       WRITE_ONCE(ctx->napi_busy_poll_to, napi.busy_poll_to);
-       WRITE_ONCE(ctx->napi_prefer_busy_poll, !!napi.prefer_busy_poll);
-
        if (copy_to_user(arg, &curr, sizeof(curr)))
                return -EFAULT;
 
+       WRITE_ONCE(ctx->napi_busy_poll_to, napi.busy_poll_to);
+       WRITE_ONCE(ctx->napi_prefer_busy_poll, !!napi.prefer_busy_poll);
+       WRITE_ONCE(ctx->napi_enabled, true);
        return 0;
 }
 
 
        WRITE_ONCE(ctx->napi_busy_poll_to, 0);
        WRITE_ONCE(ctx->napi_prefer_busy_poll, false);
+       WRITE_ONCE(ctx->napi_enabled, false);
        return 0;
 }
 
 {
        iowq->napi_prefer_busy_poll = READ_ONCE(ctx->napi_prefer_busy_poll);
 
-       if (!(ctx->flags & IORING_SETUP_SQPOLL) && iowq->napi_busy_poll_to)
+       if (!(ctx->flags & IORING_SETUP_SQPOLL) && ctx->napi_enabled)
                io_napi_blocking_busy_loop(ctx, iowq);
 }