From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755630Ab2AIHsA (ORCPT ); Mon, 9 Jan 2012 02:48:00 -0500 Received: from e2.ny.us.ibm.com ([32.97.182.142]:32860 "EHLO e2.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755537Ab2AIHr7 (ORCPT ); Mon, 9 Jan 2012 02:47:59 -0500 Date: Mon, 9 Jan 2012 13:18:00 +0530 From: Ananth N Mavinakayanahalli To: lkml , stable@kernel.org Cc: Jim Keniston , Masami Hiramatsu Subject: [PATCH] kprobes: initialize before using a hlist Message-ID: <20120109074800.GC20666@in.ibm.com> Reply-To: ananth@in.ibm.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.17 (2007-11-01) x-cbid: 12010907-5112-0000-0000-000003DAAA03 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ananth N Mavinakayanahalli Commit ef53d9c5e introduced a bug where we can potentially leak kretprobe_instances since we initialize a hlist head after having used it. Initialize the hlist head before using it. Reported by: Jim Keniston Signed-off-by: Ananth N Mavinakayanahalli CC: Masami Hiramatsu CC: --- kernel/kprobes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux-3.2/kernel/kprobes.c =================================================================== --- linux-3.2.orig/kernel/kprobes.c +++ linux-3.2/kernel/kprobes.c @@ -1077,6 +1077,7 @@ void __kprobes kprobe_flush_task(struct /* Early boot. kretprobe_table_locks not yet initialized. */ return; + INIT_HLIST_HEAD(&empty_rp); hash = hash_ptr(tk, KPROBE_HASH_BITS); head = &kretprobe_inst_table[hash]; kretprobe_table_lock(hash, &flags); @@ -1085,7 +1086,6 @@ void __kprobes kprobe_flush_task(struct recycle_rp_inst(ri, &empty_rp); } kretprobe_table_unlock(hash, &flags); - INIT_HLIST_HEAD(&empty_rp); hlist_for_each_entry_safe(ri, node, tmp, &empty_rp, hlist) { hlist_del(&ri->hlist); kfree(ri);