Loading drivers/mmc/card/block.c +12 −1 Original line number Diff line number Diff line Loading @@ -3580,7 +3580,7 @@ void mmc_blk_cmdq_complete_rq(struct request *rq) else if (mrq->data && mrq->data->error) err = mrq->data->error; if (err || cmdq_req->resp_err) { if ((err || cmdq_req->resp_err) && !cmdq_req->skip_err_handling) { pr_err("%s: %s: txfr error(%d)/resp_err(%d)\n", mmc_hostname(mrq->host), __func__, err, cmdq_req->resp_err); Loading Loading @@ -3617,6 +3617,17 @@ void mmc_blk_cmdq_complete_rq(struct request *rq) blk_end_request_all(rq, err); goto out; } /* * In case of error, cmdq_req->data.bytes_xfered is set to 0. * If we call blk_end_request() with nr_bytes as 0 then the request * never gets completed. So in case of error, to complete a request * with error we should use blk_end_request_all(). */ if (err && cmdq_req->skip_err_handling) { cmdq_req->skip_err_handling = false; blk_end_request_all(rq, err); goto out; } blk_end_request(rq, err, cmdq_req->data.bytes_xfered); Loading Loading
drivers/mmc/card/block.c +12 −1 Original line number Diff line number Diff line Loading @@ -3580,7 +3580,7 @@ void mmc_blk_cmdq_complete_rq(struct request *rq) else if (mrq->data && mrq->data->error) err = mrq->data->error; if (err || cmdq_req->resp_err) { if ((err || cmdq_req->resp_err) && !cmdq_req->skip_err_handling) { pr_err("%s: %s: txfr error(%d)/resp_err(%d)\n", mmc_hostname(mrq->host), __func__, err, cmdq_req->resp_err); Loading Loading @@ -3617,6 +3617,17 @@ void mmc_blk_cmdq_complete_rq(struct request *rq) blk_end_request_all(rq, err); goto out; } /* * In case of error, cmdq_req->data.bytes_xfered is set to 0. * If we call blk_end_request() with nr_bytes as 0 then the request * never gets completed. So in case of error, to complete a request * with error we should use blk_end_request_all(). */ if (err && cmdq_req->skip_err_handling) { cmdq_req->skip_err_handling = false; blk_end_request_all(rq, err); goto out; } blk_end_request(rq, err, cmdq_req->data.bytes_xfered); Loading