Skip to content

Commit

Permalink
Add statmount08 test
Browse files Browse the repository at this point in the history
Verify that statmount() raises EPERM when mount point is not accessible.

Signed-off-by: Andrea Cervesato <[email protected]>
  • Loading branch information
acerv committed Oct 7, 2024
1 parent fb6cad5 commit 499f90b
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 0 deletions.
1 change: 1 addition & 0 deletions runtest/syscalls
Original file line number Diff line number Diff line change
Expand Up @@ -1581,6 +1581,7 @@ statmount04 statmount04
statmount05 statmount05
statmount06 statmount06
statmount07 statmount07
statmount08 statmount08

statfs01 statfs01
statfs01_64 statfs01_64
Expand Down
1 change: 1 addition & 0 deletions testcases/kernel/syscalls/statmount/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ statmount04
statmount05
statmount06
statmount07
statmount08
63 changes: 63 additions & 0 deletions testcases/kernel/syscalls/statmount/statmount08.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2024 SUSE LLC Andrea Cervesato <[email protected]>
*/

/*\
* [Description]
*
* Verify that statmount() raises EPERM when mount point is not accessible.
*/

#define _GNU_SOURCE

#include <pwd.h>
#include "statmount.h"
#include "lapi/stat.h"

#define MNTPOINT "mntpoint"

static struct statmount *st_mount;
static uint64_t root_id;

static void run(void)
{
if (SAFE_FORK())
return;

struct passwd *pw;

pw = SAFE_GETPWNAM("nobody");
SAFE_SETEGID(pw->pw_gid);
SAFE_SETEUID(pw->pw_uid);

memset(st_mount, 0, sizeof(struct statmount));

TST_EXP_FAIL(statmount(root_id, STATMOUNT_SB_BASIC, st_mount,
sizeof(struct statmount), 0), EPERM);

exit(0);
}


static void setup(void)
{
struct ltp_statx sx;

SAFE_UNSHARE(CLONE_NEWNS);

SAFE_STATX(AT_FDCWD, "/", 0, STATX_MNT_ID_UNIQUE, &sx);
root_id = sx.data.stx_mnt_id;
}

static struct tst_test test = {
.test_all = run,
.setup = setup,
.needs_root = 1,
.forks_child = 1,
.min_kver = "6.8",
.bufs = (struct tst_buffers []) {
{&st_mount, .size = sizeof(struct statmount)},
{}
}
};

0 comments on commit 499f90b

Please sign in to comment.