RE: [PATCH 1/2] CPU, NUMA topology ABIs: clarify the overflow issue of sysfs pagebuf

From: Song Bao Hua (Barry Song)
Date: Thu Apr 29 2021 - 17:08:55 EST




> -----Original Message-----
> From: Dave Hansen [mailto:dave.hansen@xxxxxxxxx]
> Sent: Friday, April 30, 2021 2:21 AM
> To: tiantao (H) <tiantao6@xxxxxxxxxxxxx>; corbet@xxxxxxx;
> gregkh@xxxxxxxxxxxxxxxxxxx; Song Bao Hua (Barry Song)
> <song.bao.hua@xxxxxxxxxxxxx>
> Cc: linux-doc@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Rafael J.
> Wysocki <rafael@xxxxxxxxxx>; Peter Zijlstra <peterz@xxxxxxxxxxxxx>; Valentin
> Schneider <valentin.schneider@xxxxxxx>; Dave Hansen
> <dave.hansen@xxxxxxxxxxxxxxx>; Daniel Bristot de Oliveira <bristot@xxxxxxxxxx>
> Subject: Re: [PATCH 1/2] CPU, NUMA topology ABIs: clarify the overflow issue
> of sysfs pagebuf
>
> On 4/29/21 12:03 AM, Tian Tao wrote:
> > diff --git a/Documentation/ABI/stable/sysfs-devices-node
> b/Documentation/ABI/stable/sysfs-devices-node
> > index 484fc04..82dfe64 100644
> > --- a/Documentation/ABI/stable/sysfs-devices-node
> > +++ b/Documentation/ABI/stable/sysfs-devices-node
> > @@ -47,7 +47,10 @@ What: /sys/devices/system/node/nodeX/cpulist
> > Date: October 2002
> > Contact: Linux Memory Management list <linux-mm@xxxxxxxxx>
> > Description:
> > - The CPUs associated to the node.
> > + The CPUs associated to the node. The format is like 0-3,
> > + 8-11, 14,17. maximum size is PAGE_SIZE, so the tail
> > + of the string will be trimmed while its size is larger
> > + than PAGE_SIZE.
>
> I think it's pretty arguable that truncating output on a real system is
> an ABI break. Doing this would make the interface rather useless.
>
> Don't we need a real solution rather than throwing up our hands?
>
> Do we think >PAGE_SIZE data out of a sysfs file is a worse ABI break or
> something?

This kind of cpu list ABIs have been there for many years but have
never been documented well.

We have two ABIs:
xxx_cpus - in format like 3333333333
xxx_cpus_list - in format like 0,3,5,7,9,11,13....

xxx_cpus_list is another human-readable version of xxx_cpus. It doesn't
include any more useful information than xxx_cpus.

xxx_cpus won't overflow based on BUILD_BUG_ON and maximum NR_CPUS
in kconfig nowadays.

if people all agree the trimmed list is a break of ABI, I think we may
totally remove this list. For these days, this list probably has never
overflowed but literally this could happen.

thoughts?

Thanks
Barry