From patchwork Wed Jan 8 16:58:10 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Anthony Olech (Opensource)" X-Patchwork-Id: 3455011 Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5B070C02DC for ; Wed, 8 Jan 2014 17:16:40 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4D4682010C for ; Wed, 8 Jan 2014 17:16:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AA6B12010E for ; Wed, 8 Jan 2014 17:16:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756660AbaAHRQd (ORCPT ); Wed, 8 Jan 2014 12:16:33 -0500 Received: from mail1.bemta5.messagelabs.com ([195.245.231.152]:5216 "EHLO mail1.bemta5.messagelabs.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756115AbaAHRQd (ORCPT ); Wed, 8 Jan 2014 12:16:33 -0500 X-Greylist: delayed 395 seconds by postgrey-1.27 at vger.kernel.org; Wed, 08 Jan 2014 12:16:33 EST Received: from [85.158.139.51:60254] by server-16.bemta-5.messagelabs.com id 8B/43-11843-3668DC25; Wed, 08 Jan 2014 17:09:55 +0000 X-Env-Sender: anthony.olech.opensource@diasemi.com X-Msg-Ref: server-2.tower-180.messagelabs.com!1389200994!28356548!1 X-Originating-IP: [82.210.246.133] X-StarScan-Received: X-StarScan-Version: 6.9.16; banners=-,-,- X-VirusChecked: Checked Received: (qmail 30543 invoked from network); 8 Jan 2014 17:09:55 -0000 Received: from mailrelay1.diasemi.com (HELO NB-EX-CASHUB01.diasemi.com) (82.210.246.133) by server-2.tower-180.messagelabs.com with AES128-SHA encrypted SMTP; 8 Jan 2014 17:09:55 -0000 Received: from mailrelay1.diasemi.com (10.1.17.243) by NB-EX-CASHUB01.diasemi.com (10.1.16.140) with Microsoft SMTP Server id 14.2.309.2; Wed, 8 Jan 2014 18:09:54 +0100 Received: from swsrvapps-02.lan (Not Verified[10.20.27.23]) by mailrelay1.diasemi.com with ESMTP Gateway id ; Wed, 08 Jan 2014 18:09:54 +0100 Received: from swsrvapps-02.lan (localhost [127.0.0.1]) by swsrvapps-02.lan (8.14.4/8.14.4/Debian-2ubuntu2) with ESMTP id s08H9o1X038266; Wed, 8 Jan 2014 17:09:50 GMT Received: (from aolech@localhost) by swsrvapps-02.lan (8.14.4/8.14.4/Submit) id s08H9nMr038265; Wed, 8 Jan 2014 17:09:49 GMT Message-ID: <201401081709.s08H9nMr038265@swsrvapps-02.lan> X-Authentication-Warning: swsrvapps-02.lan: aolech set sender to anthony.olech.opensource@diasemi.com using -f From: Anthony Olech Date: Wed, 8 Jan 2014 16:58:10 +0000 Subject: [PATCH V1] input: fix memory leak in da9052 touchscreen driver To: Dmitry Torokhov CC: , , Huqiu Liu , David Dajun Chen MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The touchscreen component driver for the da9052/3 Dialog PMICs leaks memory by not freeing the input device in the remove call. This patch matches the existing call to input_alloc_device() in da9052_ts_probe() to a new call to input_free_device() in da9052_ts_remove() Suggested-by: Huqiu Liu Signed-off-by: Anthony Olech --- This patch is relative to linux-next repository tag next-20140108 Many thanks to Huqiu Liu who found the bug. drivers/input/touchscreen/da9052_tsi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/input/touchscreen/da9052_tsi.c b/drivers/input/touchscreen/da9052_tsi.c index ab64d58..43a69d1 100644 --- a/drivers/input/touchscreen/da9052_tsi.c +++ b/drivers/input/touchscreen/da9052_tsi.c @@ -320,6 +320,7 @@ err_free_mem: static int da9052_ts_remove(struct platform_device *pdev) { struct da9052_tsi *tsi = platform_get_drvdata(pdev); + struct input_dev *input_dev = tsi->dev; da9052_reg_write(tsi->da9052, DA9052_LDO9_REG, 0x19); @@ -328,6 +329,7 @@ static int da9052_ts_remove(struct platform_device *pdev) input_unregister_device(tsi->dev); kfree(tsi); + input_free_device(input_dev); return 0; }