linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES
@ 2022-09-06 20:35 Phil Auld
  2022-09-06 20:59 ` Yury Norov
  0 siblings, 1 reply; 5+ messages in thread
From: Phil Auld @ 2022-09-06 20:35 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, Rafael J . Wysocki, Barry Song, Tian Tao,
	Yury Norov, feng xiangjun, stable

As PAGE_SIZE is unsigned long, -1 > PAGE_SIZE when NR_CPUS <= 3.
This leads to very large file sizes:

topology$ ls -l
total 0
-r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 core_cpus
-r--r--r-- 1 root root                 4096 Sep  5 11:59 core_cpus_list
-r--r--r-- 1 root root                 4096 Sep  5 10:58 core_id
-r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 core_siblings
-r--r--r-- 1 root root                 4096 Sep  5 11:59 core_siblings_list
-r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 die_cpus
-r--r--r-- 1 root root                 4096 Sep  5 11:59 die_cpus_list
-r--r--r-- 1 root root                 4096 Sep  5 11:59 die_id
-r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 package_cpus
-r--r--r-- 1 root root                 4096 Sep  5 11:59 package_cpus_list
-r--r--r-- 1 root root                 4096 Sep  5 10:58 physical_package_id
-r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 thread_siblings
-r--r--r-- 1 root root                 4096 Sep  5 11:59 thread_siblings_list

Adjust the inequality to catch the case when NR_CPUS is configured
to a small value.

Fixes: 7ee951acd31a ("drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist")
Reported-by: feng xiangjun <fengxj325@gmail.com>
Signed-off-by: Phil Auld <pauld@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Yury Norov <yury.norov@gmail.com>
Cc: stable@vger.kernel.org
Cc: feng xiangjun <fengxj325@gmail.com>
---

v2: Remove the +/-1 completely from the test since it will produce the
same results, and remove some extra parentheses.

 include/linux/cpumask.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index bd047864c7ac..e8ad12b5b9d2 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -1127,9 +1127,10 @@ cpumap_print_list_to_buf(char *buf, const struct cpumask *mask,
  * cover a worst-case of every other cpu being on one of two nodes for a
  * very large NR_CPUS.
  *
- *  Use PAGE_SIZE as a minimum for smaller configurations.
+ *  Use PAGE_SIZE as a minimum for smaller configurations while avoiding
+ *  unsigned comparison to -1.
  */
-#define CPUMAP_FILE_MAX_BYTES  ((((NR_CPUS * 9)/32 - 1) > PAGE_SIZE) \
+#define CPUMAP_FILE_MAX_BYTES  (((NR_CPUS * 9)/32 > PAGE_SIZE) \
 					? (NR_CPUS * 9)/32 - 1 : PAGE_SIZE)
 #define CPULIST_FILE_MAX_BYTES  (((NR_CPUS * 7)/2 > PAGE_SIZE) ? (NR_CPUS * 7)/2 : PAGE_SIZE)
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES
  2022-09-06 20:35 [PATCH v2] drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES Phil Auld
@ 2022-09-06 20:59 ` Yury Norov
  2022-09-06 22:19   ` Phil Auld
  0 siblings, 1 reply; 5+ messages in thread
From: Yury Norov @ 2022-09-06 20:59 UTC (permalink / raw)
  To: Phil Auld
  Cc: linux-kernel, Greg Kroah-Hartman, Rafael J . Wysocki, Barry Song,
	Tian Tao, feng xiangjun, stable

On Tue, Sep 06, 2022 at 04:35:42PM -0400, Phil Auld wrote:
> As PAGE_SIZE is unsigned long, -1 > PAGE_SIZE when NR_CPUS <= 3.
> This leads to very large file sizes:
> 
> topology$ ls -l
> total 0
> -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 core_cpus
> -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_cpus_list
> -r--r--r-- 1 root root                 4096 Sep  5 10:58 core_id
> -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 core_siblings
> -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_siblings_list
> -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 die_cpus
> -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_cpus_list
> -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_id
> -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 package_cpus
> -r--r--r-- 1 root root                 4096 Sep  5 11:59 package_cpus_list
> -r--r--r-- 1 root root                 4096 Sep  5 10:58 physical_package_id
> -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 thread_siblings
> -r--r--r-- 1 root root                 4096 Sep  5 11:59 thread_siblings_list
> 
> Adjust the inequality to catch the case when NR_CPUS is configured
> to a small value.
> 
> Fixes: 7ee951acd31a ("drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist")
> Reported-by: feng xiangjun <fengxj325@gmail.com>
> Signed-off-by: Phil Auld <pauld@redhat.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Yury Norov <yury.norov@gmail.com>
> Cc: stable@vger.kernel.org
> Cc: feng xiangjun <fengxj325@gmail.com>

Applied on bitmap-for-next. Thanks!

> ---
> 
> v2: Remove the +/-1 completely from the test since it will produce the
> same results, and remove some extra parentheses.
> 
>  include/linux/cpumask.h | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
> index bd047864c7ac..e8ad12b5b9d2 100644
> --- a/include/linux/cpumask.h
> +++ b/include/linux/cpumask.h
> @@ -1127,9 +1127,10 @@ cpumap_print_list_to_buf(char *buf, const struct cpumask *mask,
>   * cover a worst-case of every other cpu being on one of two nodes for a
>   * very large NR_CPUS.
>   *
> - *  Use PAGE_SIZE as a minimum for smaller configurations.
> + *  Use PAGE_SIZE as a minimum for smaller configurations while avoiding
> + *  unsigned comparison to -1.
>   */
> -#define CPUMAP_FILE_MAX_BYTES  ((((NR_CPUS * 9)/32 - 1) > PAGE_SIZE) \
> +#define CPUMAP_FILE_MAX_BYTES  (((NR_CPUS * 9)/32 > PAGE_SIZE) \
>  					? (NR_CPUS * 9)/32 - 1 : PAGE_SIZE)
>  #define CPULIST_FILE_MAX_BYTES  (((NR_CPUS * 7)/2 > PAGE_SIZE) ? (NR_CPUS * 7)/2 : PAGE_SIZE)
>  
> -- 
> 2.31.1

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES
  2022-09-06 20:59 ` Yury Norov
