mbox series

[v2,0/5] Add fchmodat2 testing suite

Message ID 20240723-fchmodat2-v2-0-e658a98b113e@suse.com
Headers show
Series Add fchmodat2 testing suite | expand

Message

Andrea Cervesato July 23, 2024, 3:41 p.m. UTC
This is a patch-set that implements fchmodat2() syscall coverage.
fchmodat2() has been added in kernel 6.6 in order to support
AT_SYMLINK_NOFOLLOW and AT_EMPTY_PATH in fchmodat().
There's no man pages yet, so please take the following links as
main documentation along with kernel source code:

https://www.phoronix.com/news/fchmodat2-For-Linux-6.6
https://lore.kernel.org/lkml/20230824-frohlocken-vorabend-725f6fdaad50@brauner/

***********
* WARNING *
***********

fchmodat2_02 fails with EOPNOTSUPP because of missing feature.
According to documentation, the feature has been implemented in
kernel 6.6, but __in reality__ AT_SYMLINK_NOFOLLOW is not working
on symbolic files. Also kselftests, which are meant to test the
functionality, are not working and they are treating fchmodat2()
syscall failure as SKIP. Please take a look at the following code
before reviewing:

https://github.com/torvalds/linux/blob/8f6a15f095a63a83b096d9b29aaff4f0fbe6f6e6/tools/testing/selftests/fchmodat2/fchmodat2_test.c#L123

Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Changes in v2:
- merge first 3 tests into a unique one
- move fchmodat2 in lapi/stat.h
- add test for error checking
- Link to v1: https://lore.kernel.org/r/20240521-fchmodat2-v1-0-191b4a986202@suse.com

---
Andrea Cervesato (5):
      Add SAFE_SYMLINKAT macro
      Add fchmodat2 syscalls definitions
      Add fchmodat2 fallback definition
      Add fchmodat2_01 test
      Add fchmodat2_02 test

 include/lapi/stat.h                                |  13 +++
 include/lapi/syscalls/aarch64.in                   |   1 +
 include/lapi/syscalls/arc.in                       |   1 +
 include/lapi/syscalls/arm.in                       |   1 +
 include/lapi/syscalls/hppa.in                      |   1 +
 include/lapi/syscalls/i386.in                      |   1 +
 include/lapi/syscalls/ia64.in                      |   1 +
 include/lapi/syscalls/loongarch.in                 |   1 +
 include/lapi/syscalls/mips_n32.in                  |   1 +
 include/lapi/syscalls/mips_n64.in                  |   1 +
 include/lapi/syscalls/mips_o32.in                  |   1 +
 include/lapi/syscalls/powerpc.in                   |   1 +
 include/lapi/syscalls/powerpc64.in                 |   1 +
 include/lapi/syscalls/s390.in                      |   1 +
 include/lapi/syscalls/s390x.in                     |   1 +
 include/lapi/syscalls/sh.in                        |   1 +
 include/lapi/syscalls/sparc.in                     |   1 +
 include/lapi/syscalls/sparc64.in                   |   1 +
 include/lapi/syscalls/x86_64.in                    |   1 +
 include/safe_macros_fn.h                           |   4 +
 include/tst_safe_macros.h                          |   3 +
 lib/safe_macros.c                                  |  20 ++++
 runtest/syscalls                                   |   3 +
 testcases/kernel/syscalls/fchmodat2/.gitignore     |   2 +
 testcases/kernel/syscalls/fchmodat2/Makefile       |   7 ++
 testcases/kernel/syscalls/fchmodat2/fchmodat2.h    |  20 ++++
 testcases/kernel/syscalls/fchmodat2/fchmodat2_01.c | 105 +++++++++++++++++++++
 testcases/kernel/syscalls/fchmodat2/fchmodat2_02.c |  68 +++++++++++++
 28 files changed, 263 insertions(+)
---
base-commit: c5d95b6d34e2356bd19e6b646da06f1bce66a024
change-id: 20240517-fchmodat2-5b82867d71fc

Best regards,

Comments

Andrea Cervesato July 24, 2024, 9:43 a.m. UTC | #1
Hi,

