From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Carpenter Date: Wed, 07 Jan 2015 11:01:26 +0000 Subject: [patch] drm/tegra: bad irqsave/restore in tegra_dc_finish_page_flip() Message-Id: <20150107110126.GA14864@mwanda> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Thierry Reding Cc: Alexandre Courbot , Terje =?iso-8859-1?Q?Bergstr=F6m?= , Stephen Warren , kernel-janitors@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, Rob Herring , Grant Likely We can't save two values to the IRQ flags at the same time so the IRQs are not enabled at the end. This kind of bug is easy to miss in testing if the function is normally called with IRQs disabled so we wouldn't enable IRQs anyway. Signed-off-by: Dan Carpenter diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index ae26cc0..c746161 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -838,7 +838,7 @@ static void tegra_dc_finish_page_flip(struct tegra_dc *dc) bo = tegra_fb_get_plane(crtc->primary->fb, 0); - spin_lock_irqsave(&dc->lock, flags); + spin_lock(&dc->lock); /* check if new start address has been latched */ tegra_dc_writel(dc, WINDOW_A_SELECT, DC_CMD_DISPLAY_WINDOW_HEADER); @@ -846,7 +846,7 @@ static void tegra_dc_finish_page_flip(struct tegra_dc *dc) base = tegra_dc_readl(dc, DC_WINBUF_START_ADDR); tegra_dc_writel(dc, 0, DC_CMD_STATE_ACCESS); - spin_unlock_irqrestore(&dc->lock, flags); + spin_unlock(&dc->lock); if (base = bo->paddr + crtc->primary->fb->offsets[0]) { drm_crtc_send_vblank_event(crtc, dc->event); From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Carpenter Subject: [patch] drm/tegra: bad irqsave/restore in tegra_dc_finish_page_flip() Date: Wed, 7 Jan 2015 14:01:26 +0300 Message-ID: <20150107110126.GA14864@mwanda> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: Alexandre Courbot , Terje =?iso-8859-1?Q?Bergstr=F6m?= , Stephen Warren , kernel-janitors@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, Rob Herring , Grant Likely List-Id: linux-tegra@vger.kernel.org V2UgY2FuJ3Qgc2F2ZSB0d28gdmFsdWVzIHRvIHRoZSBJUlEgZmxhZ3MgYXQgdGhlIHNhbWUgdGlt ZSBzbyB0aGUgSVJRcwphcmUgbm90IGVuYWJsZWQgYXQgdGhlIGVuZC4gIFRoaXMga2luZCBvZiBi dWcgaXMgZWFzeSB0byBtaXNzIGluIHRlc3RpbmcKaWYgdGhlIGZ1bmN0aW9uIGlzIG5vcm1hbGx5 IGNhbGxlZCB3aXRoIElSUXMgZGlzYWJsZWQgc28gd2Ugd291bGRuJ3QKZW5hYmxlIElSUXMgYW55 d2F5LgoKU2lnbmVkLW9mZi1ieTogRGFuIENhcnBlbnRlciA8ZGFuLmNhcnBlbnRlckBvcmFjbGUu Y29tPgoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jIGIvZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2RjLmMKaW5kZXggYWUyNmNjMC4uYzc0NjE2MSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMK QEAgLTgzOCw3ICs4MzgsNyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9kY19maW5pc2hfcGFnZV9mbGlw KHN0cnVjdCB0ZWdyYV9kYyAqZGMpCiAKIAlibyA9IHRlZ3JhX2ZiX2dldF9wbGFuZShjcnRjLT5w cmltYXJ5LT5mYiwgMCk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGMtPmxvY2ssIGZsYWdzKTsK KwlzcGluX2xvY2soJmRjLT5sb2NrKTsKIAogCS8qIGNoZWNrIGlmIG5ldyBzdGFydCBhZGRyZXNz IGhhcyBiZWVuIGxhdGNoZWQgKi8KIAl0ZWdyYV9kY193cml0ZWwoZGMsIFdJTkRPV19BX1NFTEVD VCwgRENfQ01EX0RJU1BMQVlfV0lORE9XX0hFQURFUik7CkBAIC04NDYsNyArODQ2LDcgQEAgc3Rh dGljIHZvaWQgdGVncmFfZGNfZmluaXNoX3BhZ2VfZmxpcChzdHJ1Y3QgdGVncmFfZGMgKmRjKQog CWJhc2UgPSB0ZWdyYV9kY19yZWFkbChkYywgRENfV0lOQlVGX1NUQVJUX0FERFIpOwogCXRlZ3Jh X2RjX3dyaXRlbChkYywgMCwgRENfQ01EX1NUQVRFX0FDQ0VTUyk7CiAKLQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZkYy0+bG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrKCZkYy0+bG9jayk7CiAK IAlpZiAoYmFzZSA9PSBiby0+cGFkZHIgKyBjcnRjLT5wcmltYXJ5LT5mYi0+b2Zmc2V0c1swXSkg ewogCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBkYy0+ZXZlbnQpOwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=