All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phil Auld <pauld@redhat.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Tian Tao <tiantao6@hisilicon.com>
Subject: Re: [PATCH] drivers/base/node.c: fix userspace break from using bin_attributes for cpumap and cpulist
Date: Wed, 13 Jul 2022 09:14:48 -0400	[thread overview]
Message-ID: <Ys7FSCAYOQH+YLbS@lorien.usersys.redhat.com> (raw)
In-Reply-To: <Ys7DMC66cUWUcvtu@kroah.com>

On Wed, Jul 13, 2022 at 03:05:52PM +0200 Greg Kroah-Hartman wrote:
> On Wed, Jul 13, 2022 at 07:47:58AM -0400, Phil Auld wrote:
> > Hi Greg,
> > 
> > On Wed, Jul 13, 2022 at 08:06:02AM +0200 Greg Kroah-Hartman wrote:
> > > On Tue, Jul 12, 2022 at 05:43:01PM -0400, Phil Auld wrote:
> > > > Using bin_attributes with a 0 size causes fstat and friends to return that 0 size.
> > > > This breaks userspace code that retrieves the size before reading the file. Rather
> > > > than reverting 75bd50fa841 ("drivers/base/node.c: use bin_attribute to break the size
> > > > limitation of cpumap ABI") let's put in a size value at compile time. Use direct
> > > > comparison and a worst-case maximum to ensure compile time constants. For cpulist the 
> > > > max is on the order of NR_CPUS * (ceil(log10(NR_CPUS)) + 1) which for 8192 is 40960. 
> > > > In order to get near that you'd need a system with every other CPU on one node or 
> > > > something similar. e.g. (0,2,4,... 1024,1026...). We set it to a min of PAGE_SIZE 
> > > > to retain the older behavior. For cpumap, PAGE_SIZE is plenty big.
> > > 
> > > Does userspace care about that size, or can we just put any value in
> > > there and it will be ok?  How about just returning to the original
> > > PAGE_SIZE value to keep things looking identical, will userspace not
> > > read more than that size from the file then?
> > >
> > 
> > I'll go look. But I think the point of pre-reading the size with fstat is to allocate
> > a buffer to read into. So that may be a problem. 
> > 
> > That said, I believe in this case it's the cpulist file which given the use of ranges
> > is very unlikely to actually get that big. 
> 
> That is why we had to change this to a binary file.  Think about
> every-other CPU being there, that's a huge list.  This already was
> broken on some systems which is why it had to be changed (i.e. we didn't
> change it for no reason at all.)
>

I didn't think you did and the change made sense. I did not expect this to
cause problems either when I backported it... :)

> > > > On an 80 cpu 4-node sytem (NR_CPUS == 8192)
> > > 
> > > We have systems running Linux with many more cpus than that, and your
> > > company knows this :)
> > 
> > The 80 cpus here don't matter and we only build with NR_CPUS = 8192 :)
> > 
> > But yes, I realize now that the cpumap part I posted is broken for larger
> > NR_CPUS.  I originally had it as NR_CPUS, but as I said in my reply to Barry,
> > it wants to be ~= NR_CPUS/4 + NR_CPUS/32. I'll change that.  
> > 
> > I think we should decide on a max for each and use that. 
> 
> Sure, pick a max size please, that's fine with me.

Right. I had another reply that crossed in the ether.

I can repost with the new version shortly.

It's using cpumap at NR_CPUS/2 and cpulist at NR_CPUS*6. 


Cheers,
Phil

> 
> greg k-h
> 

-- 


  reply	other threads:[~2022-07-13 13:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-12 21:43 [PATCH] drivers/base/node.c: fix userspace break from using bin_attributes for cpumap and cpulist Phil Auld
2022-07-12 23:18 ` Barry Song
2022-07-13 11:37   ` Phil Auld
2022-07-13 12:00     ` Barry Song
2022-07-13 12:20       ` Phil Auld
2022-07-13 13:06     ` Greg Kroah-Hartman
2022-07-13  6:06 ` Greg Kroah-Hartman
2022-07-13 11:47   ` Phil Auld
2022-07-13 13:05     ` Greg Kroah-Hartman
2022-07-13 13:14       ` Phil Auld [this message]
2022-07-13 13:10     ` Phil Auld

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ys7FSCAYOQH+YLbS@lorien.usersys.redhat.com \
    --to=pauld@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=tiantao6@hisilicon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.