Linux Test Project
 help / color / mirror / Atom feed
From: Petr Vorel <pvorel@suse.cz>
To: "xuyang2018.jy@fujitsu.com" <xuyang2018.jy@fujitsu.com>
Cc: "ltp@lists.linux.it" <ltp@lists.linux.it>
Subject: Re: [LTP] [PATCH v3 0/2] mount03: Convert to new API
Date: Mon, 15 Aug 2022 08:40:37 +0200	[thread overview]
Message-ID: <YvnqZfyByO42kAX9@pevik> (raw)
In-Reply-To: <765b4f35-2cd0-04e1-e405-04261b5ef645@fujitsu.com>

Hi Xu,

> Hi Petr

> > Hi,

> > I wanted to speedup mount03 rewrite [1], thus I finished the work.

> > Changes include:
> > * simplify code by using:
> >    - SAFE macros
> >    - TST_EXP_FAIL() instead of TST_EXP_FAIL2()
> >    - remove if () check from SAFE macros (that's the point of safe macros
> > 	to not having to use if () check

> > * fix mount03_setuid_test call, so it can expect 0 exit code
> > I wonder myself why this fixes it:
> > -		SAFE_SETREUID(nobody_uid, nobody_gid);

> Why here is nobody_gid?

> > +		SAFE_SETGID(nobody_gid);
> > +		SAFE_SETREUID(-1, nobody_uid);

> What problem do you meet?

Using original code SAFE_SETREUID(nobody_uid, nobody_gid);
causes mount03_setuid_test to fail (exit 1).
The same code is in creat08.c, creat09.c, open10.c.
Did I answer your question?

> > * add missing TST_RESOURCE_COPY()
> > @Cyril: is it really needed?

> IMO, if we use resourcein test struct, we don't need it because ltp lib 
> has move it to tmpdir, we  can just use SAFE_COPY ie prctl06.c.

Ah, thanks!
SAFE_CP(TESTBIN, file);

...
> > +#define FLAG_DESC(x) .flag = x, .desc = #x
> > +static struct tcase {
> > +	unsigned int flag;
> > +	char *desc;
> > +	void (*test)(void);
> > +} tcases[] = {
> > +	{FLAG_DESC(MS_RDONLY), test_rdonly},
> > +	{FLAG_DESC(MS_NODEV), test_nodev},
> > +	{FLAG_DESC(MS_NOEXEC), test_noexec},
> > +	{FLAG_DESC(MS_SYNCHRONOUS), test_synchronous},
> > +	{FLAG_DESC(MS_RDONLY), test_remount},
> > +	{FLAG_DESC(MS_NOSUID), test_nosuid},
> > +	{FLAG_DESC(MS_NOATIME), test_noatime},
> > +};

> > -	sleep(1);
> > +static void setup(void)
> > +{
> > +	struct stat st;
> > +	struct passwd *ltpuser = SAFE_GETPWNAM("nobody");

> > -	SAFE_READ(0, otfd, readbuf, sizeof(readbuf));
> > +	nobody_uid = ltpuser->pw_uid;
> > +	nobody_gid = ltpuser->pw_gid;

> > -	SAFE_FSTAT(otfd, &file_stat);
> > +	snprintf(file, PATH_MAX, "%s/%s", MNTPOINT, TESTBIN);
> > +	TST_RESOURCE_COPY(NULL, TESTBIN, file);

> In fact, old test case copy resource file when mount fileystem, but now, 
> you change this.  So in test_nosuid function, you test nosuid behaviour 
> in tmpdir instead of different filesystems.

old code in setup:
    fs_type = tst_dev_fs_type();
    device = tst_acquire_device(cleanup);

    if (!device)
        tst_brkm(TCONF, cleanup, "Failed to obtain block device");

    tst_mkfs(cleanup, device, fs_type, NULL, NULL);

    SAFE_MKDIR(cleanup, mntpoint, DIR_MODE);

    SAFE_MOUNT(cleanup, device, mntpoint, fs_type, 0, NULL);
    TST_RESOURCE_COPY(cleanup, "mount03_setuid_test", path_name);

new code:
    snprintf(file, PATH_MAX, "%s/%s", MNTPOINT, TESTBIN);
    SAFE_CP(TESTBIN, file);

Well, Li in his v2 removed the code because there is .mntpoint = MNTPOINT, in
struct tst_test, therefore MNTPOINT is mounted in the filesystem, right?

But he also did SAFE_STAT and SAFE_CHMOD on MNTPOINT, which is IMHO wrong
(or at least different from the old code).

Kind regards,
Petr

> Best Regards
> Yang Xu

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

  reply	other threads:[~2022-08-15  6:40 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-11 13:57 [LTP] [PATCH v3 0/2] mount03: Convert to new API Petr Vorel
2022-08-11 13:57 ` [LTP] [PATCH v3 1/2] tst_test_macros.h: Add TST_EXP_EQ_STR Petr Vorel
2022-08-15  3:17   ` xuyang2018.jy
2022-08-11 13:57 ` [LTP] [PATCH v3 2/2] mount03: Convert to new API Petr Vorel
2022-08-16  9:07   ` Cyril Hrubis
2022-08-16  9:18     ` Petr Vorel
2022-08-16  9:31       ` Cyril Hrubis
2022-08-15  5:15 ` [LTP] [PATCH v3 0/2] " xuyang2018.jy
2022-08-15  6:40   ` Petr Vorel [this message]
2022-08-15  6:58     ` xuyang2018.jy
2022-08-15  8:28       ` Petr Vorel
2022-08-15  9:57         ` xuyang2018.jy
2022-08-15 14:19           ` Petr Vorel
2022-08-16  3:40             ` xuyang2018.jy
2022-08-16 11:49               ` Petr Vorel
2022-08-16 13:01                 ` Petr Vorel
2022-08-17  2:23                   ` xuyang2018.jy
2022-08-22 13:28           ` Petr Vorel
2022-08-22 13:35             ` Petr Vorel
2022-08-16  4:37     ` xuyang2018.jy
2022-08-16  6:57       ` Petr Vorel
2022-08-16  7:28         ` xuyang2018.jy
2022-08-16  9:00       ` Cyril Hrubis
2022-08-16  9:06         ` Petr Vorel
2022-08-16  9:57           ` xuyang2018.jy

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=YvnqZfyByO42kAX9@pevik \
    --to=pvorel@suse.cz \
    --cc=ltp@lists.linux.it \
    --cc=xuyang2018.jy@fujitsu.com \
    /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