public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH v2] shmget02: check if CONFIG_HUGETLBFS enabled in kernel
@ 2021-08-02 16:06 Bogdan Lezhepekov
  2021-08-03 15:20 ` Cyril Hrubis
  0 siblings, 1 reply; 2+ messages in thread
From: Bogdan Lezhepekov @ 2021-08-02 16:06 UTC (permalink / raw)
  To: ltp

Two tests call shmget with a flag SHM_HUGETLB, trying to
allocate the segment using "huge" pages. The hugetlbpage
support needs to be enabled in kernel (CONFIG_HUGETLBFS),
otherwise shmget returns EINVAL.

Signed-off-by: Bogdan Lezhepekov <bogdan.lezhepekov@suse.com>
---
 .../kernel/syscalls/ipc/shmget/shmget02.c     | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/testcases/kernel/syscalls/ipc/shmget/shmget02.c b/testcases/kernel/syscalls/ipc/shmget/shmget02.c
index 66a4b94ee..7616178be 100644
--- a/testcases/kernel/syscalls/ipc/shmget/shmget02.c
+++ b/testcases/kernel/syscalls/ipc/shmget/shmget02.c
@@ -32,10 +32,13 @@
 #include <sys/shm.h>
 #include <grp.h>
 #include "tst_safe_sysv_ipc.h"
+#include "tst_kconfig.h"
 #include "tst_test.h"
 #include "libnewipc.h"
 #include "lapi/shm.h"
 
+#define CONFIG_HUGETLBFS "CONFIG_HUGETLBFS"
+
 static int shm_id = -1;
 static key_t shmkey, shmkey1;
 static struct passwd *pw;
@@ -60,6 +63,17 @@ static struct tcase {
 	{&shmkey1, SHM_SIZE, IPC_CREAT | SHM_HUGETLB, 0, 0, ENOMEM}
 };
 
+static int hugetlbfs_supported()
+{
+	struct tst_kconfig_var kconfig = {
+		.id = CONFIG_HUGETLBFS,
+		.id_len = sizeof(CONFIG_HUGETLBFS)-1,
+	};
+
+	tst_kconfig_read(&kconfig, 1);
+	return kconfig.choice == 'y';
+}
+
 static void do_test(unsigned int n)
 {
 	struct tcase *tc = &tcases[n];
@@ -94,6 +108,16 @@ static void setup(void)
 	SAFE_SETRLIMIT(RLIMIT_MEMLOCK, &rl);
 	shm_id = SAFE_SHMGET(shmkey, SHM_SIZE, IPC_CREAT | IPC_EXCL);
 	pw = SAFE_GETPWNAM("nobody");
+	
+	if (! hugetlbfs_supported()) {
+
+		tst_res(TINFO, "SHM_HUGETLB not supported by kernel");
+
+		for (int i = 0; i < ARRAY_SIZE(tcases); i++) {
+				if (tcases[i].flags & SHM_HUGETLB)
+						tcases[i].exp_err = EINVAL;
+		}
+	}
 }
 
 static void cleanup(void)
-- 
2.32.0


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

* [LTP] [PATCH v2] shmget02: check if CONFIG_HUGETLBFS enabled in kernel
  2021-08-02 16:06 [LTP] [PATCH v2] shmget02: check if CONFIG_HUGETLBFS enabled in kernel Bogdan Lezhepekov
@ 2021-08-03 15:20 ` Cyril Hrubis
  0 siblings, 0 replies; 2+ messages in thread
From: Cyril Hrubis @ 2021-08-03 15:20 UTC (permalink / raw)
  To: ltp

Hi!
> Two tests call shmget with a flag SHM_HUGETLB, trying to
> allocate the segment using "huge" pages. The hugetlbpage
> support needs to be enabled in kernel (CONFIG_HUGETLBFS),
> otherwise shmget returns EINVAL.

There are a few minor style problems in the patch, have you checked it
with checkpatch.pl and make check as described in:

https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#2-coding-style

https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#6-test-contribution-checklist

-- 
Cyril Hrubis
chrubis@suse.cz

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

end of thread, other threads:[~2021-08-03 15:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-02 16:06 [LTP] [PATCH v2] shmget02: check if CONFIG_HUGETLBFS enabled in kernel Bogdan Lezhepekov
2021-08-03 15:20 ` Cyril Hrubis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox