Skip to contentSkip to conversation

syscalls/keyctl02: Fix insufficiency of default key count quota

PATCH Superseded Guangwen Feng 2 participants 5 messages Mar 9, 2017 – Mar 30, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 syscalls/keyctl02: Fix insufficiency of default key count quota

Adding and revoking keys rapidly in loops will take a significant number of key count quota, because it takes time to release the instantiated key, so temporarily raise the quota when testing.

---
 testcases/kernel/syscalls/keyctl/keyctl02.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
testcases/kernel/syscalls/keyctl/keyctl02.c +17 -0
index 7145a5a..fc743d2 100644
@@ -48,6 +48,9 @@
 #ifdef HAVE_KEYUTILS_H
 
 #define LOOPS	20000
+#define PATH_KEY_COUNT_QUOTA	"/proc/sys/kernel/keys/root_maxkeys"
+
+static int orig_maxkeys;
 
 static void *do_read(void *arg)
 {
@@ -98,8 +101,22 @@ static void do_test(void)
 	tst_res(TPASS, "Bug not reproduced");
 }
 
+static void setup(void)
+{
+	SAFE_FILE_SCANF(PATH_KEY_COUNT_QUOTA, "%d", &orig_maxkeys);
+	SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys + LOOPS);
+}
+
+static void cleanup(void)
+{
+	SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys);
+}
+
 static struct tst_test test = {
 	.tid = "keyctl02",
+	.needs_root = 1,
+	.setup = setup,
+	.cleanup = cleanup,
 	.test_all = do_test,
 };
 
Signature · 1 line
1.8.4.2
#1 lore raw

PATCH v2 1/1 syscalls/keyctl02: Fix insufficiency of default key count quota

Adding and revoking keys rapidly in loops will take a significant number of key count quota, because it takes time to free the instantiated keys, so temporarily raise the quota when testing.

---
 testcases/kernel/syscalls/keyctl/keyctl02.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
testcases/kernel/syscalls/keyctl/keyctl02.c +16 -0
index 11d3af9..1fdea79 100644
@@ -48,6 +48,9 @@
 #ifdef HAVE_KEYUTILS_H
 
 #define LOOPS	20000
+#define PATH_KEY_COUNT_QUOTA	"/proc/sys/kernel/keys/root_maxkeys"
+
+static int orig_maxkeys;
 
 static void *do_read(void *arg)
 {
@@ -98,9 +101,22 @@ static void do_test(void)
 	tst_res(TPASS, "Bug not reproduced");
 }
 
+static void setup(void)
+{
+	SAFE_FILE_SCANF(PATH_KEY_COUNT_QUOTA, "%d", &orig_maxkeys);
+	SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys + LOOPS);
+}
+
+static void cleanup(void)
+{
+	SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys);
+}
+
 static struct tst_test test = {
 	.tid = "keyctl02",
 	.needs_root = 1,
+	.setup = setup,
+	.cleanup = cleanup,
 	.test_all = do_test,
 };
 
Signature · 1 line
1.8.4.2
#2 lore raw

PATCH v2 1/1 syscalls/keyctl02: Fix insufficiency of default key count quota

Hi!

Please ignore this one, I will send a V3, sorry.

Best Regards,
Guangwen Feng

Quoted 47 lines · Guangwen Feng

Adding and revoking keys rapidly in loops will take a significant number of key count quota, because it takes time to free the instantiated keys, so temporarily raise the quota when testing.

---
 testcases/kernel/syscalls/keyctl/keyctl02.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
testcases/kernel/syscalls/keyctl/keyctl02.c +16 -0
index 11d3af9..1fdea79 100644
@@ -48,6 +48,9 @@
 #ifdef HAVE_KEYUTILS_H
 
 #define LOOPS	20000
+#define PATH_KEY_COUNT_QUOTA	"/proc/sys/kernel/keys/root_maxkeys"
+
+static int orig_maxkeys;
 
 static void *do_read(void *arg)
 {
@@ -98,9 +101,22 @@ static void do_test(void)
 	tst_res(TPASS, "Bug not reproduced");
 }
 
+static void setup(void)
+{
+	SAFE_FILE_SCANF(PATH_KEY_COUNT_QUOTA, "%d", &orig_maxkeys);
+	SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys + LOOPS);
+}
+
+static void cleanup(void)
+{
+	SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys);
+}
+
 static struct tst_test test = {
 	.tid = "keyctl02",
 	.needs_root = 1,
+	.setup = setup,
+	.cleanup = cleanup,
 	.test_all = do_test,
 };
 
#3 lore raw

PATCH v3 1/1 syscalls/keyctl02: Fix insufficiency of default key count quota

Adding and revoking keys rapidly in loops will take a significant number of key count quota, because it takes time to free the instantiated keys, so temporarily raise the quota when testing.

---
 testcases/kernel/syscalls/keyctl/keyctl02.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
testcases/kernel/syscalls/keyctl/keyctl02.c +17 -0
index 11d3af9..aa98822 100644
@@ -48,6 +48,9 @@
 #ifdef HAVE_KEYUTILS_H
 
 #define LOOPS	20000
+#define PATH_KEY_COUNT_QUOTA	"/proc/sys/kernel/keys/root_maxkeys"
+
+static int orig_maxkeys;
 
 static void *do_read(void *arg)
 {
@@ -98,9 +101,23 @@ static void do_test(void)
 	tst_res(TPASS, "Bug not reproduced");
 }
 
+static void setup(void)
+{
+	SAFE_FILE_SCANF(PATH_KEY_COUNT_QUOTA, "%d", &orig_maxkeys);
+	SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys + LOOPS);
+}
+
+static void cleanup(void)
+{
+	if (orig_maxkeys > 0)
+		SAFE_FILE_PRINTF(PATH_KEY_COUNT_QUOTA, "%d", orig_maxkeys);
+}
+
 static struct tst_test test = {
 	.tid = "keyctl02",
 	.needs_root = 1,
+	.setup = setup,
+	.cleanup = cleanup,
 	.test_all = do_test,
 };
 
Signature · 1 line
1.8.4.2
#4 lore raw

PATCH v3 1/1 syscalls/keyctl02: Fix insufficiency of default key count quota

Hi!
Pushed, thanks.

Signature · 2 lines
Cyril Hrubis
[email protected]