Re: [PATCH 1/1] container_of: Document container_of() is not to be used in new code
From: Greg Kroah-Hartman
Date: Sat May 24 2025 - 11:07:00 EST
On Sat, May 24, 2025 at 01:45:26PM +0100, David Laight wrote:
> On Fri, 23 May 2025 10:36:45 +0200
> Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> > On Thu, May 22, 2025 at 10:01:42PM +0100, David Laight wrote:
> > > On Wed, 21 May 2025 15:31:36 +0200
> > > Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > > On Wed, May 21, 2025 at 03:27:19PM +0200, Greg Kroah-Hartman wrote:
> > > ...
> > > > I tried it for the whole tree, and ugh, there are some real "errors" in
> > > > there. The nfs inode handling logic is crazy, passing in a const
> > > > pointer and then setting fields in it. So this will be some real work
> > > > to unwind and fix in some places.
> > >
> > > Perhaps change the really dodgy ones to container_of_deconst().
> > > And fix the easy ones so they compile with the 'const' check.
> >
> > Ick, no, let me fix these up properly. I'm picking them off, and have
> > found some real issues here. It will give me something to build patches
> > for over time while doing stable kernel test builds :)
>
> I was mostly thinking of it as temporary measure help find the easy cases.
>
> But having container_of_const() that preserves 'const-ness' and
> container_of() that always removes it seems wrong.
> Wouldn't preserving const-ness for a W=1 build would be a more normal way
> to do it?
Maybe, yes, but as container_of() has ALWAYS removed the const-ness,
that's what the codebase is used to, so let's just give me a release
cycle or two to clean up the tree and then I'll just move
container_of() to preserve it and all will be good.
thanks,
greg k-h