sgx-lkl icon indicating copy to clipboard operation
sgx-lkl copied to clipboard

Failing to mount filesystem in read only mode

Open vamsikrishna935 opened this issue 5 years ago • 3 comments

Found issue while fixing chown04 testcase. mount() is failing with EBUSY while trying to mount filesystem in read only mode.

Code Snippet: SAFE_MOUNT(cleanup, device, "mntpoint", fs_type, MS_RDONLY, NULL);

[[ SGX-LKL ]] libc_start_main_stage2(): Calling app main: /ltp/testcases/kernel/syscalls/chown/chown04 chown04 1 TBROK : safe_macros.c:758: chown04.c:175: mount(/dev/vda, mntpoint, ext4, 1, 0) failed: errno=EBUSY(16): Resource busy chown04 2 TBROK : safe_macros.c:758: Remaining cases broken

Note: when 0 is passed as an argument instead of MS_RDONLY, it is mounting Ex: SAFE_MOUNT(cleanup, device, "mntpoint", fs_type, 0, NULL);

vamsikrishna935 avatar May 05 '20 13:05 vamsikrishna935

@prp : Found product issue while fixing chown04 testcase

vamsikrishna935 avatar May 07 '20 09:05 vamsikrishna935

@prp , Please let me know if anything else needed.

mount() syscall is failing while trying to mount the filesystem in read-only mode. Code snippet: https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/syscalls/chown/chown04.c#L174%20L175

Stack trace:

[[  SGX-LKL ]] libc_start_main_stage2(): Calling app main: /ltp/testcases/kernel/syscalls/chown/chown04
[Switching to Thread 0x7fff8b7fe700 (LWP 5860)]

Thread 10 "ENCLAVE" hit Breakpoint 1, main (ac=1, av=0x7fff40b5eea0) at chown04.c:103
103     chown04.c: No such file or directory.
(gdb) c
Continuing.
[Switching to Thread 0x7fff9179e700 (LWP 5857)]

Thread 7 "ENCLAVE" hit Breakpoint 2, mount (special=0x7fff3dacd7c5 "/dev/vda", dir=0x7fff3dacd7bc "mntpoint",
    fstype=0x7fff3dacd830 "ext4", flags=1, data=0x0) at src/linux/mount.c:6
6               return syscall(SYS_mount, special, dir, fstype, flags, data);
(gdb) bt
#0  mount (special=0x7fff3dacd7c5 "/dev/vda", dir=0x7fff3dacd7bc "mntpoint", fstype=0x7fff3dacd830 "ext4", flags=1, data=0x0)
    at src/linux/mount.c:6
#1  0x00007fff3dac1caa in safe_mount (file=file@entry=0x7fff3dacd7b2 "chown04.c", lineno=lineno@entry=172,
    cleanup_fn=cleanup_fn@entry=0x7fff3dabdce0 <cleanup>, source=source@entry=0x7fff3dacd7c5 "/dev/vda",
    target=target@entry=0x7fff3dacd7bc "mntpoint", filesystemtype=filesystemtype@entry=0x7fff3dacd830 "ext4", mountflags=1,
    data=0x0) at safe_macros.c:729
#2  0x00007fff3dabd9ff in setup () at chown04.c:172
#3  main (ac=<optimized out>, av=<optimized out>) at chown04.c:111
#4  0x00007fff00538402 in libc_start_main_stage2 (main=0x7fff3dabd820 <main>, argc=1, argv=0x7fff40b5eea0)
    at src/env/__libc_start_main.c:168
#5  0x00007fff00538361 in __libc_start_main (main=0x7fff3dabd820 <main>, argc=1, argv=0x7fff40b5eea0)
    at src/env/__libc_start_main.c:153
#6  0x00007fff3dabdbae in _start_c (p=<optimized out>) at crt/crt1.c:17
#7  0x00007fff3dabdb86 in _start ()
#8  0x0000000000000000 in ?? ()
(gdb) c
Continuing.
chown04     1  TBROK  :  safe_macros.c:758: chown04.c:172: mount(/dev/vda, mntpoint, ext4, 1, 0) failed: errno=EBUSY(16): Resource busy
chown04     2  TBROK  :  safe_macros.c:758: Remaining cases broken

cc: @hukoyu

vamsikrishna935 avatar Jun 30 '20 10:06 vamsikrishna935

Yes, because it's already mounted. Why wouldn't this fail?

prp avatar Jun 30 '20 10:06 prp