Messages in this thread | | | From | Jeff Moyer <> | Subject | Re: [PATCH] elevator: fix double release for elevator module | Date | Thu, 23 Apr 2015 10:59:21 -0400 |
| |
Chao Yu <chao2.yu@samsung.com> 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 <chao2.yu@samsung.com> > --- > 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 <jmoyer@redhat.com>
| |