From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 1/2] drm/mgag200: Fix error handling paths in fbdev driver Date: Thu, 17 Sep 2015 16:30:54 +0530 Message-ID: <1442487655-9690-1-git-send-email-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id BBD116E66D for ; Thu, 17 Sep 2015 04:01:06 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, mingo@kernel.org Cc: Daniel Vetter , linux-kernel@vger.kernel.org, Peter Zijlstra , Thomas Gleixner , Linus Torvalds , Sudip Mukherjee List-Id: dri-devel@lists.freedesktop.org U2V0IHVwIGVycm9yIGhhbmRsaW5nIGluIG1nYWcyMDBfZmJkZXZfaW5pdCBhbmQgbWdhZzIwMGZi X2NyZWF0ZSBzdWNoIHRoYXQKdGhleSByZWxlYXNlIHRoZSB0aGluZ3MgdGhleSBhbGxvY2F0ZSwg cmF0aGVyIHRoYW4gcmVseWluZyBvbiBzb21lb25lCmNhbGxpbmcgbWdhX2ZiZGV2X2Rlc3Ryb3ku CgpCYXNlZCBvbiBhIHBhdGNoIGJ5IFN1ZGlwIE11a2hlcmplZSA8c3VkaXBtLm11a2hlcmplZUBn bWFpbC5jb20+CgpMaW5rOiBodHRwOi8vbGttbC5rZXJuZWwub3JnL3IvNTVGNkU2OEQuODA3MDgw MEBjb2RlYXVyb3JhLm9yZwpSZXBvcnRlZC1ieTogSW5nbyBNb2xuYXIgPG1pbmdvQGtlcm5lbC5v cmc+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogRGF2ZSBB aXJsaWUgPGFpcmxpZWRAZ21haWwuY29tPgpDYzogRGF2aWQgQWlybGllIDxhaXJsaWVkQGxpbnV4 LmllPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpD YzogUGV0ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgpDYzogU3VkaXAgTXVraGVy amVlIDxzdWRpcG0ubXVraGVyamVlQGdtYWlsLmNvbT4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGds eEBsaW51dHJvbml4LmRlPgpDYzogZHJpLWRldmVsIDxkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnPgpTaWduZWQtb2ZmLWJ5OiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEu b3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZmIuYyB8IDMxICsrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25z KCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAw L21nYWcyMDBfZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZmIuYwppbmRl eCA4N2RlMTVlLi5iMzViNWIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9t Z2FnMjAwX2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9mYi5jCkBA IC0xODYsMTcgKzE4NiwxOSBAQCBzdGF0aWMgaW50IG1nYWcyMDBmYl9jcmVhdGUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmhlbHBlciwKIAogCXN5c3JhbSA9IHZtYWxsb2Moc2l6ZSk7CiAJaWYgKCFz eXNyYW0pCi0JCXJldHVybiAtRU5PTUVNOworCQlnb3RvIGVycl9zeXNyYW07CiAKIAlpbmZvID0g ZHJtX2ZiX2hlbHBlcl9hbGxvY19mYmkoaGVscGVyKTsKLQlpZiAoSVNfRVJSKGluZm8pKQotCQly ZXR1cm4gUFRSX0VSUihpbmZvKTsKKwlpZiAoSVNfRVJSKGluZm8pKSB7CisJCXJldCA9IFBUUl9F UlIoaW5mbyk7CisJCWdvdG8gZXJyX2FsbG9jX2ZiaTsKKwl9CiAKIAlpbmZvLT5wYXIgPSBtZmJk ZXY7CiAKIAlyZXQgPSBtZ2FnMjAwX2ZyYW1lYnVmZmVyX2luaXQoZGV2LCAmbWZiZGV2LT5tZmIs ICZtb2RlX2NtZCwgZ29iaik7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwkJZ290byBlcnJf ZnJhbWVidWZmZXJfaW5pdDsKIAogCW1mYmRldi0+c3lzcmFtID0gc3lzcmFtOwogCW1mYmRldi0+ c2l6ZSA9IHNpemU7CkBAIC0yMjUsNyArMjI3LDE3IEBAIHN0YXRpYyBpbnQgbWdhZzIwMGZiX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCiAJRFJNX0RFQlVHX0tNUygiYWxs b2NhdGVkICVkeCVkXG4iLAogCQkgICAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOworCiAJcmV0 dXJuIDA7CisKK2Vycl9mcmFtZWJ1ZmZlcl9pbml0OgorCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9m YmkoaGVscGVyKTsKK2Vycl9hbGxvY19mYmk6CisJdmZyZWUoc3lzcmFtKTsKK2Vycl9zeXNyYW06 CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoZ29iaik7CisKKwlyZXR1cm4g cmV0OwogfQogCiBzdGF0aWMgaW50IG1nYV9mYmRldl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCkBAIC0yNzYsMjMgKzI4OCwyNiBAQCBpbnQgbWdhZzIwMF9mYmRldl9pbml0KHN0cnVj dCBtZ2FfZGV2aWNlICptZGV2KQogCXJldCA9IGRybV9mYl9oZWxwZXJfaW5pdChtZGV2LT5kZXYs ICZtZmJkZXYtPmhlbHBlciwKIAkJCQkgbWRldi0+bnVtX2NydGMsIE1HQUcyMDBGQl9DT05OX0xJ TUlUKTsKIAlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCQlnb3RvIGVycl9mYl9oZWxwZXI7CiAK IAlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMoJm1mYmRldi0+ aGVscGVyKTsKIAlpZiAocmV0KQotCQlnb3RvIGZpbmk7CisJCWdvdG8gZXJyX2ZiX3NldHVwOwog CiAJLyogZGlzYWJsZSBhbGwgdGhlIHBvc3NpYmxlIG91dHB1dHMvY3J0Y3MgYmVmb3JlIGVudGVy aW5nIEtNUyBtb2RlICovCiAJZHJtX2hlbHBlcl9kaXNhYmxlX3VudXNlZF9mdW5jdGlvbnMobWRl di0+ZGV2KTsKIAogCXJldCA9IGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcoJm1mYmRldi0+ aGVscGVyLCBicHBfc2VsKTsKIAlpZiAocmV0KQotCQlnb3RvIGZpbmk7CisJCWdvdG8gZXJyX2Zi X3NldHVwOwogCiAJcmV0dXJuIDA7CiAKLWZpbmk6CitlcnJfZmJfc2V0dXA6CiAJZHJtX2ZiX2hl bHBlcl9maW5pKCZtZmJkZXYtPmhlbHBlcik7CitlcnJfZmJfaGVscGVyOgorCW1kZXYtPm1mYmRl diA9IE5VTEw7CisKIAlyZXR1cm4gcmV0OwogfQogCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlv biBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0 ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRpb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752078AbbIQLBJ (ORCPT ); Thu, 17 Sep 2015 07:01:09 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:55564 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751629AbbIQLBH (ORCPT ); Thu, 17 Sep 2015 07:01:07 -0400 From: Archit Taneja To: dri-devel@lists.freedesktop.org, mingo@kernel.org Cc: linux-kernel@vger.kernel.org, Archit Taneja , Daniel Vetter , Dave Airlie , David Airlie , Linus Torvalds , Peter Zijlstra , Sudip Mukherjee , Thomas Gleixner Subject: [PATCH 1/2] drm/mgag200: Fix error handling paths in fbdev driver Date: Thu, 17 Sep 2015 16:30:54 +0530 Message-Id: <1442487655-9690-1-git-send-email-architt@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Set up error handling in mgag200_fbdev_init and mgag200fb_create such that they release the things they allocate, rather than relying on someone calling mga_fbdev_destroy. Based on a patch by Sudip Mukherjee Link: http://lkml.kernel.org/r/55F6E68D.8070800@codeaurora.org Reported-by: Ingo Molnar Cc: Daniel Vetter Cc: Dave Airlie Cc: David Airlie Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Sudip Mukherjee Cc: Thomas Gleixner Cc: dri-devel Signed-off-by: Archit Taneja --- drivers/gpu/drm/mgag200/mgag200_fb.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c index 87de15e..b35b5b2 100644 --- a/drivers/gpu/drm/mgag200/mgag200_fb.c +++ b/drivers/gpu/drm/mgag200/mgag200_fb.c @@ -186,17 +186,19 @@ static int mgag200fb_create(struct drm_fb_helper *helper, sysram = vmalloc(size); if (!sysram) - return -ENOMEM; + goto err_sysram; info = drm_fb_helper_alloc_fbi(helper); - if (IS_ERR(info)) - return PTR_ERR(info); + if (IS_ERR(info)) { + ret = PTR_ERR(info); + goto err_alloc_fbi; + } info->par = mfbdev; ret = mgag200_framebuffer_init(dev, &mfbdev->mfb, &mode_cmd, gobj); if (ret) - return ret; + goto err_framebuffer_init; mfbdev->sysram = sysram; mfbdev->size = size; @@ -225,7 +227,17 @@ static int mgag200fb_create(struct drm_fb_helper *helper, DRM_DEBUG_KMS("allocated %dx%d\n", fb->width, fb->height); + return 0; + +err_framebuffer_init: + drm_fb_helper_release_fbi(helper); +err_alloc_fbi: + vfree(sysram); +err_sysram: + drm_gem_object_unreference_unlocked(gobj); + + return ret; } static int mga_fbdev_destroy(struct drm_device *dev, @@ -276,23 +288,26 @@ int mgag200_fbdev_init(struct mga_device *mdev) ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper, mdev->num_crtc, MGAG200FB_CONN_LIMIT); if (ret) - return ret; + goto err_fb_helper; ret = drm_fb_helper_single_add_all_connectors(&mfbdev->helper); if (ret) - goto fini; + goto err_fb_setup; /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(mdev->dev); ret = drm_fb_helper_initial_config(&mfbdev->helper, bpp_sel); if (ret) - goto fini; + goto err_fb_setup; return 0; -fini: +err_fb_setup: drm_fb_helper_fini(&mfbdev->helper); +err_fb_helper: + mdev->mfbdev = NULL; + return ret; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation