@@ -697,6 +697,12 @@ static void coroutine_fn aio_read_response(void *opaque)
acb = aio_req->aiocb;
+ if (rsp.result != SD_RES_SUCCESS) {
+ acb->ret = -EIO;
+ error_report("%s", sd_strerror(rsp.result));
+ goto err;
+ }
+
switch (acb->aiocb_type) {
case AIOCB_WRITE_UDATA:
/* this coroutine context is no longer suitable for co_recv
@@ -736,11 +742,7 @@ static void coroutine_fn aio_read_response(void *opaque)
break;
}
- if (rsp.result != SD_RES_SUCCESS) {
- acb->ret = -EIO;
- error_report("%s", sd_strerror(rsp.result));
- }
-
+err:
free_aio_req(s, aio_req);
if (!acb->nr_pending) {
/*