@ 2022-09-06 22:19   ` Phil Auld
  2022-09-22 11:02     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Phil Auld @ 2022-09-06 22:19 UTC (permalink / raw)
  To: Yury Norov
  Cc: linux-kernel, Greg Kroah-Hartman, Rafael J . Wysocki, Barry Song,
	Tian Tao, feng xiangjun, stable

On Tue, Sep 06, 2022 at 01:59:53PM -0700 Yury Norov wrote:
> On Tue, Sep 06, 2022 at 04:35:42PM -0400, Phil Auld wrote:
> > As PAGE_SIZE is unsigned long, -1 > PAGE_SIZE when NR_CPUS <= 3.
> > This leads to very large file sizes:
> > 
> > topology$ ls -l
> > total 0
> > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 core_cpus
> > -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_cpus_list
> > -r--r--r-- 1 root root                 4096 Sep  5 10:58 core_id
> > -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 core_siblings
> > -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_siblings_list
> > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 die_cpus
> > -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_cpus_list
> > -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_id
> > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 package_cpus
> > -r--r--r-- 1 root root                 4096 Sep  5 11:59 package_cpus_list
> > -r--r--r-- 1 root root                 4096 Sep  5 10:58 physical_package_id
> > -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 thread_siblings
> > -r--r--r-- 1 root root                 4096 Sep  5 11:59 thread_siblings_list
> > 
> > Adjust the inequality to catch the case when NR_CPUS is configured
> > to a small value.
> > 
> > Fixes: 7ee951acd31a ("drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist")
> > Reported-by: feng xiangjun <fengxj325@gmail.com>
> > Signed-off-by: Phil Auld <pauld@redhat.com>
> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> > Cc: Yury Norov <yury.norov@gmail.com>
> > Cc: stable@vger.kernel.org
> > Cc: feng xiangjun <fengxj325@gmail.com>
> 
> Applied on bitmap-for-next. Thanks!
>

Great, thanks!

> > ---
> > 
> > v2: Remove the +/-1 completely from the test since it will produce the
> > same results, and remove some extra parentheses.
> > 
> >  include/linux/cpumask.h | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
> > index bd047864c7ac..e8ad12b5b9d2 100644
> > --- a/include/linux/cpumask.h
> > +++ b/include/linux/cpumask.h
> > @@ -1127,9 +1127,10 @@ cpumap_print_list_to_buf(char *buf, const struct cpumask *mask,
> >   * cover a worst-case of every other cpu being on one of two nodes for a
> >   * very large NR_CPUS.
> >   *
> > - *  Use PAGE_SIZE as a minimum for smaller configurations.
> > + *  Use PAGE_SIZE as a minimum for smaller configurations while avoiding
> > + *  unsigned comparison to -1.
> >   */
> > -#define CPUMAP_FILE_MAX_BYTES  ((((NR_CPUS * 9)/32 - 1) > PAGE_SIZE) \
> > +#define CPUMAP_FILE_MAX_BYTES  (((NR_CPUS * 9)/32 > PAGE_SIZE) \
> >  					? (NR_CPUS * 9)/32 - 1 : PAGE_SIZE)
> >  #define CPULIST_FILE_MAX_BYTES  (((NR_CPUS * 7)/2 > PAGE_SIZE) ? (NR_CPUS * 7)/2 : PAGE_SIZE)
> >  
> > -- 
> > 2.31.1
> 

-- 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES
  2022-09-06 22:19   ` Phil Auld
@ 2022-09-22 11:02     ` Greg Kroah-Hartman
  2022-09-22 12:38       ` Phil Auld
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2022-09-22 11:02 UTC (permalink / raw)
  To: Phil Auld
  Cc: Yury Norov, linux-kernel, Rafael J . Wysocki, Barry Song,
	Tian Tao, feng xiangjun, stable

On Tue, Sep 06, 2022 at 06:19:23PM -0400, Phil Auld wrote:
> On Tue, Sep 06, 2022 at 01:59:53PM -0700 Yury Norov wrote:
> > On Tue, Sep 06, 2022 at 04:35:42PM -0400, Phil Auld wrote:
> > > As PAGE_SIZE is unsigned long, -1 > PAGE_SIZE when NR_CPUS <= 3.
> > > This leads to very large file sizes:
> > > 
> > > topology$ ls -l
> > > total 0
> > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 core_cpus
> > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_cpus_list
> > > -r--r--r-- 1 root root                 4096 Sep  5 10:58 core_id
> > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 core_siblings
> > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_siblings_list
> > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 die_cpus
> > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_cpus_list
> > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_id
> > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 package_cpus
> > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 package_cpus_list
> > > -r--r--r-- 1 root root                 4096 Sep  5 10:58 physical_package_id
> > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 thread_siblings
> > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 thread_siblings_list
> > > 
> > > Adjust the inequality to catch the case when NR_CPUS is configured
> > > to a small value.
> > > 
> > > Fixes: 7ee951acd31a ("drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist")
> > > Reported-by: feng xiangjun <fengxj325@gmail.com>
> > > Signed-off-by: Phil Auld <pauld@redhat.com>
> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> > > Cc: Yury Norov <yury.norov@gmail.com>
> > > Cc: stable@vger.kernel.org
> > > Cc: feng xiangjun <fengxj325@gmail.com>
> > 
> > Applied on bitmap-for-next. Thanks!
> >
> 
> Great, thanks!

This is hitting people already and causing problems, so I'll go add it
to my tree as well to get it to Linus quicker.  Here's one report of the
problem:
	https://github.com/util-linux/util-linux/issues/1810

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES
  2022-09-22 11:02     ` Greg Kroah-Hartman
@ 2022-09-22 12:38       ` Phil Auld
  0 siblings, 0 replies; 5+ messages in thread
From: Phil Auld @ 2022-09-22 12:38 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Yury Norov, linux-kernel, Rafael J . Wysocki, Barry Song,
	Tian Tao, feng xiangjun, stable

On Thu, Sep 22, 2022 at 01:02:45PM +0200 Greg Kroah-Hartman wrote:
> On Tue, Sep 06, 2022 at 06:19:23PM -0400, Phil Auld wrote:
> > On Tue, Sep 06, 2022 at 01:59:53PM -0700 Yury Norov wrote:
> > > On Tue, Sep 06, 2022 at 04:35:42PM -0400, Phil Auld wrote:
> > > > As PAGE_SIZE is unsigned long, -1 > PAGE_SIZE when NR_CPUS <= 3.
> > > > This leads to very large file sizes:
> > > > 
> > > > topology$ ls -l
> > > > total 0
> > > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 core_cpus
> > > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_cpus_list
> > > > -r--r--r-- 1 root root                 4096 Sep  5 10:58 core_id
> > > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 core_siblings
> > > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_siblings_list
> > > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 die_cpus
> > > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_cpus_list
> > > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_id
> > > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 package_cpus
> > > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 package_cpus_list
> > > > -r--r--r-- 1 root root                 4096 Sep  5 10:58 physical_package_id
> > > > -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 thread_siblings
> > > > -r--r--r-- 1 root root                 4096 Sep  5 11:59 thread_siblings_list
> > > > 
> > > > Adjust the inequality to catch the case when NR_CPUS is configured
> > > > to a small value.
> > > > 
> > > > Fixes: 7ee951acd31a ("drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist")
> > > > Reported-by: feng xiangjun <fengxj325@gmail.com>
> > > > Signed-off-by: Phil Auld <pauld@redhat.com>
> > > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > > Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> > > > Cc: Yury Norov <yury.norov@gmail.com>
> > > > Cc: stable@vger.kernel.org
> > > > Cc: feng xiangjun <fengxj325@gmail.com>
> > > 
> > > Applied on bitmap-for-next. Thanks!
> > >
> > 
> > Great, thanks!
> 
> This is hitting people already and causing problems, so I'll go add it
> to my tree as well to get it to Linus quicker.  Here's one report of the
> problem:
> 	https://github.com/util-linux/util-linux/issues/1810
>

Arrgh! Thanks Greg. I stopped watching it when it got merged above but yeah,
this needs to get in soon and then get into any stable trees that got the first
one. Sorry about that!

Cheers,
Phil


> thanks,
> 
> greg k-h
> 

-- 


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-09-22 12:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06 20:35 [PATCH v2] drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES Phil Auld
2022-09-06 20:59 ` Yury Norov
2022-09-06 22:19   ` Phil Auld
2022-09-22 11:02     ` Greg Kroah-Hartman
2022-09-22 12:38       ` Phil Auld

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).