Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3242192imu; Sat, 24 Nov 2018 00:54:22 -0800 (PST) X-Google-Smtp-Source: AFSGD/Xue+XkW48ZcSRUtfegEMNpeM06F9c2ATKgU2Wq8hg4tSnM9aeqLszwodpR2rQWlmNhFPq7 X-Received: by 2002:a17:902:7686:: with SMTP id m6mr19568153pll.179.1543049662150; Sat, 24 Nov 2018 00:54:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543049662; cv=none; d=google.com; s=arc-20160816; b=dDqeahM0KYt4tR2BseKm+PqvI+YhdQKKEvIOkDe/i29TnsULWNv2nmQrETkZOd5g46 3aZY9/XiX4vkh8Gxsok2WfEIWrk1h5yOFCyuTPuwSuYR3gBT0XJwmp2wzouEOslG/Lk1 uE9w9Yzv3P4HbviYASJHGk1diHsS92q7Qo2IZh4urnhw3QYkQFlxVt8zjCcRvH+QWUBy ifxWsRJLAHzH27xO7JuP3UN+OmNwwgFyJv0JAO2wYGETuufdEg4pTa993scQRfbCF/UQ 79GrQiecTHrmfuJra7vRyy2jYFJNL6wFGUALtRmMGynR/+IGpdPI88IWoAhWJHVmNgHM +3bQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=8MT0pqzo6fFa0KIIzQxnvTWc6DjKkK+ejQkSa/pRrgY=; b=aTMMS95NrB17+unBr4XpNa0NTE6EqR/Altrv6CcMZCeqQiiBfi13masLn4HY04Y3N3 53jjXltK1Wds+mf8kD0MCELhqVE2HrcmS4x/hUa79pVt2JOzvJLMGmVU3NS7THe+/Tx3 iA2FEPb0stUteSMVAePwYPVhq+zMBwBTO8xpFsbQ64T2ZP9xICwCuRNhgaHdoIbdqmNM VPyIyf62Re3Z6ac/BSjIPIBfM8wo0NkJxjbu8DnHH7GdoNEQXkV74NCoAdazqAnacz3w S4mzrCwJMCh2pvEmmHNZ6Ca3Va2Z5Ae+TDXBYEc2OEcCdnNUmESDthUkb7tEt9fZxl1k VLXg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z8si53051524pgf.577.2018.11.24.00.54.07; Sat, 24 Nov 2018 00:54:22 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727198AbeKXIm7 (ORCPT + 99 others); Sat, 24 Nov 2018 03:42:59 -0500 Received: from mail.ispras.ru ([83.149.199.45]:35958 "EHLO mail.ispras.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726979AbeKXIm7 (ORCPT ); Sat, 24 Nov 2018 03:42:59 -0500 Received: from localhost.localdomain (unknown [85.140.180.57]) by mail.ispras.ru (Postfix) with ESMTPSA id E0F2254006A; Sat, 24 Nov 2018 00:56:55 +0300 (MSK) From: Alexey Khoroshilov To: Markus Elfring , "Lad, Prabhakar" , Mauro Carvalho Chehab Cc: Alexey Khoroshilov , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, ldv-project@linuxtesting.org Subject: [PATCH] [media] DaVinci-VPBE: fix error handling in vpbe_initialize() Date: Sat, 24 Nov 2018 00:56:26 +0300 Message-Id: <1543010186-10244-1-git-send-email-khoroshilov@ispras.ru> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If vpbe_set_default_output() or vpbe_set_default_mode() fails, vpbe_initialize() returns error code without releasing resources. The patch adds error handling for that case. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov --- drivers/media/platform/davinci/vpbe.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/davinci/vpbe.c b/drivers/media/platform/davinci/vpbe.c index 18c035ef84cf..df1ae6b5c854 100644 --- a/drivers/media/platform/davinci/vpbe.c +++ b/drivers/media/platform/davinci/vpbe.c @@ -740,7 +740,7 @@ static int vpbe_initialize(struct device *dev, struct vpbe_device *vpbe_dev) if (ret) { v4l2_err(&vpbe_dev->v4l2_dev, "Failed to set default output %s", def_output); - return ret; + goto fail_kfree_amp; } printk(KERN_NOTICE "Setting default mode to %s\n", def_mode); @@ -748,12 +748,15 @@ static int vpbe_initialize(struct device *dev, struct vpbe_device *vpbe_dev) if (ret) { v4l2_err(&vpbe_dev->v4l2_dev, "Failed to set default mode %s", def_mode); - return ret; + goto fail_kfree_amp; } vpbe_dev->initialized = 1; /* TBD handling of bootargs for default output and mode */ return 0; +fail_kfree_amp: + mutex_lock(&vpbe_dev->lock); + kfree(vpbe_dev->amp); fail_kfree_encoders: kfree(vpbe_dev->encoders); fail_dev_unregister: -- 2.7.4