From 2a4a0b5b06e4ffa720c8d82bf3c474426aeb3a7e Mon Sep 17 00:00:00 2001 From: Henrik Grimler Date: Sat, 4 Jul 2020 12:57:22 +0200 Subject: [PATCH] openmpi: fix memory_patcher_component --- ...y-patcher-memory_patcher_component.c.patch | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/packages/openmpi/opal-mca-memory-patcher-memory_patcher_component.c.patch b/packages/openmpi/opal-mca-memory-patcher-memory_patcher_component.c.patch index 2988461a8..231861b74 100644 --- a/packages/openmpi/opal-mca-memory-patcher-memory_patcher_component.c.patch +++ b/packages/openmpi/opal-mca-memory-patcher-memory_patcher_component.c.patch @@ -1,5 +1,5 @@ ---- ../openmpi-4.0.2/opal/mca/memory/patcher/memory_patcher_component.c 2019-10-07 20:20:48.000000000 +0200 -+++ ./opal/mca/memory/patcher/memory_patcher_component.c 2019-10-25 20:55:18.860358143 +0200 +--- ./opal/mca/memory/patcher/memory_patcher_component.c.orig 2020-06-10 21:35:37.000000000 +0000 ++++ ./opal/mca/memory/patcher/memory_patcher_component.c 2020-07-04 10:42:40.459784443 +0000 @@ -250,9 +250,9 @@ advice == MADV_FREE || #endif @@ -12,7 +12,29 @@ { opal_mem_hooks_release_hook (start, length, false); } -@@ -432,8 +432,8 @@ +@@ -346,10 +346,17 @@ + #define IPCOP_shmdt 22 + #endif + +-#define HAS_SHMDT (defined(SYS_shmdt) || \ +- (defined(IPCOP_shmdt) && defined(SYS_ipc))) +-#define HAS_SHMAT (defined(SYS_shmat) || \ +- (defined(IPCOP_shmat) && defined(SYS_ipc))) ++#if defined(SYS_shmdt) || (defined(IPCOP_shmdt) && defined(SYS_ipc)) ++# define HAS_SHMDT 1 ++# else ++# define HAS_SHMDT 0 ++#endif ++ ++#if defined(SYS_shmat) || (defined(IPCOP_shmat) && defined(SYS_ipc)) ++# define HAS_SHMAT 1 ++# else ++# define HAS_SHMAT 0 ++#endif + + #if (HAS_SHMDT || HAS_SHMAT) && defined(__linux__) + +@@ -444,8 +447,8 @@ uintptr_t attach_addr = (uintptr_t)shmaddr; if (shmflg & SHM_RND) { @@ -23,3 +45,12 @@ } opal_mem_hooks_release_hook ((void*)attach_addr, size, false); } +@@ -457,7 +460,7 @@ + unsigned long ret; + ret = memory_patcher_syscall(SYS_ipc, IPCOP_shmat, + shmid, shmflg, &shmaddr, shmaddr); +- result = (ret > -(unsigned long)SHMLBA) ? (void *)ret : (void *)shmaddr; ++ result = (ret > -(unsigned long)sysconf(_SC_PAGESIZE)) ? (void *)ret : (void *)shmaddr; + #endif + } else { + result = original_shmat (shmid, shmaddr, shmflg);