On 13 July 2011 10:02, Jaehoon Chung <jh80.chung@xxxxxxxxxxx> wrote: > Hi. > > I send to mailing for [RFC] Kernel NULL pointer dereference. > This patch is fixed it. > > In similar case, when discard request, check condition and > performed mmc_blk_issue_rw_rq(mq, NULL) for ongoing async transfer. > > But When flush request, entered the mmc_blk_issue_flush() then return. > (then didn't complete ongoing aync transfer). > > I think that need to complete for ongoing aync transfer before flush request. > I did consider this when I added the check for discard but I didn't realize it is necessary for flush too. There is no real downside of completing the async request before flush in terms of performance anyway. Thanks for catching this bug. > @@ -1200,6 +1200,9 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) > else > ret = mmc_blk_issue_discard_rq(mq, req); > } else if (req && req->cmd_flags & REQ_FLUSH) { > + /* complete ongoing async transfer before issuing flush */ > + if (card->host->areq) > + mmc_blk_issue_rw_rq(mq, NULL); These 2 lines are the same as for the discard condition. I still prefer 2 lines of repeating code rather than one big if-statement covering both discard and flush. Acked-by: Per Forlin <per.forlin@xxxxxxxxxx> Regards, Per -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html