From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King - ARM Linux admin Subject: Re: [PATCHv8 1/2] drm: tda998x: use cec_notifier_conn_(un)register Date: Wed, 16 Oct 2019 17:14:17 +0100 Message-ID: <20191016161417.GX25745@shell.armlinux.org.uk> References: <20191016133916.21475-1-hverkuil-cisco@xs4all.nl> <20191016133916.21475-2-hverkuil-cisco@xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:3201:214:fdff:fe10:1be6]) by gabe.freedesktop.org (Postfix) with ESMTPS id CFE936E9A6 for ; Wed, 16 Oct 2019 16:23:29 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191016133916.21475-2-hverkuil-cisco@xs4all.nl> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans Verkuil Cc: Dariusz Marcinkiewicz , Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBPY3QgMTYsIDIwMTkgYXQgMDM6Mzk6MTVQTSArMDIwMCwgSGFucyBWZXJrdWlsIHdy b3RlOgo+IEZyb206IERhcml1c3ogTWFyY2lua2lld2ljeiA8ZGFyZWttQGdvb2dsZS5jb20+Cj4g Cj4gVXNlIHRoZSBuZXcgY2VjX25vdGlmaWVyX2Nvbm5fKHVuKXJlZ2lzdGVyKCkgZnVuY3Rpb25z IHRvCj4gKHVuKXJlZ2lzdGVyIHRoZSBub3RpZmllciBmb3IgdGhlIEhETUkgY29ubmVjdG9yLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IERhcml1c3ogTWFyY2lua2lld2ljeiA8ZGFyZWttQGdvb2dsZS5j b20+Cj4gU2lnbmVkLW9mZi1ieTogSGFucyBWZXJrdWlsIDxodmVya3VpbC1jaXNjb0B4czRhbGwu bmw+CgpQbGVhc2UgZXhwbGFpbiBpbiBkZXRhaWwgd2hhdCB0aGlzIG11dGV4IGFjdHVhbGx5IGFj aGlldmVzLgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2kyYy90ZGE5OTh4X2Rydi5jIHwgMjEg KysrKysrKysrKysrKysrKy0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTJjL3Rk YTk5OHhfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL3RkYTk5OHhfZHJ2LmMKPiBpbmRleCA4 NGM2ZDRjOTFjNjUuLjgyNjJiNDRiNzc2ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTJjL3RkYTk5OHhfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL3RkYTk5OHhfZHJ2 LmMKPiBAQCAtODIsNiArODIsOSBAQCBzdHJ1Y3QgdGRhOTk4eF9wcml2IHsKPiAgCXU4IGF1ZGlv X3BvcnRfZW5hYmxlW0FVRElPX1JPVVRFX05VTV07Cj4gIAlzdHJ1Y3QgdGRhOTk1MF9nbHVlIGNl Y19nbHVlOwo+ICAJc3RydWN0IGdwaW9fZGVzYyAqY2FsaWI7Cj4gKwo+ICsJLyogcHJvdGVjdCBj ZWNfbm90aWZ5ICovCj4gKwlzdHJ1Y3QgbXV0ZXggY2VjX25vdGlmeV9tdXRleDsKPiAgCXN0cnVj dCBjZWNfbm90aWZpZXIgKmNlY19ub3RpZnk7Cj4gIH07Cj4gIAo+IEBAIC04MDUsOCArODA4LDEx IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB0ZGE5OTh4X2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAq ZGF0YSkKPiAgCQkJCXRkYTk5OHhfZWRpZF9kZWxheV9zdGFydChwcml2KTsKPiAgCQkJfSBlbHNl IHsKPiAgCQkJCXNjaGVkdWxlX3dvcmsoJnByaXYtPmRldGVjdF93b3JrKTsKPiAtCQkJCWNlY19u b3RpZmllcl9zZXRfcGh5c19hZGRyKHByaXYtPmNlY19ub3RpZnksCj4gLQkJCQkJCSAgIENFQ19Q SFlTX0FERFJfSU5WQUxJRCk7Cj4gKwo+ICsJCQkJbXV0ZXhfbG9jaygmcHJpdi0+Y2VjX25vdGlm eV9tdXRleCk7Cj4gKwkJCQljZWNfbm90aWZpZXJfcGh5c19hZGRyX2ludmFsaWRhdGUoCj4gKwkJ CQkJCXByaXYtPmNlY19ub3RpZnkpOwo+ICsJCQkJbXV0ZXhfdW5sb2NrKCZwcml2LT5jZWNfbm90 aWZ5X211dGV4KTsKPiAgCQkJfQo+ICAKPiAgCQkJaGFuZGxlZCA9IHRydWU7Cj4gQEAgLTE3OTAs OCArMTc5NiwxMCBAQCBzdGF0aWMgdm9pZCB0ZGE5OTh4X2Rlc3Ryb3koc3RydWN0IGRldmljZSAq ZGV2KQo+ICAKPiAgCWkyY191bnJlZ2lzdGVyX2RldmljZShwcml2LT5jZWMpOwo+ICAKPiAtCWlm IChwcml2LT5jZWNfbm90aWZ5KQo+IC0JCWNlY19ub3RpZmllcl9wdXQocHJpdi0+Y2VjX25vdGlm eSk7Cj4gKwltdXRleF9sb2NrKCZwcml2LT5jZWNfbm90aWZ5X211dGV4KTsKPiArCWNlY19ub3Rp Zmllcl9jb25uX3VucmVnaXN0ZXIocHJpdi0+Y2VjX25vdGlmeSk7Cj4gKwlwcml2LT5jZWNfbm90 aWZ5ID0gTlVMTDsKPiArCW11dGV4X3VubG9jaygmcHJpdi0+Y2VjX25vdGlmeV9tdXRleCk7CgpC eSB0aGUgdGltZSB3ZSBnZXQgaGVyZToKCjEpIFRoZSBpbnRlcnJ1cHQgaGFzIGJlZW4gZnJlZWQg KHdoaWNoIGlzIGEgc3luY2hyb25vdXMgb3BlcmF0aW9uKQogICB0ZGE5OTh4X2lycV90aHJlYWQo KSBjYW4ndCBiZSBjYWxsZWQgYW5kIGNhbid0IGJlIHJ1bm5pbmcsIGFuZAogICB0aGVyZWZvcmUg Y2VjX25vdGlmaWVyX3BoeXNfYWRkcl9pbnZhbGlkYXRlKCkgYWxzbyBjYW4ndCBiZSBjYWxsZWQK ICAgb3IgYmUgcnVubmluZy4KMikgWW91IGRvbid0IHRvdWNoIHRoZSBjZWNfbm90aWZpZXJfc2V0 X3BoeXNfYWRkcl9mcm9tX2VkaWQoKSBzaXRlOwogICBpZiB0aGVyZSdzIGFueSBjYXNlIHRoYXQg X21pZ2h0XyBwb3NzaWJseSBjb25mbGljdCwgaXQgaXMgdGhhdCBvbmUuCjMpIHRkYTk5OHhfZGVz dHJveSgpIGFuZCB0ZGE5OTh4X2NyZWF0ZSgpIGNhbid0IGJlIGNhbGxlZCBjb25jdXJyZW50bHkK ICAgaW4gYW55IGNhc2U7IHRoZSBkcml2ZXIgbW9kZWwgZ3VhcmFudGVlcyB0aGF0IC0+cHJvYmUg YW5kIC0+cmVtb3ZlCiAgIGZvciB0aGUgc2FtZSBkZXZpY2UgYXJlIHNlcmlhbGlzZWQuCgo+ICB9 Cj4gIAo+ICBzdGF0aWMgaW50IHRkYTk5OHhfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldikKPiBA QCAtMTgxMiw2ICsxODIwLDcgQEAgc3RhdGljIGludCB0ZGE5OTh4X2NyZWF0ZShzdHJ1Y3QgZGV2 aWNlICpkZXYpCj4gIAltdXRleF9pbml0KCZwcml2LT5tdXRleCk7CS8qIHByb3RlY3QgdGhlIHBh Z2UgYWNjZXNzICovCj4gIAltdXRleF9pbml0KCZwcml2LT5hdWRpb19tdXRleCk7IC8qIHByb3Rl Y3QgYWNjZXNzIGZyb20gYXVkaW8gdGhyZWFkICovCj4gIAltdXRleF9pbml0KCZwcml2LT5lZGlk X211dGV4KTsKPiArCW11dGV4X2luaXQoJnByaXYtPmNlY19ub3RpZnlfbXV0ZXgpOwo+ICAJSU5J VF9MSVNUX0hFQUQoJnByaXYtPmJyaWRnZS5saXN0KTsKPiAgCWluaXRfd2FpdHF1ZXVlX2hlYWQo JnByaXYtPmVkaWRfZGVsYXlfd2FpdHEpOwo+ICAJdGltZXJfc2V0dXAoJnByaXYtPmVkaWRfZGVs YXlfdGltZXIsIHRkYTk5OHhfZWRpZF9kZWxheV9kb25lLCAwKTsKPiBAQCAtMTkxNiw3ICsxOTI1 LDkgQEAgc3RhdGljIGludCB0ZGE5OTh4X2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIAkJ Y2VjX3dyaXRlKHByaXYsIFJFR19DRUNfUlhTSFBESU5URU5BLCBDRUNfUlhTSFBETEVWX0hQRCk7 Cj4gIAl9Cj4gIAo+IC0JcHJpdi0+Y2VjX25vdGlmeSA9IGNlY19ub3RpZmllcl9nZXQoZGV2KTsK PiArCW11dGV4X2xvY2soJnByaXYtPmNlY19ub3RpZnlfbXV0ZXgpOwo+ICsJcHJpdi0+Y2VjX25v dGlmeSA9IGNlY19ub3RpZmllcl9jb25uX3JlZ2lzdGVyKGRldiwgTlVMTCwgTlVMTCk7Cj4gKwlt dXRleF91bmxvY2soJnByaXYtPmNlY19ub3RpZnlfbXV0ZXgpOwoKYW5kOgoKNCkgcHJpdi0+Y2Vj X25vdGlmeSB3aWxsIGJlIE5VTEwgaGVyZSB1bnRpbCBzdWNoIHRpbWUgdGhhdAogICBjZWNfbm90 aWZpZXJfY29ubl9yZWdpc3RlcigpIGhhcyByZXR1cm5lZC4gIElmIHRoZSBtdXRleCBpcyB0cnlp bmcKICAgdG8gcHJvdGVjdCBzb21ldGhpbmcsIGl0J3MgdmVyeSB1bmNsZWFyIHdoYXQgaXQgaXMu CiAgIApUcnlpbmcgdG8gZ3Vlc3Mgd2hhdCBpdCdzIHByb3RlY3RpbmcgYWdhaW5zdDoKCi0gSXMg aXQgcHJvdGVjdGluZyBhZ2FpbnN0IE5VTEwgcHJpdi0+Y2VjX25vdGlmeT8gIE5vLCBiZWNhdXNl IGl0IGNhbgogIGJlIE5VTEwganVzdCBiZWZvcmUgd2UgdGFrZSB0aGUgbG9jay4KLSBJcyBpdCBw cm90ZWN0aW5nIHRoZSBpbnRlcm5hbHMgb2YgY2VjX25vdGlmaWVyX2Nvbm5fcmVnaXN0ZXIoKQog IGFnYWluc3QgdGhlIG90aGVyIGNhbGxzIC0gbm8sIGJlY2F1c2UgcHJpdi0+Y2VjX25vdGlmeSB3 aWxsIGJlIE5VTEwKICB1bnRpbCB0aGUgZnVuY3Rpb24gaGFzIGZpbmlzaGVkLgotIElzIGl0IHBy b3RlY3RpbmcgdGhlIHdyaXRlIHRvIHByaXYtPmNlY19ub3RpZnk/ICBNYXliZSwgYnV0IHRoYXQK ICBkb2Vzbid0IG5lZWQgYW55IHByb3RlY3Rpb24gLSBhcmNoaXRlY3R1cmVzIGFyZSBzaW5nbGUt Y29weSBhdG9taWMsCiAgd2hpY2ggbWVhbnMgdGhhdCBhIHBvaW50ZXIgaXMgZWl0aGVyIHdyaXR0 ZW4gb3IgaXQgaXMgbm90IHdyaXR0ZW4uCiAgVGhlcmVmb3JlLCBpdCB3aWxsIGVpdGhlciBiZSBO VUxMICh0aGUgc3RhdGUgYmVmb3JlIHRoZSBjYWxsIGlzIG1hZGUpCiAgb3IgaXQgd2lsbCBiZSBz ZXQgY29ycmVjdGx5IChhZnRlciB0aGUgY2FsbCBoYXMgY29tcGxldGVkLikKClNvLCBhbGwgaW4g YWxsLCBJIGRvbid0IHNlZSB3aGF0IHRoaXMgbG9jayBpcyBkb2luZywgYW5kIEkgdGhpbmsgaXQK c2hvdWxkIGJlIHJlbW92ZWQuCgpJZiBpdCdzIG5lY2Vzc2FyeSBmb3IgYSBmdXR1cmUgY2hhbmdl ICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBtZXJnZWQpCnRoZW4gdGhlIGxvY2sgc2hvdWxkIGJl IHBhcnQgb2YgdGhhdCBmdXR1cmUgY2hhbmdlLCBiZWNhdXNlIHRoZSBjaGFuZ2UKcHJvcG9zZWQg YnkgdGhpcyBwYXRjaCBjZXJ0YWlubHkgZG9lcyBub3QgbmVlZCBpdC4KClRoYW5rcy4KCi0tIApS TUsncyBQYXRjaCBzeXN0ZW06IGh0dHBzOi8vd3d3LmFybWxpbnV4Lm9yZy51ay9kZXZlbG9wZXIv cGF0Y2hlcy8KRlRUQyBicm9hZGJhbmQgZm9yIDAuOG1pbGUgbGluZSBpbiBzdWJ1cmJpYTogc3lu YyBhdCAxMi4xTWJwcyBkb3duIDYyMmticHMgdXAKQWNjb3JkaW5nIHRvIHNwZWVkdGVzdC5uZXQ6 IDExLjlNYnBzIGRvd24gNTAwa2JwcyB1cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F40FFA3728 for ; Wed, 16 Oct 2019 16:14:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D30622067D for ; Wed, 16 Oct 2019 16:14:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=armlinux.org.uk header.i=@armlinux.org.uk header.b="wl9CfRy+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406111AbfJPQO2 (ORCPT ); Wed, 16 Oct 2019 12:14:28 -0400 Received: from pandora.armlinux.org.uk ([78.32.30.218]:59716 "EHLO pandora.armlinux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728343AbfJPQO2 (ORCPT ); Wed, 16 Oct 2019 12:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=IFYK7jK230rvg5UAMhMlJiijWiZK0m7AA2vFJ0b/3RQ=; b=wl9CfRy+GecOyLlv0+Cc6lOfr Wn2ihCTsxGMMTXyMZo9JIjTpppFZ6nCr2+5+QluyFO3g1On79CCwMH7W5sf5adk5/AXNvXrybaES2 qEe1Ma1wnUFNVPzcmBktcOc889Az/vuGD71sl7B0bsWNQ1j8nrr9LTBqaIERz6lXtGPCybXjr431S Keh1QCy3lly6NXm21lGiD4scj7KHmsxWdAkQF4WPseoDz07yB9nyn3qHWY4TMXI2SDyz50g+mKqJS uElf2qNxAyjMqrpzz7NPqn9jWGScZq8+C4Z8jMgg/r3t0yF+eWdouqiKDNH1HmLaMmYstI6eC9qob /EsmPyerg==; Received: from shell.armlinux.org.uk ([2001:4d48:ad52:3201:5054:ff:fe00:4ec]:43798) by pandora.armlinux.org.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1iKlwL-0003S0-18; Wed, 16 Oct 2019 17:14:21 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.92) (envelope-from ) id 1iKlwH-0007HP-3H; Wed, 16 Oct 2019 17:14:17 +0100 Date: Wed, 16 Oct 2019 17:14:17 +0100 From: Russell King - ARM Linux admin To: Hans Verkuil Cc: linux-media@vger.kernel.org, Dariusz Marcinkiewicz , dri-devel@lists.freedesktop.org, Daniel Vetter , Laurent Pinchart Subject: Re: [PATCHv8 1/2] drm: tda998x: use cec_notifier_conn_(un)register Message-ID: <20191016161417.GX25745@shell.armlinux.org.uk> References: <20191016133916.21475-1-hverkuil-cisco@xs4all.nl> <20191016133916.21475-2-hverkuil-cisco@xs4all.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20191016133916.21475-2-hverkuil-cisco@xs4all.nl> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org On Wed, Oct 16, 2019 at 03:39:15PM +0200, Hans Verkuil wrote: > From: Dariusz Marcinkiewicz > > Use the new cec_notifier_conn_(un)register() functions to > (un)register the notifier for the HDMI connector. > > Signed-off-by: Dariusz Marcinkiewicz > Signed-off-by: Hans Verkuil Please explain in detail what this mutex actually achieves. > --- > drivers/gpu/drm/i2c/tda998x_drv.c | 21 ++++++++++++++++----- > 1 file changed, 16 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c > index 84c6d4c91c65..8262b44b776e 100644 > --- a/drivers/gpu/drm/i2c/tda998x_drv.c > +++ b/drivers/gpu/drm/i2c/tda998x_drv.c > @@ -82,6 +82,9 @@ struct tda998x_priv { > u8 audio_port_enable[AUDIO_ROUTE_NUM]; > struct tda9950_glue cec_glue; > struct gpio_desc *calib; > + > + /* protect cec_notify */ > + struct mutex cec_notify_mutex; > struct cec_notifier *cec_notify; > }; > > @@ -805,8 +808,11 @@ static irqreturn_t tda998x_irq_thread(int irq, void *data) > tda998x_edid_delay_start(priv); > } else { > schedule_work(&priv->detect_work); > - cec_notifier_set_phys_addr(priv->cec_notify, > - CEC_PHYS_ADDR_INVALID); > + > + mutex_lock(&priv->cec_notify_mutex); > + cec_notifier_phys_addr_invalidate( > + priv->cec_notify); > + mutex_unlock(&priv->cec_notify_mutex); > } > > handled = true; > @@ -1790,8 +1796,10 @@ static void tda998x_destroy(struct device *dev) > > i2c_unregister_device(priv->cec); > > - if (priv->cec_notify) > - cec_notifier_put(priv->cec_notify); > + mutex_lock(&priv->cec_notify_mutex); > + cec_notifier_conn_unregister(priv->cec_notify); > + priv->cec_notify = NULL; > + mutex_unlock(&priv->cec_notify_mutex); By the time we get here: 1) The interrupt has been freed (which is a synchronous operation) tda998x_irq_thread() can't be called and can't be running, and therefore cec_notifier_phys_addr_invalidate() also can't be called or be running. 2) You don't touch the cec_notifier_set_phys_addr_from_edid() site; if there's any case that _might_ possibly conflict, it is that one. 3) tda998x_destroy() and tda998x_create() can't be called concurrently in any case; the driver model guarantees that ->probe and ->remove for the same device are serialised. > } > > static int tda998x_create(struct device *dev) > @@ -1812,6 +1820,7 @@ static int tda998x_create(struct device *dev) > mutex_init(&priv->mutex); /* protect the page access */ > mutex_init(&priv->audio_mutex); /* protect access from audio thread */ > mutex_init(&priv->edid_mutex); > + mutex_init(&priv->cec_notify_mutex); > INIT_LIST_HEAD(&priv->bridge.list); > init_waitqueue_head(&priv->edid_delay_waitq); > timer_setup(&priv->edid_delay_timer, tda998x_edid_delay_done, 0); > @@ -1916,7 +1925,9 @@ static int tda998x_create(struct device *dev) > cec_write(priv, REG_CEC_RXSHPDINTENA, CEC_RXSHPDLEV_HPD); > } > > - priv->cec_notify = cec_notifier_get(dev); > + mutex_lock(&priv->cec_notify_mutex); > + priv->cec_notify = cec_notifier_conn_register(dev, NULL, NULL); > + mutex_unlock(&priv->cec_notify_mutex); and: 4) priv->cec_notify will be NULL here until such time that cec_notifier_conn_register() has returned. If the mutex is trying to protect something, it's very unclear what it is. Trying to guess what it's protecting against: - Is it protecting against NULL priv->cec_notify? No, because it can be NULL just before we take the lock. - Is it protecting the internals of cec_notifier_conn_register() against the other calls - no, because priv->cec_notify will be NULL until the function has finished. - Is it protecting the write to priv->cec_notify? Maybe, but that doesn't need any protection - architectures are single-copy atomic, which means that a pointer is either written or it is not written. Therefore, it will either be NULL (the state before the call is made) or it will be set correctly (after the call has completed.) So, all in all, I don't see what this lock is doing, and I think it should be removed. If it's necessary for a future change (which may or may not be merged) then the lock should be part of that future change, because the change proposed by this patch certainly does not need it. Thanks. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up