From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756735AbcIUOds (ORCPT ); Wed, 21 Sep 2016 10:33:48 -0400 Received: from mail.sigma-star.at ([95.130.255.111]:45996 "EHLO mail.sigma-star.at" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752158AbcIUOdr (ORCPT ); Wed, 21 Sep 2016 10:33:47 -0400 Subject: Re: [PATCH v2 03/46] mtd: Don't unconditionally unregister reboot notifier To: Boris Brezillon References: <20160921163120.7d7e7fca@bbrezillon> Cc: linux-mtd@lists.infradead.org, Richard Weinberger , computersforpeace@gmail.com, linux-kernel@vger.kernel.org From: Daniel Walter Message-ID: <136a55bf-a31c-3329-33e7-f3084b5608dc@sigma-star.at> Date: Wed, 21 Sep 2016 16:33:42 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <20160921163120.7d7e7fca@bbrezillon> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/21/2016 04:31 PM, Boris Brezillon wrote: > On Wed, 21 Sep 2016 11:45:12 +0200 > Daniel Walter wrote: > >> From: Richard Weinberger >> >> del_mtd_device() is allowed to fail. >> i.e. when the MTD is busy. >> Unregister the reboot notifier only when we're really >> about to delete the MTD. >> >> Signed-off-by: Richard Weinberger >> --- >> drivers/mtd/mtdcore.c | 15 ++++++++++----- >> 1 file changed, 10 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c >> index e3936b8..36e5fb0 100644 >> --- a/drivers/mtd/mtdcore.c >> +++ b/drivers/mtd/mtdcore.c >> @@ -654,17 +654,22 @@ int mtd_device_unregister(struct mtd_info *master) >> { >> int err; >> >> - if (master->_reboot) >> - unregister_reboot_notifier(&master->reboot_notifier); >> - >> err = del_mtd_partitions(master); >> if (err) >> return err; >> >> if (!device_is_registered(&master->dev)) >> - return 0; >> + goto unregister; >> >> - return del_mtd_device(master); >> + err = del_mtd_device(master); >> + if (err) >> + return err; >> + >> +unregister: >> + if (master->_reboot) >> + unregister_reboot_notifier(&master->reboot_notifier); >> + >> + return 0; > > How about: > > if (device_is_registered(&master->dev)) { > err = del_mtd_device(master); > if (err) > return err; > } > > if (master->_reboot) > unregister_reboot_notifier(&master->reboot_notifier); > > return 0; > > This way you get rid of the unregister label, which IMHO improves > readability. Agree, will fix this in v3 of the series. -- sigma star gmbh | Eduard-Bodem-Gasse 6, 6020 Innsbruck, Austria UID/VAT Nr: ATU 66964118 | FN: 374287y