numactl: fix a error about lib32-numactl

lib32-numactl has a error:
root@intel-x86-64:~# numademo -t -e 1M
Configured Nodes does not match available memory nodes

That's because (long long int) is assigned to (long int).
This will cause (long int) overflow on 32bit system.

Unify variable types and fix it.

Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Hongzhi.Song 2019-09-22 20:30:20 -07:00 committed by Khem Raj
parent 2dde8de633
commit 665235b74a
2 changed files with 101 additions and 0 deletions

View File

@ -0,0 +1,100 @@
From 68485f8516884377e54c623b0deff73f97321d96 Mon Sep 17 00:00:00 2001
From: "Hongzhi.Song" <hongzhi.song@windriver.com>
Date: Thu, 19 Sep 2019 04:32:31 -0400
Subject: [PATCH] numademo: fix error on 32bit system
Error Info on 32bit:
root@intel-x86:~# numademo -t -e 1M
Configured Nodes does not match available memory nodes
That's because sizeof(long)=4Word, but sizeof(long long)=8Word
on 32bit. So (long long) assigning to (long) maybe cause overflow.
long numa_node_size(int node, long *freep)
{
...
long sz = numa_node_size64_int(node, &f2);
~^^~
return sz;
...
}
long long numa_node_size64(int node, long long *freep)
~^^ ^^~
{
...
}
Unify the return type of above functions.
Upstream-Status: Accepted [next version is after 2.0.13 or 2.0.14]
[https://github.com/numactl/numactl/commit/a7c4bc790a191d3e42b63850b409c1a72b75a4e1]
Submitted [https://github.com/numactl/numactl/pull/79]
[The first patch was merged but has a error, then the second fix it.]
Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
---
libnuma.c | 4 ++--
numa.h | 2 +-
numademo.c | 2 +-
test/move_pages.c | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/libnuma.c b/libnuma.c
index cac8851..8b5c6aa 100644
--- a/libnuma.c
+++ b/libnuma.c
@@ -791,10 +791,10 @@ long long numa_node_size64(int node, long long *freep)
make_internal_alias(numa_node_size64);
-long numa_node_size(int node, long *freep)
+long long numa_node_size(int node, long long *freep)
{
long long f2;
- long sz = numa_node_size64_int(node, &f2);
+ long long sz = numa_node_size64_int(node, &f2);
if (freep)
*freep = f2;
return sz;
diff --git a/numa.h b/numa.h
index 3a8c543..268fb1d 100644
--- a/numa.h
+++ b/numa.h
@@ -143,7 +143,7 @@ int numa_preferred(void);
/* Return node size and free memory */
long long numa_node_size64(int node, long long *freep);
-long numa_node_size(int node, long *freep);
+long long numa_node_size(int node, long long *freep);
int numa_pagesize(void);
diff --git a/numademo.c b/numademo.c
index a720db0..8c56da8 100644
--- a/numademo.c
+++ b/numademo.c
@@ -301,7 +301,7 @@ int max_node, numnodes;
int get_node_list(void)
{
int a, got_nodes = 0;
- long free_node_sizes;
+ long long free_node_sizes;
numnodes = numa_num_configured_nodes();
node_to_use = (int *)malloc(numnodes * sizeof(int));
diff --git a/test/move_pages.c b/test/move_pages.c
index d1d8436..f8ff25d 100644
--- a/test/move_pages.c
+++ b/test/move_pages.c
@@ -26,7 +26,7 @@ int *node_to_use;
int get_node_list()
{
int a, got_nodes = 0, max_node, numnodes;
- long free_node_sizes;
+ long long free_node_sizes;
numnodes = numa_num_configured_nodes();
node_to_use = (int *)malloc(numnodes * sizeof(int));
--
2.23.0

View File

@ -18,6 +18,7 @@ SRC_URI = "git://github.com/numactl/numactl \
file://Makefile \
file://run-ptest \
file://0001-define-run-test-target.patch \
file://0001-numademo-fix-error-on-32bit-system.patch \
"
S = "${WORKDIR}/git"