Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753325AbbDXCJZ (ORCPT ); Thu, 23 Apr 2015 22:09:25 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:32418 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753168AbbDXCJW (ORCPT ); Thu, 23 Apr 2015 22:09:22 -0400 X-AuditID: cbfee61a-f79516d000006302-b8-5539a5d0fc9b From: Chao Yu To: axboe@kernel.dk Cc: linux-kernel@vger.kernel.org Subject: [PATCH] elevator: fix memory leak in ->elevator_init_fn Date: Fri, 24 Apr 2015 10:08:43 +0800 Message-id: <00c701d07e33$acbca360$0635ea20$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-index: AdB+Mue1NVGAX0ULTlKtBubljw7vfw== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrLLMWRmVeSWpSXmKPExsVy+t9jAd0LSy1DDRYusbRYfbefzeLyrjls Dkwel8+WenzeJBfAFMVlk5Kak1mWWqRvl8CV8fgsT8FlnoqWeRuYGhh3cnUxcnJICJhI7H67 mBHCFpO4cG89WxcjF4eQwCJGiUdfjjNCOK8YJdbv/cUKUsUmoCKxvOM/E4gtIiAssb+jlQXE ZhZQkPh1bxNYjbCAg8SDbWfAalgEVCXOzbzADmLzClhKzDp1hRHCFpT4MfkeVK+WxPqdx5kg bHmJzWveMkNcpCCx4+xroHoOoF16EtvvVkOUiEtsPHKLZQKjwCwkk2YhmTQLyaRZSFoWMLKs YhRNLUguKE5KzzXUK07MLS7NS9dLzs/dxAgO1GdSOxhXNlgcYhTgYFTi4XWYZRkqxJpYVlyZ e4hRgoNZSYTXaDJQiDclsbIqtSg/vqg0J7X4EKM0B4uSOO8cXblQIYH0xJLU7NTUgtQimCwT B6dUA2O4vdb+9G2Mdx/5d8y6d5apk49h9eypX6tb2lfzzFvg+y/0Q6RTYYpyL7uYv9w1rfR+ wVnZ7p/TW1Ke7tOYKnXnWfD8h+/DP5ZE+W/w13H7yH1/5S6PT/fmGatkx/Pq8T8Nu38p6uJV x+mMKXMmJxtd3Rmb+nfjuYzZjNPf/j14P4W5WqPO9I8SS3FGoqEWc1FxIgDYEiUBUAIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1813 Lines: 56 In ->elevator_init_fn, if we fail to call kzalloc_node, we should release elevator queue space which is allocated previously, otherwise it will cause memory leak. Signed-off-by: Chao Yu --- block/cfq-iosched.c | 1 + block/deadline-iosched.c | 1 + block/noop-iosched.c | 1 + 3 files changed, 3 insertions(+) diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 5da8e6e..2793fb7 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -4391,6 +4391,7 @@ static int cfq_init_queue(struct request_queue *q, struct elevator_type *e) cfqd = kzalloc_node(sizeof(*cfqd), GFP_KERNEL, q->node); if (!cfqd) { kobject_put(&eq->kobj); + kfree(eq); return -ENOMEM; } eq->elevator_data = cfqd; diff --git a/block/deadline-iosched.c b/block/deadline-iosched.c index a753df2..bc6d7d9 100644 --- a/block/deadline-iosched.c +++ b/block/deadline-iosched.c @@ -349,6 +349,7 @@ static int deadline_init_queue(struct request_queue *q, struct elevator_type *e) dd = kzalloc_node(sizeof(*dd), GFP_KERNEL, q->node); if (!dd) { kobject_put(&eq->kobj); + kfree(eq); return -ENOMEM; } eq->elevator_data = dd; diff --git a/block/noop-iosched.c b/block/noop-iosched.c index 3de89d4..1399c78 100644 --- a/block/noop-iosched.c +++ b/block/noop-iosched.c @@ -71,6 +71,7 @@ static int noop_init_queue(struct request_queue *q, struct elevator_type *e) nd = kmalloc_node(sizeof(*nd), GFP_KERNEL, q->node); if (!nd) { kobject_put(&eq->kobj); + kfree(eq); return -ENOMEM; } eq->elevator_data = nd; -- 2.3.3 -- 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/