Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758165AbbDWO7Z (ORCPT ); Thu, 23 Apr 2015 10:59:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:32808 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964922AbbDWO7X (ORCPT ); Thu, 23 Apr 2015 10:59:23 -0400 From: Jeff Moyer To: Chao Yu Cc: axboe@kernel.dk, linux-kernel@vger.kernel.org Subject: Re: [PATCH] elevator: fix double release for elevator module References: <005701d07da7$364d9950$a2e8cbf0$@samsung.com> X-PGP-KeyID: 1F78E1B4 X-PGP-CertKey: F6FE 280D 8293 F72C 65FD 5A58 1FF8 A7CA 1F78 E1B4 X-PCLoadLetter: What the f**k does that mean? Date: Thu, 23 Apr 2015 10:59:21 -0400 In-Reply-To: <005701d07da7$364d9950$a2e8cbf0$@samsung.com> (Chao Yu's message of "Thu, 23 Apr 2015 17:23:18 +0800") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1586 Lines: 51 Chao Yu writes: > Our issue is descripted in below call path: > ->elevator_init > ->elevator_init_fn > ->{cfq,deadline,noop}_init_queue > ->elevator_alloc > ->kzalloc_node > fail to call kzalloc_node and then put module in elevator_alloc; > fail to call elevator_init_fn and then put module again in elevator_init. > > Remove elevator_put invoking in error path of elevator_alloc to avoid > double release issue. > > Signed-off-by: Chao Yu > --- > block/elevator.c | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/block/elevator.c b/block/elevator.c > index d146a5e..8985038 100644 > --- a/block/elevator.c > +++ b/block/elevator.c > @@ -157,7 +157,7 @@ struct elevator_queue *elevator_alloc(struct request_queue *q, > > eq = kzalloc_node(sizeof(*eq), GFP_KERNEL, q->node); > if (unlikely(!eq)) > - goto err; > + return NULL; > > eq->type = e; > kobject_init(&eq->kobj, &elv_ktype); > @@ -165,9 +165,6 @@ struct elevator_queue *elevator_alloc(struct request_queue *q, > hash_init(eq->hash); > > return eq; > -err: > - elevator_put(e); > - return NULL; > } > EXPORT_SYMBOL(elevator_alloc); You could have posted the two patches together, as they are related. Anyway, looks good to me. Reviewed-by: Jeff Moyer -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/