lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YCIyHuOX3E+tP+AO@kroah.com>
Date:   Tue, 9 Feb 2021 07:56:30 +0100
From:   Greg KH <gregkh@...uxfoundation.org>
To:     John Hubbard <jhubbard@...dia.com>
Cc:     Minchan Kim <minchan@...nel.org>,
        Andrew Morton <akpm@...ux-foundation.org>,
        linux-mm <linux-mm@...ck.org>,
        LKML <linux-kernel@...r.kernel.org>, surenb@...gle.com,
        joaodias@...gle.com, willy@...radead.org
Subject: Re: [PATCH v2] mm: cma: support sysfs

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:
> > > > ...
> > > > > > >         char name[CMA_MAX_NAME];
> > > > > > > +#ifdef CONFIG_CMA_SYSFS
> > > > > > > +    struct cma_stat    *stat;
> > > > > > 
> > > > > > This should not be a pointer. By making it a pointer, you've added a bunch of pointless
> > > > > > extra code to the implementation.
> > > > > 
> > > > > 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.
> > > > 
> > > > 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 methods
> > > > to be used *if* you are dealing with kobjects. That's a narrower point.
> > > > 
> > > > I can't imagine that he would have insisted on having additional
> > > > allocations just so that kobj freeing methods could be used. :)
> > > 
> > > Um, yes, I was :)
> > > 
> > > You can not add a kobject to a structure and then somehow think you can
> > > just ignore the reference counting issues involved.  If a kobject is
> > > part of a structure then the kobject is responsible for controling the
> > > lifespan of the memory, nothing else can be.
> > > 
> > > So by making the kobject dynamic, you properly handle that memory
> > > lifespan of the object, instead of having to worry about the lifespan of
> > > the larger object (which the original patch was not doing.)
> > > 
> > > Does that make sense?
> > > 
> > That part makes sense, yes, thanks. The part that I'm trying to straighten
> > out is, why was kobject even added to the struct cma_stat in the first
> > place? Why not just leave .stat as a static member variable, without
> > a kobject in it, and done?
> > 
> 
> Sorry, I think I get it now: this is in order to allow a separate lifetime
> 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.
> 
> I still feel odd about the allocation and freeing of something that seems
> to be logically the same lifetime (other than perhaps a few, briefly pending
> sysfs reads, at the end of life). So I'd still think that the kobject should
> 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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