From patchwork Wed Mar 11 17:59:40 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nishanth Menon X-Patchwork-Id: 11179 X-Patchwork-Delegate: khilman@deeprootsystems.com Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n2BHxlXR014478 for ; Wed, 11 Mar 2009 17:59:48 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753401AbZCKR7r (ORCPT ); Wed, 11 Mar 2009 13:59:47 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753356AbZCKR7r (ORCPT ); Wed, 11 Mar 2009 13:59:47 -0400 Received: from mail-ew0-f177.google.com ([209.85.219.177]:34580 "EHLO mail-ew0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752685AbZCKR7q (ORCPT ); Wed, 11 Mar 2009 13:59:46 -0400 Received: by ewy25 with SMTP id 25so100438ewy.37 for ; Wed, 11 Mar 2009 10:59:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=B5/+cTnRLPB/E96diRxZThmPdsp/OaROUKq742vrqTc=; b=bPzsWdhzPZ9JCZIYOfVnqrZ/WLVjL/nOHnthC1yMvditxYUMWbewkHFDTSfVEfsLgj jsYZEzv1Wiy8AUyipExjUK4MhtPDStL5B619vY9Zks0uf/iQ2PaGxu3SevHmnuyWgcbg M6WZiIwN1x4cnZRpo5FfteU7n1HKK6M2UnRUM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=sfGEvXRRFymUJYqb4ZBq7INHQ1pIj7mwudQMH4cBLJyh/w/ZyIH7ESUITuOBFZtVj5 0splqMgglL0tplhZlaVMwKPZIF033jSkeQKDmUUIRRVpPGsN4DM5mYQMvDYrCqBFUDSY 8ED3Sg9iiapduDF5yXGKoY9SZ3umxbH31MtfY= Received: by 10.216.10.80 with SMTP id 58mr3556688weu.204.1236794382318; Wed, 11 Mar 2009 10:59:42 -0700 (PDT) Received: from ?192.89.6.113? (net-113.nrpn.net [192.89.6.113]) by mx.google.com with ESMTPS id f6sm163051nfh.40.2009.03.11.10.59.41 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 11 Mar 2009 10:59:42 -0700 (PDT) Message-ID: <49B7FC0C.9080408@gmail.com> Date: Wed, 11 Mar 2009 19:59:40 +0200 From: Nishanth Menon User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: "Woodruff, Richard" , ameya.palande@nokia.com CC: "Menon, Nishanth" , "linux-omap@vger.kernel.org" , ext Paul Walmsley , "Nayak, Rajendra" , "Gupta, Ramesh" Subject: [PATCH] OMAP:clock: missing list_del for clk_notifier_unregister References: <7A436F7769CA33409C6B44B358BFFF0CFF48FEA4@dlee02.ent.ti.com> <13B9B4C6EF24D648824FF11BE8967162037B763A5A@dlee02.ent.ti.com> <7A436F7769CA33409C6B44B358BFFF0CFF490055@dlee02.ent.ti.com> <13B9B4C6EF24D648824FF11BE8967162037B763B7D@dlee02.ent.ti.com> In-Reply-To: <13B9B4C6EF24D648824FF11BE8967162037B763B7D@dlee02.ent.ti.com> Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org From b30537e692ac7e72858479327935b16813ea3f56 Mon Sep 17 00:00:00 2001 From: Nishanth Menon Date: Wed, 11 Mar 2009 11:29:11 -0500 Subject: [PATCH] OMAP:clock: missing list_del for clk_notifier_unregister Apologies on the spam.. looks like my git-send-email needs a bit more tweaking :(.. sending from gmail.. clk_notifier_unregister should clean the list before freeing clock notifier, else clk_notifier_list is filled with dangling pointers Issue seen while repetative loading/unloading of bridgedriver Ref: http://marc.info/?t=123678326300002&r=1&w=2 Signed-off-by: Nishanth Menon --- arch/arm/plat-omap/clock.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) r = -ENOENT; diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index c8d9e96..523d1b0 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c @@ -725,8 +725,11 @@ int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb) * XXX ugh, layering violation. there should be some * support in the notifier code for this. */ - if (!cn->notifier_head.head) + if (!cn->notifier_head.head) { + /* Free up my clock node too */ + list_del(&cn->node); kfree(cn); + } } else {