On 9 October 2018 at 09:18, Avri Altman <Avri.Altman@xxxxxxx> wrote: >> @@ -1370,6 +1370,16 @@ static void mmc_blk_data_prep(struct mmc_queue >> *mq, struct mmc_queue_req *mqrq, >> brq->data.blocks = card->host->max_blk_count; >> >> if (brq->data.blocks > 1) { >> + /* >> + * Some SD cards in SPI mode return a CRC error or even lock >> up >> + * completely when trying to read the last block using a >> + * multiblock read command. >> + */ >> + if (mmc_host_is_spi(card->host) && (rq_data_dir(req) == >> READ) && >> + (blk_rq_pos(req) + blk_rq_sectors(req) == >> + get_capacity(md->disk))) >> + brq->data.blocks--; >> + > data.blocks is being assigned about 4 times in this function. > Maybe do all that in a small wrapper, which might do that more effectively, > And document its logic? That seems to makes sense, however as a fix this is better (less changes). Let's do the cleanup on top. I have applied this for fixes and added a stable tag, thanks! Kind regards Uffe