| From 794933b38354a2612cf2c471f11798b306f35315 Mon Sep 17 00:00:00 2001 |
| From: Jan Stancek <jstancek@redhat.com> |
| Date: Mon, 20 May 2019 20:47:20 +0200 |
| Subject: [PATCH] shmctl01: don't use hardcoded index == 0 for SHM_STAT test |
| |
| Test fails on SHM_STAT testcase: |
| shmctl01 5 TFAIL : shmctl01.c:173: shmctl01 call failed |
| errno = 22 : Invalid argument |
| shmctl(0, SHM_STAT, 0x601060) = -EINVAL |
| |
| since following commit: |
| commit 99db46ea292780cd978d56932d9445b1e8bdafe8 |
| Author: Manfred Spraul <manfred@colorfullife.com> |
| Date: Tue May 14 15:46:36 2019 -0700 |
| ipc: do cyclic id allocation for the ipc object. |
| |
| Don't rely on index 0 being always available, but instead |
| use (maximum) index returned by SHM_INFO. |
| |
| Signed-off-by: Jan Stancek <jstancek@redhat.com> |
| Reviewed-by: Petr Vorel <pvorel@suse.cz> |
| Acked-by: Cyril Hrubis <chrubis@suse.cz> |
| |
| Upstream-Status: Backport |
| [https://github.com/linux-test-project/ltp/commit/db0a43d9388be2c347a8306751bbe6bec086d062] |
| |
| Signed-off-by: Hongzhi Song <hongzhi.song@windriver.com> |
| Signed-off-by: Yi Zhao <yi.zhao@windriver.com> |
| --- |
| testcases/kernel/syscalls/ipc/shmctl/shmctl01.c | 21 ++++++++++++++++++--- |
| 1 file changed, 18 insertions(+), 3 deletions(-) |
| |
| diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c b/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c |
| index 1b46977..52bf23a 100644 |
| --- a/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c |
| +++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c |
| @@ -79,6 +79,7 @@ static void func_info(int ret); |
| |
| /* Check routine for SHM_STAT */ |
| static void func_sstat(int ret); |
| +static void func_sstat_setup(void); |
| |
| /* Check routine for SHM_LOCK */ |
| static void func_lock(int ret); |
| @@ -110,7 +111,7 @@ static struct test_case_t { |
| #endif |
| {&shm_id_1, IPC_SET, &buf, func_set, set_setup}, |
| {&shm_id_1, IPC_INFO, (struct shmid_ds *) &info, func_info, NULL}, |
| - {&shm_index, SHM_STAT, &buf, func_sstat, NULL}, |
| + {&shm_index, SHM_STAT, &buf, func_sstat, func_sstat_setup}, |
| {&shm_id_1, SHM_LOCK, NULL, func_lock, NULL}, |
| {&shm_id_1, SHM_UNLOCK, NULL, func_unlock, NULL}, |
| {&shm_id_1, IPC_RMID, NULL, func_rmid, NULL}, |
| @@ -407,9 +408,23 @@ static void func_info(int ret) |
| static void func_sstat(int ret) |
| { |
| if (ret >= 0) |
| - tst_resm(TPASS, "get correct shared memory id"); |
| + tst_resm(TPASS, "get correct shared memory id for index: %d", |
| + shm_index); |
| else |
| - tst_resm(TFAIL, "shared memory id is incorrect"); |
| + tst_resm(TFAIL, "shared memory id is incorrect, index: %d", |
| + shm_index); |
| +} |
| + |
| +static void func_sstat_setup(void) |
| +{ |
| + struct shm_info tmp; |
| + int ret; |
| + |
| + ret = shmctl(shm_id_1, SHM_INFO, (void *)&tmp); |
| + if (ret < 0) |
| + tst_resm(TFAIL|TERRNO, "shmctl(SHM_INFO)"); |
| + else |
| + shm_index = ret; |
| } |
| |
| static void func_lock(int ret) |
| -- |
| 2.7.4 |
| |