From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933467AbdKOW2f (ORCPT ); Wed, 15 Nov 2017 17:28:35 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:51722 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932798AbdKOW22 (ORCPT ); Wed, 15 Nov 2017 17:28:28 -0500 X-Google-Smtp-Source: AGs4zMb8cwTT4TKM4s8ggaFUrr05MgKhTbTDpxzerxsJtd4Dh04FLwx5qNdU0jobN5CvgTjCUhP4vg== Date: Wed, 15 Nov 2017 14:28:25 -0800 From: Dmitry Torokhov To: Guenter Roeck Cc: Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Randy Dunlap , Wei-Ning Huang Subject: Re: [PATCH 2/3] firmware: vpd: Tie firmware kobject to device lifetime Message-ID: <20171115222825.errutj4twcnmm42i@dtor-ws> References: <1510779645-13052-1-git-send-email-linux@roeck-us.net> <1510779645-13052-2-git-send-email-linux@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1510779645-13052-2-git-send-email-linux@roeck-us.net> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 15, 2017 at 01:00:44PM -0800, Guenter Roeck wrote: > It doesn't make sense to have /sys/firmware/vpd if the device is not > instantiated, so tie its lifetime to the device. > > Fixes: 049a59db34eb ("firmware: Google VPD sysfs driver") > Signed-off-by: Guenter Roeck Reviewed-by: Dmitry Torokhov > --- > drivers/firmware/google/vpd.c | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) > > diff --git a/drivers/firmware/google/vpd.c b/drivers/firmware/google/vpd.c > index 84217172297b..942e358efa60 100644 > --- a/drivers/firmware/google/vpd.c > +++ b/drivers/firmware/google/vpd.c > @@ -295,7 +295,17 @@ static int vpd_probe(struct platform_device *pdev) > if (ret) > return ret; > > - return vpd_sections_init(entry.cbmem_addr); > + vpd_kobj = kobject_create_and_add("vpd", firmware_kobj); > + if (!vpd_kobj) > + return -ENOMEM; > + > + ret = vpd_sections_init(entry.cbmem_addr); > + if (ret) { > + kobject_put(vpd_kobj); > + return ret; > + } > + > + return 0; > } > > static int vpd_remove(struct platform_device *pdev) > @@ -303,6 +313,8 @@ static int vpd_remove(struct platform_device *pdev) > vpd_section_destroy(&ro_vpd); > vpd_section_destroy(&rw_vpd); > > + kobject_put(vpd_kobj); > + > return 0; > } > > @@ -322,10 +334,6 @@ static int __init vpd_platform_init(void) > if (IS_ERR(pdev)) > return PTR_ERR(pdev); > > - vpd_kobj = kobject_create_and_add("vpd", firmware_kobj); > - if (!vpd_kobj) > - return -ENOMEM; > - > platform_driver_register(&vpd_driver); > > return 0; > @@ -333,7 +341,6 @@ static int __init vpd_platform_init(void) > > static void __exit vpd_platform_exit(void) > { > - kobject_put(vpd_kobj); > } > > module_init(vpd_platform_init); > -- > 2.7.4 > -- Dmitry