Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752585AbdI2XcS (ORCPT ); Fri, 29 Sep 2017 19:32:18 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:34169 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752505AbdI2XcQ (ORCPT ); Fri, 29 Sep 2017 19:32:16 -0400 X-Google-Smtp-Source: AOwi7QDVvQbDmSQdTfvjWCWFE4T05/2uIGvMQ6XfRB+JId9e8ZADb7WXXCqj/5eyQS4ABhW+3gEBZg== Date: Fri, 29 Sep 2017 16:32:12 -0700 From: Dmitry Torokhov To: Andi Shyti Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Andi Shyti , Michael Hennerich Subject: Re: [PATCH 01/12] Input: ad7897 - use managed devm_device_add_group Message-ID: <20170929233212.GB14362@dtor-ws> References: <20170929203839.7010-1-andi@etezian.org> <20170929203839.7010-2-andi@etezian.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170929203839.7010-2-andi@etezian.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1771 Lines: 63 Hi Andi, On Sat, Sep 30, 2017 at 05:38:28AM +0900, Andi Shyti wrote: > Commit 57b8ff070f98 ("driver core: add devm_device_add_group() > and friends") has added the the managed version for creating > sysfs group files. > > Use devm_device_add_group instead of sysfs_create_group and > remove the relative sysfs_remove_group and goto label. > > CC: Michael Hennerich > Signed-off-by: Andi Shyti > --- > drivers/input/touchscreen/ad7877.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/drivers/input/touchscreen/ad7877.c b/drivers/input/touchscreen/ad7877.c > index 9c250ae780d9..677ba38b4d1c 100644 > --- a/drivers/input/touchscreen/ad7877.c > +++ b/drivers/input/touchscreen/ad7877.c > @@ -783,18 +783,16 @@ static int ad7877_probe(struct spi_device *spi) > goto err_free_mem; > } > > - err = sysfs_create_group(&spi->dev.kobj, &ad7877_attr_group); > + err = devm_device_add_group(&spi->dev, &ad7877_attr_group); This changes order of operations and ultimately may cause use-after-free as memory for ad7877 structure will be freed before we remove attributes. > if (err) > goto err_free_irq; > > err = input_register_device(input_dev); > if (err) > - goto err_remove_attr_group; > + goto err_free_irq; > > return 0; > > -err_remove_attr_group: > - sysfs_remove_group(&spi->dev.kobj, &ad7877_attr_group); > err_free_irq: > free_irq(spi->irq, ts); > err_free_mem: > @@ -807,8 +805,6 @@ 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); > > -- > 2.14.2 > Thanks. -- Dmitry