public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH] [6/6] syscalls/sysfs: Convert sysfs06 to the new API
@ 2021-08-06 11:31 sujiaxun
  2021-08-10 11:36 ` Cyril Hrubis
  0 siblings, 1 reply; 3+ messages in thread
From: sujiaxun @ 2021-08-06 11:31 UTC (permalink / raw)
  To: ltp

Signed-off-by: sujiaxun <sujiaxun@uniontech.com>
---
 testcases/kernel/syscalls/sysfs/sysfs06.c | 185 +++++-----------------
 1 file changed, 44 insertions(+), 141 deletions(-)

diff --git a/testcases/kernel/syscalls/sysfs/sysfs06.c b/testcases/kernel/syscalls/sysfs/sysfs06.c
index d9a8cd51c..118ebca3c 100644
--- a/testcases/kernel/syscalls/sysfs/sysfs06.c
+++ b/testcases/kernel/syscalls/sysfs/sysfs06.c
@@ -1,162 +1,65 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * Copyright (c) Wipro Technologies Ltd, 2002.  All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
  */
-/**************************************************************************
- *
- *    TEST IDENTIFIER	: sysfs(2)
- *
- *
- *    EXECUTED BY	: anyone
- *
- *    TEST TITLE	: Test checking for basic error conditions
- *				 for sysfs(2)
- *
- *    TEST CASE TOTAL	: 3
- *
- *    AUTHOR		: Aniruddha Marathe <aniruddha.marathe@wipro.com>
- *
- *    SIGNALS
- *	Uses SIGUSR1 to pause before test if option set.
- *	(See the parse_opts(3) man page).
- *
- *    DESCRIPTION
- *	This test case checks whether sysfs(2) system call returns
- *	appropriate error number for invalid
- *	option and for invalid filesystem index and when
- *	buffer is out of address space
- *
- *	Setup:
- *	  Setup signal handling.
- *	  Pause for SIGUSR1 if option specified.
- *
- *	Test:
- *	  Loop if the proper options are given.
- *	  Execute system call with invaid option parameter and for
- *	  invalid filesystem index
- *	  Check return code, if system call fails with errno == expected errno
- *		Issue syscall passed with expected errno
- *	  Otherwise,
- *	  Issue syscall failed to produce expected errno
- *
- *	Cleanup:
- *	  Do cleanup for the test.
- *
- * USAGE:  <for command-line>
- *  sysfs06 [-c n] [-e] [-i n] [-I x] [-P x] [-t] [-h] [-f] [-p]
- *  where:
- *	-c n : Run n copies simultaneously
- *	-e   : Turn on errno logging.
- *	-i n : Execute test n times.
- *	-I x : Execute test for x seconds.
- *	-p   : Pause for SIGUSR1 before starting
- *	-P x : Pause for x seconds between iterations.
- *	-t   : Turn on syscall timing.
- *
- *RESTRICTIONS:
- *There is no libc or glibc support
- *****************************************************************************/
+
+/*
+ * [DESCRIPTION]
+ * This test case checks whether sysfs(2) system call return appropriate
+ * error number for invalid option and for invalid filesystem index and
+ * when  buffer is out of address space.
+ */

 #include <errno.h>
 #include <sys/syscall.h>
 #include <sys/mman.h>
-#include "test.h"
+#include "tst_test.h"
 #include "lapi/syscalls.h"

-static void setup();
-static void cleanup();
-
-char *TCID = "sysfs06";
+char *bad_addr = 0;
 static int option[3] = { 2, 4, 2 };	/* valid and invalid option */
 static int fsindex[3] = { 10000, 0, 1 };	/*invalid and valid fsindex */

-static struct test_case_t {
-	char *err_desc;		/*error description */
-	int exp_errno;		/* expected error number */
-	char *exp_errval;	/*Expected errorvalue string */
-} testcase[] = {
-	{
-	"Invalid option", EINVAL, "EINVAL"}, {
-	"fs_index is out of bounds", EINVAL, "EINVAL"}, {
-	"buf is outside your accessible address space", EFAULT, "EFAULT"}
+static struct test_case {
+    char *err_desc;     /*error description */
+    int exp_errno;      /* expected error number */
+    char *exp_errval;   /*Expected errorvalue string */
+} tcases[] = {
+    {
+    "Invalid option", EINVAL, "EINVAL"}, {
+    "fs_index is out of bounds", EINVAL, "EINVAL"}, {
+    "buf is outside your accessible address space", EFAULT, "EFAULT"}
 };

-int TST_TOTAL = ARRAY_SIZE(testcase);
-
-char *bad_addr = 0;
-
-int main(int ac, char **av)
+static void verify_sysfs06(unsigned int nr)
 {
-	int lc, i;
-
-	tst_parse_opts(ac, av, NULL, NULL);
-
-	setup();
-
-	for (lc = 0; TEST_LOOPING(lc); lc++) {
-
-		for (i = 0; i < TST_TOTAL; i++) {
-
-			tst_count = 0;
-			TEST(ltp_syscall
-			     (__NR_sysfs, option[i], fsindex[i], bad_addr));
-
-			/* check return code */
-			if ((TEST_RETURN == -1)
-			    && (TEST_ERRNO == testcase[i].exp_errno)) {
-				tst_resm(TPASS,
-					 "sysfs(2) expected failure;"
-					 " Got errno - %s : %s",
-					 testcase[i].exp_errval,
-					 testcase[i].err_desc);
-			} else {
-				tst_resm(TFAIL, "sysfs(2) failed to produce"
-					 " expected error; %d, errno"
-					 ": %s and got %d",
-					 testcase[i].exp_errno,
-					 testcase[i].exp_errval, TEST_ERRNO);
-			}
-		}		/*End of TEST LOOPS */
-	}
-
-	/*Clean up and exit */
-	cleanup();
-
-	tst_exit();
-}				/*End of main */
+    TEST(tst_syscall(__NR_sysfs, option[nr], fsindex[nr], bad_addr));
+
+    /* check return code */
+    if ((TST_RET == -1)
+        && (TST_ERR == tcases[nr].exp_errno)) {
+        tst_res(TPASS,
+             "sysfs(2) expected failure;"
+             " Got errno - %s : %s",
+             tcases[nr].exp_errval,
+             tcases[nr].err_desc);
+    } else {
+        tst_res(TFAIL, "sysfs(2) failed to produce"
+             " expected error; %d, errno"
+             ": %s and got %d",
+             tcases[nr].exp_errno,
+             tcases[nr].exp_errval, TST_ERR);
+    }
+}

-/* setup() - performs all ONE TIME setup for this test */
 void setup(void)
 {
-
-	tst_sig(NOFORK, DEF_HANDLER, cleanup);
-
-	TEST_PAUSE;
-
-	bad_addr =
-	    mmap(0, 1, PROT_NONE, MAP_PRIVATE_EXCEPT_UCLINUX | MAP_ANONYMOUS, 0,
-		 0);
-	if (bad_addr == MAP_FAILED)
-		tst_brkm(TBROK, cleanup, "mmap failed");
+    bad_addr = tst_get_bad_addr(NULL);
 }

-/*
-* cleanup() - Performs one time cleanup for this test at
-* completion or premature exit
-*/
-void cleanup(void)
-{
+static struct tst_test test = {
+    .tcnt = ARRAY_SIZE(tcases),
+    .setup = setup,
+    .test = verify_sysfs06,
+};

-}
--
2.20.1





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

* [LTP] [PATCH] [6/6] syscalls/sysfs: Convert sysfs06 to the new API
  2021-08-06 11:31 [LTP] [PATCH] [6/6] syscalls/sysfs: Convert sysfs06 to the new API sujiaxun
@ 2021-08-10 11:36 ` Cyril Hrubis
  2021-08-11 12:46   ` sujiaxun
  0 siblings, 1 reply; 3+ messages in thread
From: Cyril Hrubis @ 2021-08-10 11:36 UTC (permalink / raw)
  To: ltp

Hi!
And this is nearly the same as sysfs05, the only test that is missing in
sysfs05 is fs index out of bounds. So we should add that test to
sysfs05 and remove sysfs06.

-- 
Cyril Hrubis
chrubis@suse.cz

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

* [LTP] [PATCH] [6/6] syscalls/sysfs: Convert sysfs06 to the new API
  2021-08-10 11:36 ` Cyril Hrubis
@ 2021-08-11 12:46   ` sujiaxun
  0 siblings, 0 replies; 3+ messages in thread
From: sujiaxun @ 2021-08-11 12:46 UTC (permalink / raw)
  To: ltp

Thank you for your careful review. I have followed your suggestion and 
made changes and completed the submission.

? 2021/8/10 ??7:36, Cyril Hrubis ??:
> Hi!
> And this is nearly the same as sysfs05, the only test that is missing in
> sysfs05 is fs index out of bounds. So we should add that test to
> sysfs05 and remove sysfs06.
> 

-- 
Kind regards,

sujiaxun



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

end of thread, other threads:[~2021-08-11 12:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-06 11:31 [LTP] [PATCH] [6/6] syscalls/sysfs: Convert sysfs06 to the new API sujiaxun
2021-08-10 11:36 ` Cyril Hrubis
2021-08-11 12:46   ` sujiaxun

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