Received: by 10.192.165.148 with SMTP id m20csp813914imm; Fri, 27 Apr 2018 07:57:48 -0700 (PDT) X-Google-Smtp-Source: AB8JxZr497LNljiDQOJjGNRuINoaxL9IR+ynccSV9UdFb2oErEOMdXaRWKrWJRTnmGwGBQQAywcs X-Received: by 10.98.47.2 with SMTP id v2mr2495327pfv.239.1524841068309; Fri, 27 Apr 2018 07:57:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524841068; cv=none; d=google.com; s=arc-20160816; b=Jt3qiOuo01/NPKWKy/qqLXao6gJbzYSVAc28qfL/SAS6v01r7TFsppuZx2eaGevFtA kHyVQGVZXlNJH+CzDZDxddo4brZwc40ZPDewnMj+ZQIU6LPF+rlnFlSsrpk/7BTGxU+E atZOJO2ctKnOkN7Mao0m7XjKhqCh2PEnq22Lub+TYAAkvyJRs38BjIaBDlNYRM9UUkfx y1OurxbzK0dw/J5aKI2f5WgeJ3rxPdQdxn7pwFdCHHM2zssAWmFUunPL9onoOPzYptyC UtkhKC0x0UylD4ebdMbjSNPDqC7kJCdEENfVd5IYngAeZDbrLIo+G714Kk/D5mYBmWyD P5bQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=e8uRL9cRG1PeG5NsOUd+MKj9MqdCqMoQkoD2JWZ+Cao=; b=MmYxGbMqaN48ZVzI66koA9MwCZCE1mwjnrgiGD63zkQwkE2YItHWHWS2HQmAXFyjGx Z3la+mA1rZstKS1OXohT8DjM+6mzsb6dBBLbtO4Vk34fhtqaI3IinM9LOSFHj+t3i+Vn M1A+vZM/5C8Uu1/WytDs9xAY36Rugu8hrLGMdrW7bOgDDAutBx0eILderGzUilZX5/wo dQfZZbDAOVbH9VxLqm55DFUb4UskQcO8FPPl0++fgR6+izpA8XGPSMntpkcIlpRf8Xqj zSb33134kNHltOE5d90+zriVWwuuv7BE8Nq/IherTiaIfzusGcGqWsTP5zxUOaXksYO1 8yDg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si1367429plw.519.2018.04.27.07.57.34; Fri, 27 Apr 2018 07:57:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934286AbeD0O41 (ORCPT + 99 others); Fri, 27 Apr 2018 10:56:27 -0400 Received: from mx2.suse.de ([195.135.220.15]:58795 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934100AbeD0O4Z (ORCPT ); Fri, 27 Apr 2018 10:56:25 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id E2BD3ABC9; Fri, 27 Apr 2018 14:56:23 +0000 (UTC) Date: Fri, 27 Apr 2018 16:56:23 +0200 From: Michal Hocko To: Arvind Yadav Cc: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm: memory_hotplug: use put_device() if device_register fail Message-ID: <20180427145623.GC5404@dhcp22.suse.cz> References: <2987b5bdb31e7c18cd837da0f1e32a98fecd3278.1524757165.git.arvind.yadav.cs@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2987b5bdb31e7c18cd837da0f1e32a98fecd3278.1524757165.git.arvind.yadav.cs@gmail.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu 26-04-18 21:12:09, Arvind Yadav wrote: > if device_register() returned an error. Always use put_device() > to give up the initialized reference and release allocated memory. Is this patch correct? The docummentation says * NOTE: _Never_ directly free @dev after calling this function, even * if it returned an error! Always use put_device() to give up your * reference instead. but we do not have _our_ reference in this path AFAICS. Maybe this is just a documentation issue? How have you tested this change btw.? > Signed-off-by: Arvind Yadav > --- > drivers/base/memory.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/base/memory.c b/drivers/base/memory.c > index bffe861..f5e5601 100644 > --- a/drivers/base/memory.c > +++ b/drivers/base/memory.c > @@ -649,13 +649,19 @@ static const struct attribute_group *memory_memblk_attr_groups[] = { > static > int register_memory(struct memory_block *memory) > { > + int ret; > + > memory->dev.bus = &memory_subsys; > memory->dev.id = memory->start_section_nr / sections_per_block; > memory->dev.release = memory_block_release; > memory->dev.groups = memory_memblk_attr_groups; > memory->dev.offline = memory->state == MEM_OFFLINE; > > - return device_register(&memory->dev); > + ret = device_register(&memory->dev); > + if (ret) > + put_device(&memory->dev); > + > + return ret; > } > > static int init_memory_block(struct memory_block **memory, > -- > 2.7.4 -- Michal Hocko SUSE Labs