From patchwork Wed Nov 8 15:50:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andi Shyti X-Patchwork-Id: 10048709 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C455F60247 for ; Wed, 8 Nov 2017 15:50:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AEC6B29703 for ; Wed, 8 Nov 2017 15:50:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A36592A436; Wed, 8 Nov 2017 15:50:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 111BB29703 for ; Wed, 8 Nov 2017 15:50:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752637AbdKHPur (ORCPT ); Wed, 8 Nov 2017 10:50:47 -0500 Received: from 18.mo3.mail-out.ovh.net ([87.98.172.162]:56764 "EHLO 18.mo3.mail-out.ovh.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752612AbdKHPur (ORCPT ); Wed, 8 Nov 2017 10:50:47 -0500 Received: from player771.ha.ovh.net (b9.ovh.net [213.186.33.59]) by mo3.mail-out.ovh.net (Postfix) with ESMTP id A795116EA31 for ; Wed, 8 Nov 2017 16:50:45 +0100 (CET) Received: from etezian.org (unknown [211.196.237.107]) (Authenticated sender: andi@etezian.org) by player771.ha.ovh.net (Postfix) with ESMTPSA id 8CA8B840097; Wed, 8 Nov 2017 16:50:36 +0100 (CET) From: Andi Shyti To: Dmitry Torokhov Cc: Michael Hennerich , Lars-Peter Clausen , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Andi Shyti , Andi Shyti Subject: [PATCH v3 1/3] Input: ad7897 - use managed allocated resources Date: Wed, 8 Nov 2017 17:50:18 +0200 Message-Id: <20171108155020.3851-2-andi@etezian.org> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171108155020.3851-1-andi@etezian.org> References: <20171108155020.3851-1-andi@etezian.org> X-Ovh-Tracer-Id: 2870200339970114202 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedttddrheelgdekfecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Use managed allocated resources to simplify error handling during probing failure and module exiting. With this all the goto labels in the probe function together with the cleanups in the remove function are unnecessary, therefore removed. CC: Michael Hennerich Signed-off-by: Andi Shyti --- drivers/input/touchscreen/ad7877.c | 42 +++++++++----------------------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/drivers/input/touchscreen/ad7877.c b/drivers/input/touchscreen/ad7877.c index 0381c7809d1b..dd59e4a5eb7d 100644 --- a/drivers/input/touchscreen/ad7877.c +++ b/drivers/input/touchscreen/ad7877.c @@ -707,12 +707,10 @@ static int ad7877_probe(struct spi_device *spi) return err; } - ts = kzalloc(sizeof(struct ad7877), GFP_KERNEL); - input_dev = input_allocate_device(); - if (!ts || !input_dev) { - err = -ENOMEM; - goto err_free_mem; - } + ts = devm_kzalloc(&spi->dev, sizeof(struct ad7877), GFP_KERNEL); + input_dev = devm_input_allocate_device(&spi->dev); + if (!ts || !input_dev) + return -ENOMEM; spi_set_drvdata(spi, ts); ts->spi = spi; @@ -764,8 +762,7 @@ static int ad7877_probe(struct spi_device *spi) if (verify != AD7877_MM_SEQUENCE){ dev_err(&spi->dev, "%s: Failed to probe %s\n", dev_name(&spi->dev), input_dev->name); - err = -ENODEV; - goto err_free_mem; + return -ENODEV; } if (gpio3) @@ -775,45 +772,26 @@ static int ad7877_probe(struct spi_device *spi) /* Request AD7877 /DAV GPIO interrupt */ - err = request_threaded_irq(spi->irq, NULL, ad7877_irq, + err = devm_request_threaded_irq(&spi->dev, spi->irq, NULL, ad7877_irq, IRQF_TRIGGER_FALLING | IRQF_ONESHOT, spi->dev.driver->name, ts); if (err) { dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq); - goto err_free_mem; + return err; } - err = sysfs_create_group(&spi->dev.kobj, &ad7877_attr_group); - if (err) - goto err_free_irq; - - err = input_register_device(input_dev); + err = devm_device_add_group(&spi->dev, &ad7877_attr_group); if (err) - goto err_remove_attr_group; - - return 0; + return err; -err_remove_attr_group: - sysfs_remove_group(&spi->dev.kobj, &ad7877_attr_group); -err_free_irq: - free_irq(spi->irq, ts); -err_free_mem: - input_free_device(input_dev); - kfree(ts); - return err; + return input_register_device(input_dev); } static int ad7877_remove(struct spi_device *spi) { struct ad7877 *ts = spi_get_drvdata(spi); - sysfs_remove_group(&spi->dev.kobj, &ad7877_attr_group); - ad7877_disable(ts); - free_irq(ts->spi->irq, ts); - - input_unregister_device(ts->input); - kfree(ts); dev_dbg(&spi->dev, "unregistered touchscreen\n");