From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 498D8C433DB for ; Tue, 9 Feb 2021 06:56:38 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id A4CA164EB9 for ; Tue, 9 Feb 2021 06:56:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A4CA164EB9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linuxfoundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id DCE9D6B006C; Tue, 9 Feb 2021 01:56:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D80FA6B0070; Tue, 9 Feb 2021 01:56:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C46FD6B0071; Tue, 9 Feb 2021 01:56:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0166.hostedemail.com [216.40.44.166]) by kanga.kvack.org (Postfix) with ESMTP id B13E86B006C for ; Tue, 9 Feb 2021 01:56:36 -0500 (EST) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 8200418369426 for ; Tue, 9 Feb 2021 06:56:36 +0000 (UTC) X-FDA: 77797821192.30.wire08_460b75d27605 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin30.hostedemail.com (Postfix) with ESMTP id 63256180A3765 for ; Tue, 9 Feb 2021 06:56:36 +0000 (UTC) X-HE-Tag: wire08_460b75d27605 X-Filterd-Recvd-Size: 4611 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf26.hostedemail.com (Postfix) with ESMTP for ; Tue, 9 Feb 2021 06:56:35 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id CE4E264E66; Tue, 9 Feb 2021 06:56:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1612853794; bh=VgVI55Qj2fE2DYtRsTjeiTilPdRtitr2xXBpsmkbtK0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=gQHAWC7TnpY+LGErYA+VxHmESG50VC2KBUsKgEtJjOwys6FYVmS1o+Mz2tVzrH2yh 5K52uFUmCQ9KZdjkt+2SYMTepFhaoXDNVNC3YQqZdRxs2Ua5ApvAuYrkEuQMt5GJmX nU2Qht2hY8Ds511juTbYONpwhluAwMuM9jbrPjkg= Date: Tue, 9 Feb 2021 07:56:30 +0100 From: Greg KH To: John Hubbard Cc: Minchan Kim , Andrew Morton , linux-mm , LKML , surenb@google.com, joaodias@google.com, willy@infradead.org Subject: Re: [PATCH v2] mm: cma: support sysfs Message-ID: References: <20210208180142.2765456-1-minchan@kernel.org> <43cd6fc4-5bc5-50ec-0252-ffe09afd68ea@nvidia.com> <7cc229f4-609c-71dd-9361-063ef1bf7c73@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Feb 08, 2021 at 10:34:51PM -0800, John Hubbard wrote: > On 2/8/21 10:27 PM, John Hubbard wrote: > > On 2/8/21 10:13 PM, Greg KH wrote: > > > On Mon, Feb 08, 2021 at 05:57:17PM -0800, John Hubbard wrote: > > > > On 2/8/21 3:36 PM, Minchan Kim wrote: > > > > ... > > > > > > > =A0=A0=A0=A0=A0=A0=A0 char name[CMA_MAX_NAME]; > > > > > > > +#ifdef CONFIG_CMA_SYSFS > > > > > > > +=A0=A0=A0 struct cma_stat=A0=A0=A0 *stat; > > > > > >=20 > > > > > > This should not be a pointer. By making it a pointer, you've = added a bunch of pointless > > > > > > extra code to the implementation. > > > > >=20 > > > > > Originally, I went with the object lifetime with struct cma as = you > > > > > suggested to make code simple. However, Greg KH wanted to have > > > > > release for kobj_type since it is consistent with other kboject > > > > > handling. > > > >=20 > > > > Are you talking about the kobj in your new struct cma_stat? That = seems > > > > like circular logic if so. I'm guessing Greg just wanted kobj met= hods > > > > to be used *if* you are dealing with kobjects. That's a narrower = point. > > > >=20 > > > > I can't imagine that he would have insisted on having additional > > > > allocations just so that kobj freeing methods could be used. :) > > >=20 > > > Um, yes, I was :) > > >=20 > > > You can not add a kobject to a structure and then somehow think you= can > > > just ignore the reference counting issues involved.=A0 If a kobject= is > > > part of a structure then the kobject is responsible for controling = the > > > lifespan of the memory, nothing else can be. > > >=20 > > > So by making the kobject dynamic, you properly handle that memory > > > lifespan of the object, instead of having to worry about the lifesp= an of > > > the larger object (which the original patch was not doing.) > > >=20 > > > Does that make sense? > > >=20 > > That part makes sense, yes, thanks. The part that I'm trying to strai= ghten > > out is, why was kobject even added to the struct cma_stat in the firs= t > > place? Why not just leave .stat as a static member variable, without > > a kobject in it, and done? > >=20 >=20 > Sorry, I think I get it now: this is in order to allow a separate lifet= ime > for the .stat member. I was sort of implicitly assuming that the "right= " > way to do it is just have the whole object use one lifetime management, > but as you say, there is no kobject being added to the parent. >=20 > I still feel odd about the allocation and freeing of something that see= ms > to be logically the same lifetime (other than perhaps a few, briefly pe= nding > sysfs reads, at the end of life). So I'd still think that the kobject s= hould > be added to the parent... That's fine if you want to add it to the parent. If so, then the kobject controls the lifetime of the structure, nothing else can. Either is fine with me, what is "forbidden" is having a kobject and somehow thinking that it does not control the lifetime of the structure. thanks, greg k-h