Module Name:    src
Committed By:   maxv
Date:           Sun Apr 26 12:13:10 UTC 2020

Modified Files:
        src/tests/lib/libi386: t_user_ldt.c

Log Message:
Add a test on the maximum number of slots.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libi386/t_user_ldt.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libi386/t_user_ldt.c
diff -u src/tests/lib/libi386/t_user_ldt.c:1.1 src/tests/lib/libi386/t_user_ldt.c:1.2
--- src/tests/lib/libi386/t_user_ldt.c:1.1	Sun Apr 19 13:22:58 2020
+++ src/tests/lib/libi386/t_user_ldt.c	Sun Apr 26 12:13:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_user_ldt.c,v 1.1 2020/04/19 13:22:58 maxv Exp $	*/
+/*	$NetBSD: t_user_ldt.c,v 1.2 2020/04/26 12:13:10 maxv Exp $	*/
 
 /*
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -42,6 +42,10 @@
 #include <machine/sysarch.h>
 #include <machine/vmparam.h>
 
+#define _LOCORE /* XXX a bit of a hack, but whatever */
+#include <machine/gdt.h>
+#undef _LOCORE
+
 #include <atf-c.h>
 
 static uint8_t *ldt_base;
@@ -166,6 +170,13 @@ ATF_TC_BODY(filter_ops, tc)
 		ATF_REQUIRE_EQ(i386_set_ldt(256, &desc, 1), -1);
 		ATF_REQUIRE_EQ(errno, EACCES);
 	}
+
+	/* Check the slot limit. */
+	build_desc(&desc, ldt_base, PAGE_SIZE, SDT_MEMRW, SEL_UPL, 1, 0);
+	ATF_REQUIRE_EQ(i386_set_ldt(MAX_USERLDT_SLOTS-1, &desc, 1),
+	    MAX_USERLDT_SLOTS-1);
+	ATF_REQUIRE_EQ(i386_set_ldt(MAX_USERLDT_SLOTS, &desc, 1), -1);
+	ATF_REQUIRE_EQ(errno, EINVAL);
 }
 
 /* -------------------------------------------------------------------------- */

Reply via email to