From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758767AbcIPKUE (ORCPT ); Fri, 16 Sep 2016 06:20:04 -0400 Received: from mail-pa0-f66.google.com ([209.85.220.66]:36431 "EHLO mail-pa0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754368AbcIPKTy (ORCPT ); Fri, 16 Sep 2016 06:19:54 -0400 Subject: Re: [PATCH] lightnvm: propagate device_add() error code To: Arnd Bergmann , Matias Bjorling References: <20160915155325.3009409-1-arnd@arndb.de> Cc: "Simon A. F. Lund" , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org From: =?UTF-8?Q?Matias_Bj=c3=b8rling?= Organization: Paletta Message-ID: <57DBC746.4000509@bjorling.me> Date: Fri, 16 Sep 2016 12:19:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <20160915155325.3009409-1-arnd@arndb.de> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/15/2016 05:53 PM, Arnd Bergmann wrote: > device_add() may fail, and all callers are supposed to check the > return value, but one new user in lightnvm doesn't: > > drivers/lightnvm/sysfs.c: In function 'nvm_sysfs_register_dev': > drivers/lightnvm/sysfs.c:184:2: error: ignoring return value of 'device_add', declared with attribute warn_unused_result [-Werror=unused-result] > > This changes the caller to propagate any error codes, which avoids > the warning. > > Signed-off-by: Arnd Bergmann > Fixes: 38c9e260b9f9 ("lightnvm: expose device geometry through sysfs") > --- > drivers/lightnvm/lightnvm.h | 2 +- > drivers/lightnvm/sysfs.c | 9 ++++++--- > 2 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/lightnvm/lightnvm.h b/drivers/lightnvm/lightnvm.h > index 93f1aacc9f02..305c181509a6 100644 > --- a/drivers/lightnvm/lightnvm.h > +++ b/drivers/lightnvm/lightnvm.h > @@ -24,7 +24,7 @@ > #include > > /* core -> sysfs.c */ > -int nvm_sysfs_register_dev(struct nvm_dev *); > +int __must_check nvm_sysfs_register_dev(struct nvm_dev *); > void nvm_sysfs_unregister_dev(struct nvm_dev *); > int nvm_sysfs_register(void); > void nvm_sysfs_unregister(void); > diff --git a/drivers/lightnvm/sysfs.c b/drivers/lightnvm/sysfs.c > index 72ad089c0269..0338c27ab95a 100644 > --- a/drivers/lightnvm/sysfs.c > +++ b/drivers/lightnvm/sysfs.c > @@ -174,6 +174,8 @@ static struct device_type nvm_type = { > > int nvm_sysfs_register_dev(struct nvm_dev *dev) > { > + int ret; > + > if (!dev->parent_dev) > return 0; > > @@ -181,11 +183,12 @@ int nvm_sysfs_register_dev(struct nvm_dev *dev) > dev_set_name(&dev->dev, "%s", dev->name); > dev->dev.type = &nvm_type; > device_initialize(&dev->dev); > - device_add(&dev->dev); > + ret = device_add(&dev->dev); > > - blk_mq_register_dev(&dev->dev, dev->q); > + if (!ret) > + blk_mq_register_dev(&dev->dev, dev->q); > > - return 0; > + return ret; > } > > void nvm_sysfs_unregister_dev(struct nvm_dev *dev) > Thans Arnd. Applied for 4.9.