Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp2086642ybg; Sun, 27 Oct 2019 10:47:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqyyw44Dsp+VsoTNo7x2nCkUHgXrgaGCyViwYjdSj4wjkLmG1sjhXdIfIr1yN+CsOl7OTpaD X-Received: by 2002:a17:906:4b57:: with SMTP id j23mr13052566ejv.7.1572198472017; Sun, 27 Oct 2019 10:47:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572198472; cv=none; d=google.com; s=arc-20160816; b=jp5fgFrwgzuxPbXC76mjy8+fph4k+2lqQItUmyC6L4UyoR/8M8tZxzJHjWVpuUVpEK QAGxXOPgEA3lTKorYAXdx5R4w8h76kX8IqmEv9SRMaj0DHlLxLO+3jMqOKH2g0RgGNfg gYinURhgbah2TJkywk7rf2HwOGi2XreWMzHZWH71lwirfJ8PVqcojEznArhyZwzU0kkI HtQ5ca/CTZWe81ytdGWnRkg9/1i5RiV26vbSeCgKgzMT+gzAh5+P/a8WtDDqbLRzYQPA 8zGNh4t36Sj5/VDPe+aGO5SPzRDzOgdFbeRF+0U0xbPyWEbJn1jd6K+kCXD3Nwz2BzmF m4MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:message-id:date:subject:cc:from :dkim-signature; bh=/THBluCK4a0IYFuUyIU3vJcJ1O4y+B87o6Voa+J9XIQ=; b=lbT7KH1Mvr3Vy85xO2rFvn/dhp6d6qlP9dYTaBq1IBOUfpFxSsEqwgIkn8sbpRXhxq ClFnG8ANII4n8zBbQfG8Zo+niiKHRv++sJDJmslDTQh7fmKXtv/u1/zX29CQnj+PSjKH PTyJSmhEyvg3bkVCeqsNLgoxDFFrnrJkyWCzR30vblhS3P4F436jdgwVZe3zBIjR5SD+ w3PmONRwIw3rTr7skevEzBWf83PhIJPhO2pdgs8nPk2ysIIaPzQ36elyEJBICq/Ffjr8 e5TUj2wMyculPHQ2Mq7/PixuOX8uJ/t8UBT8NkJLNFf54seG3RcAL7EOsmKRJfnqrFc9 cNfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=ZWPKYvPb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z4si7313734edi.38.2019.10.27.10.47.28; Sun, 27 Oct 2019 10:47:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=ZWPKYvPb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727175AbfJ0Rcr (ORCPT + 99 others); Sun, 27 Oct 2019 13:32:47 -0400 Received: from mail-il1-f193.google.com ([209.85.166.193]:43963 "EHLO mail-il1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727001AbfJ0Rcr (ORCPT ); Sun, 27 Oct 2019 13:32:47 -0400 Received: by mail-il1-f193.google.com with SMTP id t5so5967345ilh.10 for ; Sun, 27 Oct 2019 10:32:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=/THBluCK4a0IYFuUyIU3vJcJ1O4y+B87o6Voa+J9XIQ=; b=ZWPKYvPbYBDdIJSfu5YyppHyQaRlcSw5idapnoCgxEOcGwePqoJIPQEjHI62ck0cQ7 e6IZKSNWPOe1wpvhHn9g0acn1jmeBv7qkS+wjLYJnbDR5CBBE95OcSls/a7+OEcV5sKd Y+PeesFwmQ7OSN0aKD3rvW26UYbxu880wJBxhcnt1UCBazacbA6fbGSkKIx7o4YMogfV ivkQiuq1unCJtup2LtPFercUpPGAoLbTb3PXloOoiEJN2jT3HBP3fViCgj+q7fPBy9Fs nKs3ButM9wGbtLY0aKalybRBUBGRi/5cBngEuJOV9xWqTDGihPJtkmDCWVDMkljmgQRy E7nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=/THBluCK4a0IYFuUyIU3vJcJ1O4y+B87o6Voa+J9XIQ=; b=PRKOLROAzn0KiVCVlSWPl6TM/Hdmpi2hyEfli6sO8z8Pl7v1U7bz/m7XyUpbyy43x3 8TUuinl52155LrmZPF6GbWZQMhhLaxFrPeLQcJtVTy8HE3JIV7U9D5AnfQ+xIf/4PjSK gLri1qULKFlA765jaUbFvixRAp85NrIP6FEMdDqkQlFzXXXEGW3lrp+CDq06MKs0xul+ KG3tECa3xW/mnF9XrfWDw1eTs77r/SGUX77RquWkxabTjw29O1MNhbZ4469o8PERqn2p iDyrdeQsUupsGfvg1lZB5e4TW1bePxI/2vWiTdlbdVek8uXRTbXRWKnkmfKyKJ6GIIaS DyOQ== X-Gm-Message-State: APjAAAW2q8UlszqnqhOVv8M56ElKBcLKevvUMToAIHC4gqYUNclTMhO9 KmWgoRg6ekmvrI8Xt0+6PfQ= X-Received: by 2002:a92:190b:: with SMTP id 11mr16909100ilz.39.1572197565994; Sun, 27 Oct 2019 10:32:45 -0700 (PDT) Received: from cs-dulles.cs.umn.edu (cs-dulles.cs.umn.edu. [128.101.35.54]) by smtp.googlemail.com with ESMTPSA id y5sm1196784ill.86.2019.10.27.10.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Oct 2019 10:32:45 -0700 (PDT) From: Navid Emamdoost Cc: emamd001@umn.edu, smccaman@umn.edu, kjlu@umn.edu, Navid Emamdoost , Eric Anholt , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/tinydrm: Fix memroy leak in hx8357d_probe Date: Sun, 27 Oct 2019 12:32:33 -0500 Message-Id: <20191027173234.6449-1-navid.emamdoost@gmail.com> X-Mailer: git-send-email 2.17.1 To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the implementation of hx8357d_probe() the allocated memory for dbidev is leaked when an error happens. Release dbidev if any of the following calls fail: devm_gpiod_get(), devm_of_find_backlight(), mipi_dbi_spi_init(), mipi_dbi_init(), drm_dev_register(). Fixes: f300c86e33a6 ("drm: Add an hx8367d tinydrm driver.") Signed-off-by: Navid Emamdoost --- drivers/gpu/drm/tiny/hx8357d.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c index 9af8ff84974f..da5ec944f47e 100644 --- a/drivers/gpu/drm/tiny/hx8357d.c +++ b/drivers/gpu/drm/tiny/hx8357d.c @@ -232,44 +232,49 @@ static int hx8357d_probe(struct spi_device *spi) drm = &dbidev->drm; ret = devm_drm_dev_init(dev, drm, &hx8357d_driver); - if (ret) { - kfree(dbidev); - return ret; - } + if (ret) + goto free_dbidev; drm_mode_config_init(drm); dc = devm_gpiod_get(dev, "dc", GPIOD_OUT_LOW); if (IS_ERR(dc)) { DRM_DEV_ERROR(dev, "Failed to get gpio 'dc'\n"); - return PTR_ERR(dc); + ret = PTR_ERR(dc); + goto free_dbidev; } dbidev->backlight = devm_of_find_backlight(dev); - if (IS_ERR(dbidev->backlight)) - return PTR_ERR(dbidev->backlight); + if (IS_ERR(dbidev->backlight)) { + ret = PTR_ERR(dbidev->backlight); + goto free_dbidev; + } device_property_read_u32(dev, "rotation", &rotation); ret = mipi_dbi_spi_init(spi, &dbidev->dbi, dc); if (ret) - return ret; + goto free_dbidev; ret = mipi_dbi_dev_init(dbidev, &hx8357d_pipe_funcs, &yx350hv15_mode, rotation); if (ret) - return ret; + goto free_dbidev; drm_mode_config_reset(drm); ret = drm_dev_register(drm, 0); if (ret) - return ret; + goto free_dbidev; spi_set_drvdata(spi, drm); drm_fbdev_generic_setup(drm, 0); return 0; + +free_dbidev: + kfree(dbidev); + return ret; } static int hx8357d_remove(struct spi_device *spi) -- 2.17.1