Skip to content

Commit be7efb2

Browse files
alberandbrauner
authored andcommitted
fs: introduce file_getattr and file_setattr syscalls
Introduce file_getattr() and file_setattr() syscalls to manipulate inode extended attributes. The syscalls takes pair of file descriptor and pathname. Then it operates on inode opened accroding to openat() semantics. The struct file_attr is passed to obtain/change extended attributes. This is an alternative to FS_IOC_FSSETXATTR ioctl with a difference that file don't need to be open as we can reference it with a path instead of fd. By having this we can manipulated inode extended attributes not only on regular files but also on special ones. This is not possible with FS_IOC_FSSETXATTR ioctl as with special files we can not call ioctl() directly on the filesystem inode using fd. This patch adds two new syscalls which allows userspace to get/set extended inode attributes on special files by using parent directory and a path - *at() like syscall. CC: [email protected] CC: [email protected] CC: [email protected] Signed-off-by: Andrey Albershteyn <[email protected]> Link: https://lore.kernel.org/[email protected] Acked-by: Arnd Bergmann <[email protected]> Signed-off-by: Christian Brauner <[email protected]>
1 parent 276e136 commit be7efb2

File tree

21 files changed

+218
-1
lines changed

21 files changed

+218
-1
lines changed

arch/alpha/kernel/syscalls/syscall.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,3 +507,5 @@
507507
575 common listxattrat sys_listxattrat
508508
576 common removexattrat sys_removexattrat
509509
577 common open_tree_attr sys_open_tree_attr
510+
578 common file_getattr sys_file_getattr
511+
579 common file_setattr sys_file_setattr

arch/arm/tools/syscall.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,3 +482,5 @@
482482
465 common listxattrat sys_listxattrat
483483
466 common removexattrat sys_removexattrat
484484
467 common open_tree_attr sys_open_tree_attr
485+
468 common file_getattr sys_file_getattr
486+
469 common file_setattr sys_file_setattr

arch/arm64/tools/syscall_32.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,3 +479,5 @@
479479
465 common listxattrat sys_listxattrat
480480
466 common removexattrat sys_removexattrat
481481
467 common open_tree_attr sys_open_tree_attr
482+
468 common file_getattr sys_file_getattr
483+
469 common file_setattr sys_file_setattr

arch/m68k/kernel/syscalls/syscall.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,3 +467,5 @@
467467
465 common listxattrat sys_listxattrat
468468
466 common removexattrat sys_removexattrat
469469
467 common open_tree_attr sys_open_tree_attr
470+
468 common file_getattr sys_file_getattr
471+
469 common file_setattr sys_file_setattr

arch/microblaze/kernel/syscalls/syscall.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,3 +473,5 @@
473473
465 common listxattrat sys_listxattrat
474474
466 common removexattrat sys_removexattrat
475475
467 common open_tree_attr sys_open_tree_attr
476+
468 common file_getattr sys_file_getattr
477+
469 common file_setattr sys_file_setattr

arch/mips/kernel/syscalls/syscall_n32.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,3 +406,5 @@
406406
465 n32 listxattrat sys_listxattrat
407407
466 n32 removexattrat sys_removexattrat
408408
467 n32 open_tree_attr sys_open_tree_attr
409+
468 n32 file_getattr sys_file_getattr
410+
469 n32 file_setattr sys_file_setattr

arch/mips/kernel/syscalls/syscall_n64.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,3 +382,5 @@
382382
465 n64 listxattrat sys_listxattrat
383383
466 n64 removexattrat sys_removexattrat
384384
467 n64 open_tree_attr sys_open_tree_attr
385+
468 n64 file_getattr sys_file_getattr
386+
469 n64 file_setattr sys_file_setattr

arch/mips/kernel/syscalls/syscall_o32.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,3 +455,5 @@
455455
465 o32 listxattrat sys_listxattrat
456456
466 o32 removexattrat sys_removexattrat
457457
467 o32 open_tree_attr sys_open_tree_attr
458+
468 o32 file_getattr sys_file_getattr
459+
469 o32 file_setattr sys_file_setattr

arch/parisc/kernel/syscalls/syscall.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,3 +466,5 @@
466466
465 common listxattrat sys_listxattrat
467467
466 common removexattrat sys_removexattrat
468468
467 common open_tree_attr sys_open_tree_attr
469+
468 common file_getattr sys_file_getattr
470+
469 common file_setattr sys_file_setattr

arch/powerpc/kernel/syscalls/syscall.tbl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,3 +558,5 @@
558558
465 common listxattrat sys_listxattrat
559559
466 common removexattrat sys_removexattrat
560560
467 common open_tree_attr sys_open_tree_attr
561+
468 common file_getattr sys_file_getattr
562+
469 common file_setattr sys_file_setattr

0 commit comments

Comments
 (0)