I just noticed an error in the patch. fchmodat2.h can be merged with the 
first test.
I will send v3, please ignore this v2.

Thanks,
Andrea

On 7/23/24 17:41, Andrea Cervesato wrote:
> This is a patch-set that implements fchmodat2() syscall coverage.
> fchmodat2() has been added in kernel 6.6 in order to support
> AT_SYMLINK_NOFOLLOW and AT_EMPTY_PATH in fchmodat().
> There's no man pages yet, so please take the following links as
> main documentation along with kernel source code:
>
> https://www.phoronix.com/news/fchmodat2-For-Linux-6.6
> https://lore.kernel.org/lkml/20230824-frohlocken-vorabend-725f6fdaad50@brauner/
>
> ***********
> * WARNING *
> ***********
>
> fchmodat2_02 fails with EOPNOTSUPP because of missing feature.
> According to documentation, the feature has been implemented in
> kernel 6.6, but __in reality__ AT_SYMLINK_NOFOLLOW is not working
> on symbolic files. Also kselftests, which are meant to test the
> functionality, are not working and they are treating fchmodat2()
> syscall failure as SKIP. Please take a look at the following code
> before reviewing:
>
> https://github.com/torvalds/linux/blob/8f6a15f095a63a83b096d9b29aaff4f0fbe6f6e6/tools/testing/selftests/fchmodat2/fchmodat2_test.c#L123
>
> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
> ---
> Changes in v2:
> - merge first 3 tests into a unique one
> - move fchmodat2 in lapi/stat.h
> - add test for error checking
> - Link to v1: https://lore.kernel.org/r/20240521-fchmodat2-v1-0-191b4a986202@suse.com
>
> ---
> Andrea Cervesato (5):
>        Add SAFE_SYMLINKAT macro
>        Add fchmodat2 syscalls definitions
>        Add fchmodat2 fallback definition
>        Add fchmodat2_01 test
>        Add fchmodat2_02 test
>
>   include/lapi/stat.h                                |  13 +++
>   include/lapi/syscalls/aarch64.in                   |   1 +
>   include/lapi/syscalls/arc.in                       |   1 +
>   include/lapi/syscalls/arm.in                       |   1 +
>   include/lapi/syscalls/hppa.in                      |   1 +
>   include/lapi/syscalls/i386.in                      |   1 +
>   include/lapi/syscalls/ia64.in                      |   1 +
>   include/lapi/syscalls/loongarch.in                 |   1 +
>   include/lapi/syscalls/mips_n32.in                  |   1 +
>   include/lapi/syscalls/mips_n64.in                  |   1 +
>   include/lapi/syscalls/mips_o32.in                  |   1 +
>   include/lapi/syscalls/powerpc.in                   |   1 +
>   include/lapi/syscalls/powerpc64.in                 |   1 +
>   include/lapi/syscalls/s390.in                      |   1 +
>   include/lapi/syscalls/s390x.in                     |   1 +
>   include/lapi/syscalls/sh.in                        |   1 +
>   include/lapi/syscalls/sparc.in                     |   1 +
>   include/lapi/syscalls/sparc64.in                   |   1 +
>   include/lapi/syscalls/x86_64.in                    |   1 +
>   include/safe_macros_fn.h                           |   4 +
>   include/tst_safe_macros.h                          |   3 +
>   lib/safe_macros.c                                  |  20 ++++
>   runtest/syscalls                                   |   3 +
>   testcases/kernel/syscalls/fchmodat2/.gitignore     |   2 +
>   testcases/kernel/syscalls/fchmodat2/Makefile       |   7 ++
>   testcases/kernel/syscalls/fchmodat2/fchmodat2.h    |  20 ++++
>   testcases/kernel/syscalls/fchmodat2/fchmodat2_01.c | 105 +++++++++++++++++++++
>   testcases/kernel/syscalls/fchmodat2/fchmodat2_02.c |  68 +++++++++++++
>   28 files changed, 263 insertions(+)
> ---
> base-commit: c5d95b6d34e2356bd19e6b646da06f1bce66a024
> change-id: 20240517-fchmodat2-5b82867d71fc
>
> Best regards,