Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp29158ybt; Tue, 30 Jun 2020 14:07:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybzmq8005Xg4dBQDWK94e42/Q1DTrW0LongvucD1/VZOKDKeR104Ys1+YfD2uan2qZO1qk X-Received: by 2002:a17:906:17c8:: with SMTP id u8mr20194406eje.129.1593550892573; Tue, 30 Jun 2020 14:01:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593550892; cv=none; d=google.com; s=arc-20160816; b=Y1abT5rvkQekoDQIvG24LmXngIEYqzdlJZW9lZMOsjnlqsyYPvty9ffti/0quQYIGq hCTHTC+uGp5nHd4uKVWg9t6/flX7++P4ZoQy5Gc1vxSkI4Uy1YCwIkIdkmNao04o94f7 l5uj9d2NOCyLNYvN+AYdNN/LOFQJ9zj6YLrBNZU5HT30ZYAlTgFF9D8GosQPhNr4ofi1 AHbDp3t4qu+FB1jNiAH17CHAZ1Z7gey7yYAlbUjNQOGn3TqfXLkc+Yc4UFCNO4/1ZtGw m4gLg5e29FMW2gwHnWpSiJbz2/kDo77pWgj1B+0eA57DhgGb+ifIjPVIiqnMtQwzNJPc YASQ== 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=9nobxcmDU9eg6QksQvaGZKBzPujaO6p7UocXcjLB9L4=; b=kg2AHXOFf97p+bXof9FeKjBzWSZAMwOvmc9weKUZ4hBlzBETF9ac0WYESEGGUY0rFk 5gXz2jNBYDSbTvn+I/MAgIaQ2lY7gsJ/b0h/lLyCp6x1USKP+TviyLgFtHKGhjYP6i1s PlJu+dKRJD554LNxKOsZ0Ij233DlsR8OCBI23EEN3BugAoDJ+kzVNuBcRwbNm2RBvBmF M/A5QD+/OctjVwDJmXcyWxsNGrR1nk2l84DZ5rmAuPCmKsXcPjwPh8pHUk3yuYGTmKk3 ruieAqlitfZ8cNMwL5xVI38uosfZVKeSUuRtwdyIRwYYsVssO0bTgBv09ZShWwLb/b5M /O0A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ispras.ru Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ot18si2405618ejb.303.2020.06.30.14.01.09; Tue, 30 Jun 2020 14:01:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ispras.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728977AbgF3Ty6 (ORCPT + 99 others); Tue, 30 Jun 2020 15:54:58 -0400 Received: from winnie.ispras.ru ([83.149.199.91]:13904 "EHLO smtp.ispras.ru" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728435AbgF3Ty4 (ORCPT ); Tue, 30 Jun 2020 15:54:56 -0400 Received: from home.intra.ispras.ru (unknown [10.10.165.12]) by smtp.ispras.ru (Postfix) with ESMTP id 7F98A201D0; Tue, 30 Jun 2020 22:54:53 +0300 (MSK) From: Evgeny Novikov To: Bartlomiej Zolnierkiewicz Cc: Evgeny Novikov , Jani Nikula , Mike Rapoport , Daniel Vetter , Andrew Morton , dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org, ldv-project@linuxtesting.org Subject: [PATCH] video: fbdev: neofb: fix memory leak in neo_scan_monitor() Date: Tue, 30 Jun 2020 22:54:51 +0300 Message-Id: <20200630195451.18675-1-novikov@ispras.ru> X-Mailer: git-send-email 2.16.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org neofb_probe() calls neo_scan_monitor() that can successfully allocate a memory for info->monspecs.modedb and proceed to case 0x03. There it does not free the memory and returns -1. neofb_probe() goes to label err_scan_monitor, thus, it does not free this memory through calling fb_destroy_modedb() as well. We can not go to label err_init_hw since neo_scan_monitor() can fail during memory allocation. So, the patch frees the memory directly for case 0x03. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Evgeny Novikov --- drivers/video/fbdev/neofb.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/video/fbdev/neofb.c b/drivers/video/fbdev/neofb.c index f5a676bfd67a..09a20d4ab35f 100644 --- a/drivers/video/fbdev/neofb.c +++ b/drivers/video/fbdev/neofb.c @@ -1819,6 +1819,7 @@ static int neo_scan_monitor(struct fb_info *info) #else printk(KERN_ERR "neofb: Only 640x480, 800x600/480 and 1024x768 panels are currently supported\n"); + kfree(info->monspecs.modedb); return -1; #endif default: -- 2.16.4