From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755692AbcFGP1f (ORCPT ); Tue, 7 Jun 2016 11:27:35 -0400 Received: from mail.kernel.org ([198.145.29.136]:50374 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755674AbcFGP1e (ORCPT ); Tue, 7 Jun 2016 11:27:34 -0400 MIME-Version: 1.0 In-Reply-To: <20160607145736.GB28414@localhost.localdomain> References: <1465248119-17875-1-git-send-email-hch@lst.de> <1465248119-17875-2-git-send-email-hch@lst.de> <20160607145736.GB28414@localhost.localdomain> From: Ming Lin Date: Tue, 7 Jun 2016 08:27:29 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 1/8] blk-mq: add blk_mq_alloc_request_hctx To: Keith Busch Cc: Christoph Hellwig , Jens Axboe , linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, lkml , Ming Lin Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 7, 2016 at 7:57 AM, Keith Busch wrote: > On Mon, Jun 06, 2016 at 11:21:52PM +0200, Christoph Hellwig wrote: >> +struct request *blk_mq_alloc_request_hctx(struct request_queue *q, int rw, >> + unsigned int flags, unsigned int hctx_idx) >> +{ >> + struct blk_mq_hw_ctx *hctx; >> + struct blk_mq_ctx *ctx; >> + struct request *rq; >> + struct blk_mq_alloc_data alloc_data; >> + int ret; >> + >> + ret = blk_queue_enter(q, flags & BLK_MQ_REQ_NOWAIT); >> + if (ret) >> + return ERR_PTR(ret); >> + >> + hctx = q->queue_hw_ctx[hctx_idx]; > > We probably want to check 'if (hctx_idx < q->nr_hw_queues)' before > getting the hctx. Even if hctx_idx was origially valid, it's possible > (though unlikely) blk_queue_enter waits on reallocating h/w contexts, > which can make hctx_idx invalid. Yes, I'll update it.