From: DAN LI <li.dan@cn.fujitsu.com>
To: Eryu Guan <eguan@redhat.com>
Cc: LTP list <ltp-list@lists.sourceforge.net>
Subject: Re: [LTP] [PATCH 1/2]mount/mount03.c: cleanup
Date: Mon, 13 May 2013 18:37:09 +0800 [thread overview]
Message-ID: <5190C255.2090402@cn.fujitsu.com> (raw)
In-Reply-To: <20130513082625.GL2460@eguan-t400.nay.redhat.com>
On 05/13/2013 04:26 PM, Eryu Guan wrote:
> On Mon, May 13, 2013 at 10:41:39AM +0800, DAN LI wrote:
>>
>> 1. Remove useless comments
>>
>> 2. Revise code to follow ltp-code-style
>>
>> Signed-off-by: DAN LI <li.dan@cn.fujitsu.com>
>> ---
>> testcases/kernel/syscalls/mount/mount03.c | 208 +++++++++++++-----------------
>> 1 file changed, 89 insertions(+), 119 deletions(-)
>>
>> diff --git a/testcases/kernel/syscalls/mount/mount03.c b/testcases/kernel/syscalls/mount/mount03.c
>> index 04570b9..ea4b0e9 100644
>> --- a/testcases/kernel/syscalls/mount/mount03.c
>> +++ b/testcases/kernel/syscalls/mount/mount03.c
>> @@ -14,10 +14,8 @@
>> * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>> *
>> */
>> -/**************************************************************************
>> - *
>> - * TEST IDENTIFIER : mount03
>> - *
>> +
>> +/*
>> * EXECUTED BY : root / superuser
>> *
>> * TEST TITLE : Test for checking mount(2) flags
>> @@ -26,10 +24,6 @@
>> *
>> * AUTHOR : Nirmala Devi Dhanasekar <nirmala.devi@wipro.com>
>> *
>> - * SIGNALS
>> - * Uses SIGUSR1 to pause before test if option set.
>> - * (See the parse_opts(3) man page).
>> - *
>> * DESCRIPTION
>> * Check for basic mount(2) system call flags.
>> *
>> @@ -42,13 +36,13 @@
>> * 5) MS_REMOUNT - alter flags of a mounted FS.
>> * 6) MS_NOSUID - ignore suid and sgid bits.
>> *
>> - * Setup:
>> + * Setup:
>> * Setup signal handling.
>> * Create a mount point.
>> * Pause for SIGUSR1 if option specified.
>> *
>> - * Test:
>> - * Loop if the proper options are given.
>> + * Test:
>> + * Loop if the proper options are given.
>> * Execute mount system call for each flag
>> * Validate each flag setting. if validation fails
>> * Delete the mount point.
>> @@ -56,22 +50,10 @@
>> * Delete the mount point.
>> * Otherwise, Issue a PASS message.
>> *
>> - * Cleanup:
>> - * Print errno log and/or timing stats if options given
>> + * Cleanup:
>> + * Print errno log and/or timing stats if options given
>> * Delete the temporary directory(s)/file(s) created.
>> *
>> - * USAGE: <for command-line>
>> - * mount03 [-T type] -D device [-e] [-i n] [-I x] [-p x] [-t]
>> - * where, -T type : specifies the type of filesystem to
>> - * be mounted. Default ext2.
>> - * -D device : device to be mounted.
>> - * -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
>> * test must run with the -D option
>> * test doesn't support -c option to run it in parallel, as mount
>> @@ -102,30 +84,29 @@ static int setup_uid(void);
>>
>> char *TCID = "mount03";
>> int TST_TOTAL = 6;
>> -extern char **environ; /* pointer to this processes env */
>>
>> #define DEFAULT_FSTYPE "ext2"
>> #define TEMP_FILE "temp_file"
>> #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
>> -#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
>> +#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|\
> ^^^^ I'd like a space here, | \
Agreed.
>> + S_IXGRP|S_IROTH|S_IXOTH)
>> #define SUID_MODE (S_ISUID|S_IRUSR|S_IXUSR|S_IXGRP|S_IXOTH)
>>
>> -static char *Fstype;
>> +static char *fs_type;
>>
>> static char mntpoint[20];
>> static char *fstype;
>> static char *device;
>> -static int Tflag = 0;
>> -static int Dflag = 0;
>> -
>> -static char write_buffer[BUFSIZ]; /* buffer used to write data to file */
>> -static char read_buffer[BUFSIZ]; /* buffer used to read data from file */
>> -static int fildes; /* file descriptor for temporary file */
>> -static char *Cmd_buffer[3]; /* Buffer to hold command string */
>> -static char Path_name[PATH_MAX]; /* Buffer to hold command string */
>> -static char testhome_path[PATH_MAX]; /* Test home Path */
>> -static char file[PATH_MAX]; /* Temporary file */
>> -static char cmd[] = "cp";
>> +static int tflag;
>> +static int dflag;
>> +
>> +static char write_buffer[BUFSIZ];
>> +static char read_buffer[BUFSIZ];
>> +static int fildes;
>
> move this up and put all int vars together?
Agreed.
>> +static char path_name[PATH_MAX];
>> +static char testhome_path[PATH_MAX];
>> +static char file[PATH_MAX];
>> +static char *cmd = "cp";
>>
>> long rwflags[] = {
>> MS_RDONLY,
>> @@ -136,41 +117,41 @@ long rwflags[] = {
>> MS_NOSUID,
>> };
>>
>> -static option_t options[] = { /* options supported by mount03 test */
>> - {"T:", &Tflag, &fstype}, /* -T type of filesystem */
>> - {"D:", &Dflag, &device}, /* -D device used for mounting */
>> +static option_t options[] = {
>> + {"T:", &tflag, &fstype},
>> + {"D:", &dflag, &device},
>> {NULL, NULL, NULL}
>> };
>>
>> -int main(int ac, char **av)
>> +int main(int argc, char *argv[])
>> {
>> int lc, i;
>> char *msg;
>>
>> - if ((msg = parse_opts(ac, av, options, &help)) != NULL)
>> + msg = parse_opts(argc, argv, options, &help);
>> + if (msg != NULL)
>> tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
>>
>> /* Check for mandatory option of the testcase */
>> - if (!Dflag) {
>> + if (!dflag)
>> tst_brkm(TBROK, NULL,
>> "you must specify the device used for mounting with -D "
>> "option");
>> - }
>>
>> - if (Tflag) {
>> - Fstype = (char *)malloc(strlen(fstype) + 1);
>> - if (Fstype == NULL) {
>> + if (tflag) {
>> + fs_type = (char *)malloc(strlen(fstype) + 1);
> ^^^^^^^^ not sure if we really need a cast for malloc
>
It's a watch point in C++, but for C, maybe better to cut the cast.
>> + if (fs_type == NULL)
>> tst_brkm(TBROK | TERRNO, NULL, "malloc failed");
>> - }
>> - Fstype[strlen(fstype)] = '\0';
>> - strncpy(Fstype, fstype, strlen(fstype));
>> +
>> + fs_type[strlen(fstype)] = '\0';
>> + strncpy(fs_type, fstype, strlen(fstype));
>> } else {
>> - Fstype = (char *)malloc(strlen(DEFAULT_FSTYPE) + 1);
>> - if (Fstype == NULL) {
>> + fs_type = (char *)malloc(strlen(DEFAULT_FSTYPE) + 1);
>> + if (fs_type == NULL)
>> tst_brkm(TBROK | TERRNO, NULL, "malloc failed");
>> - }
>> - strncpy(Fstype, DEFAULT_FSTYPE, strlen(DEFAULT_FSTYPE));
>> - Fstype[strlen(DEFAULT_FSTYPE)] = '\0';
>> +
>> + strncpy(fs_type, DEFAULT_FSTYPE, strlen(DEFAULT_FSTYPE));
>> + fs_type[strlen(DEFAULT_FSTYPE)] = '\0';
>> }
>>
>> if (STD_COPIES != 1) {
>> @@ -189,7 +170,8 @@ int main(int ac, char **av)
>> for (i = 0; i < TST_TOTAL; ++i) {
>>
>> /* Call mount(2) */
>> - TEST(mount(device, mntpoint, Fstype, rwflags[i], NULL));
>> + TEST(mount(device, mntpoint, fs_type,
>> + rwflags[i], NULL));
> indent like this?
> TEST(mount(device, mntpoint, fs_type, rwflags[i],
> NULL));
Agreed.
>>
>> /* check return code */
>> if (TEST_RETURN != 0) {
>> @@ -198,22 +180,20 @@ int main(int ac, char **av)
>> }
>>
>> /* Validate the rwflag */
>> - if (test_rwflag(i, lc) == 1) {
>> + if (test_rwflag(i, lc) == 1)
>> tst_resm(TFAIL, "mount(2) failed while"
>> " validating %ld", rwflags[i]);
>> - } else {
>> + else
>> tst_resm(TPASS, "mount(2) passed with "
>> "rwflag = %ld", rwflags[i]);
>> - }
>> +
>> TEST(umount(mntpoint));
>> - if (TEST_RETURN != 0) {
>> + if (TEST_RETURN != 0)
>> tst_brkm(TBROK | TTERRNO, cleanup,
>> "umount(2) failed for %s", mntpoint);
>> - }
>> }
>> }
>>
>> - /* cleanup and exit */
>> cleanup();
>>
>> tst_exit();
>> @@ -234,8 +214,9 @@ int test_rwflag(int i, int cnt)
>> case 0:
>> /* Validate MS_RDONLY flag of mount call */
>>
>> - snprintf(file, PATH_MAX, "%stmp", Path_name);
>> - if ((fd = open(file, O_CREAT | O_RDWR, S_IRWXU)) == -1) {
>> + snprintf(file, PATH_MAX, "%stmp", path_name);
>> + fd = open(file, O_CREAT | O_RDWR, S_IRWXU);
>> + if (fd == -1) {
>> if (errno == EROFS) {
>> return 0;
>> } else {
>> @@ -249,10 +230,11 @@ int test_rwflag(int i, int cnt)
>> case 1:
>> /* Validate MS_NODEV flag of mount call */
>>
>> - snprintf(file, PATH_MAX, "%smynod_%d_%d", Path_name, getpid(),
>> + snprintf(file, PATH_MAX, "%smynod_%d_%d", path_name, getpid(),
>> cnt);
>> if (mknod(file, S_IFBLK | 0777, 0) == 0) {
>> - if ((fd = open(file, O_RDWR, S_IRWXU)) == -1) {
>> + fd = open(file, O_RDWR, S_IRWXU);
>> + if (fd == -1) {
>> if (errno == EACCES) {
>> return 0;
>> } else {
>> @@ -271,8 +253,9 @@ int test_rwflag(int i, int cnt)
>> case 2:
>> /* Validate MS_NOEXEC flag of mount call */
>>
>> - snprintf(file, PATH_MAX, "%stmp1", Path_name);
>> - if ((fd = open(file, O_CREAT | O_RDWR, S_IRWXU)) == -1) {
>> + snprintf(file, PATH_MAX, "%stmp1", path_name);
>> + fd = open(file, O_CREAT | O_RDWR, S_IRWXU);
>> + if (fd == -1) {
>> tst_resm(TWARN | TERRNO, "opening %s failed", file);
>> } else {
>> close(fd);
>> @@ -288,9 +271,9 @@ int test_rwflag(int i, int cnt)
>> strcpy(write_buffer, "abcdefghijklmnopqrstuvwxyz");
>>
>> /* Creat a temporary file under above directory */
>> - snprintf(file, PATH_MAX, "%s%s", Path_name, TEMP_FILE);
>> - if ((fildes = open(file, O_RDWR | O_CREAT, FILE_MODE))
>> - == -1) {
>> + snprintf(file, PATH_MAX, "%s%s", path_name, TEMP_FILE);
>> + fildes = open(file, O_RDWR | O_CREAT, FILE_MODE);
>> + if (fildes == -1) {
>> tst_resm(TWARN | TERRNO,
>> "open(%s, O_RDWR|O_CREAT, %#o) failed",
>> file, FILE_MODE);
>> @@ -333,14 +316,14 @@ int test_rwflag(int i, int cnt)
>> case 4:
>> /* Validate MS_REMOUNT flag of mount call */
>>
>> - TEST(mount(device, mntpoint, Fstype, MS_REMOUNT, NULL));
>> + TEST(mount(device, mntpoint, fs_type, MS_REMOUNT, NULL));
>> if (TEST_RETURN != 0) {
>> tst_resm(TWARN | TTERRNO, "mount(2) failed to remount");
>> return 1;
>> } else {
>> - snprintf(file, PATH_MAX, "%stmp2", Path_name);
>> - if ((fd = open(file, O_CREAT | O_RDWR, S_IRWXU))
>> - == -1) {
>> + snprintf(file, PATH_MAX, "%stmp2", path_name);
>> + fd = open(file, O_CREAT | O_RDWR, S_IRWXU);
>> + if (fd == -1) {
>> tst_resm(TWARN, "open(%s) on readonly "
>> "filesystem passed", file);
>> return 1;
>> @@ -356,23 +339,23 @@ int test_rwflag(int i, int cnt)
>> tst_resm(TBROK | TERRNO, "setup_uid failed");
>> return 1;
>> }
>> - switch (pid = fork()) {
>> + pid = fork();
>> + switch (pid) {
>> case -1:
>> tst_resm(TBROK | TERRNO, "fork failed");
>> return 1;
>> case 0:
>> - snprintf(file, PATH_MAX, "%ssetuid_test", Path_name);
>> - if (chmod(file, SUID_MODE) != 0) {
>> + snprintf(file, PATH_MAX, "%ssetuid_test", path_name);
>> + if (chmod(file, SUID_MODE) != 0)
>> tst_resm(TWARN, "chmod(%s, %#o) failed",
>> file, SUID_MODE);
>> - }
>>
>> ltpuser = getpwnam(nobody_uid);
>> - if (setreuid(ltpuser->pw_uid, ltpuser->pw_uid) == -1) {
>> + if (setreuid(ltpuser->pw_uid, ltpuser->pw_uid) == -1)
>> tst_resm(TWARN | TERRNO,
>> "seteuid() failed to change euid to %d",
>> ltpuser->pw_uid);
>> - }
>> +
>> execlp(file, basename(file), NULL);
>> exit(1);
>> default:
>> @@ -395,24 +378,21 @@ int setup_uid()
>> int pid, status;
>> char command[PATH_MAX];
>>
>> - switch (pid = fork()) {
>> + pid = fork();
>> + switch (pid) {
>> case -1:
>> tst_resm(TWARN | TERRNO, "fork failed");
>> return 1;
>> case 0:
>> - Cmd_buffer[0] = cmd;
>> - Cmd_buffer[1] = testhome_path;
>> - Cmd_buffer[2] = Path_name;
>> -
>> /* Put command into string */
>> - sprintf(command, "%s %s %s", cmd, testhome_path, Path_name);
>> + sprintf(command, "%s %s %s", cmd, testhome_path, path_name);
>>
>> /* Run command to cp file to right spot */
>> - if (system(command) == 0) {
>> + if (system(command) == 0)
>> execlp(file, basename(file), NULL);
>> - } else {
>> + else
>> printf("call to %s failed\n", command);
>> - }
>> +
>> exit(1);
>> default:
>> waitpid(pid, &status, 0);
>> @@ -428,17 +408,16 @@ int setup_uid()
>> }
>> }
>>
>> -/* setup() - performs all ONE TIME setup for this test */
>> void setup()
>> {
>> - char *test_home; /* variable to hold TESTHOME env */
>> + char *test_home;
>> struct stat setuid_test_stat;
>>
>> tst_sig(FORK, DEF_HANDLER, cleanup);
>>
>> /* Check whether we are root */
>> if (geteuid() != 0) {
>> - free(Fstype);
>> + free(fs_type);
>> tst_brkm(TBROK, NULL, "Test must be run as root");
>> }
>>
>> @@ -451,38 +430,37 @@ void setup()
>> /* Unique mount point */
>> (void)sprintf(mntpoint, "mnt_%d", getpid());
>>
>> - if (mkdir(mntpoint, DIR_MODE)) {
>> + if (mkdir(mntpoint, DIR_MODE))
>> tst_brkm(TBROK | TERRNO, cleanup, "mkdir(%s, %#o) failed",
>> mntpoint, DIR_MODE);
>> - }
>> +
>> /* Get the current working directory of the process */
>> - if (getcwd(Path_name, sizeof(Path_name)) == NULL) {
>> + if (getcwd(path_name, sizeof(path_name)) == NULL)
>> tst_brkm(TBROK, cleanup, "getcwd failed");
>> - }
>> - if (chmod(Path_name, DIR_MODE) != 0) {
>> +
>> + if (chmod(path_name, DIR_MODE) != 0)
>> tst_brkm(TBROK, cleanup, "chmod(%s, %#o) failed",
>> - Path_name, DIR_MODE);
>> - }
>> - snprintf(file, PATH_MAX, "%ssetuid_test", Path_name);
>> + path_name, DIR_MODE);
>> +
>> + snprintf(file, PATH_MAX, "%ssetuid_test", path_name);
>> if (stat(file, &setuid_test_stat) < 0) {
>> tst_brkm(TBROK, cleanup, "stat for setuid_test failed");
>> } else {
>> if ((setuid_test_stat.st_uid || setuid_test_stat.st_gid) &&
>> - chown(file, 0, 0) < 0) {
>> + chown(file, 0, 0) < 0)
>> tst_brkm(TBROK, cleanup,
>> "chown for setuid_test failed");
>> - }
>> +
>> if (setuid_test_stat.st_mode != SUID_MODE &&
>> - chmod(file, SUID_MODE) < 0) {
>> + chmod(file, SUID_MODE) < 0)
>> tst_brkm(TBROK, cleanup,
>> "setuid for setuid_test failed");
>> - }
>> }
>>
>> /*
>> * under temporary directory
>> */
>> - snprintf(Path_name, PATH_MAX, "%s/%s/", Path_name, mntpoint);
>> + snprintf(path_name, PATH_MAX, "%s/%s/", path_name, mntpoint);
>>
>> strcpy(testhome_path, test_home);
>> strcat(testhome_path, "/setuid_test");
>> @@ -491,18 +469,10 @@ void setup()
>>
>> }
>>
>> -/*
>> - *cleanup() - performs all ONE TIME cleanup for this test at
>> - * completion or premature exit.
>> - */
>> void cleanup()
>> {
>> - free(Fstype);
>> + free(fs_type);
>>
>> - /*
>> - * print timing stats if that option was specified.
>> - * print errno log if that option was specified.
>> - */
>> TEST_CLEANUP;
>>
>> tst_rmdir();
>> @@ -514,6 +484,6 @@ void cleanup()
>> void help()
>> {
>> printf("-T type : specifies the type of filesystem to be mounted."
>> - " Default ext2. \n");
>> - printf("-D device : device used for mounting \n");
>> + "Default ext2.\n");
> ^^ we need a space here otherwise the output will be:
> "... to be mounted.Default ext2."
> ^^^^^ no space
>
But it seems that checkpatch.pl do not agree it.
I'will check it.
Thanks for reviewing.
DAN LI
> Thanks for the cleanup!
>
> Eryu Guan
>> + printf("-D device : device used for mounting\n");
>> }
>> --
>> 1.8.3
>>
>> ------------------------------------------------------------------------------
>> Learn Graph Databases - Download FREE O'Reilly Book
>> "Graph Databases" is the definitive new guide to graph databases and
>> their applications. This 200-page book is written by three acclaimed
>> leaders in the field. The early access version is available now.
>> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
>> _______________________________________________
>> Ltp-list mailing list
>> Ltp-list@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and
their applications. This 200-page book is written by three acclaimed
leaders in the field. The early access version is available now.
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
prev parent reply other threads:[~2013-05-13 10:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-13 2:41 [LTP] [PATCH 1/2]mount/mount03.c: cleanup DAN LI
2013-05-13 3:12 ` [LTP] [PATCH 2/2]mount/mount03.c: fix several issues DAN LI
2013-05-13 8:41 ` Eryu Guan
2013-05-13 10:58 ` DAN LI
2013-05-13 8:26 ` [LTP] [PATCH 1/2]mount/mount03.c: cleanup Eryu Guan
2013-05-13 10:37 ` DAN LI [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5190C255.2090402@cn.fujitsu.com \
--to=li.dan@cn.fujitsu.com \
--cc=eguan@redhat.com \
--cc=ltp-list@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox