[dm-devel] [PATCH 1/7] blk-mq: fix use of incorrect goto label in blk_mq_init_queue error path

Mike Snitzer snitzer at redhat.com
Fri Mar 13 03:29:23 UTC 2015


On Thu, Mar 12 2015 at  9:51am -0400,
Mike Snitzer <snitzer at redhat.com> wrote:

> On Thu, Mar 12 2015 at  3:48am -0400,
> Ming Lei <tom.leiming at gmail.com> wrote:
> 
> > On Thu, Mar 12, 2015 at 11:56 AM, Mike Snitzer <snitzer at redhat.com> wrote:
> > > If percpu_ref_init() fails the 'err_hctxs' label should be used instead
> > > of 'err_map'.
> > >
> > > Signed-off-by: Mike Snitzer <snitzer at redhat.com>
> > > ---
> > >  block/blk-mq.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/block/blk-mq.c b/block/blk-mq.c
> > > index 4f4bea2..459840c 100644
> > > --- a/block/blk-mq.c
> > > +++ b/block/blk-mq.c
> > > @@ -1938,7 +1938,7 @@ struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *set)
> > >          */
> > >         if (percpu_ref_init(&q->mq_usage_counter, blk_mq_usage_counter_release,
> > >                             PERCPU_REF_INIT_ATOMIC, GFP_KERNEL))
> > > -               goto err_map;
> > > +               goto err_hctxs;
> > 
> > If it is changed to 'goto err_hctxs', percpu_ref_init() need to
> > move before blk_alloc_queue_node(), otherwise just 'goto err_hw'
> > is enough, but the former is better.
> 
> Yes, you're correct.  Patch 2 happened to eliminate this problem.  But
> I'll get it fixed up and post v2.

Actually, percpu_ref_init clearly cannot go before blk_alloc_queue_node
since percpu_ref_init deferences q.  (buildbot just emailed complaining
about crashes with my v2 patch).  I didn't test this 1/7 patch in
isolation but should have -- when 2/7 is applied the problem goes away.

v3 of these first 2 patches will be inbound shortly.




More information about the dm-devel mailing list