kernel/fs: Introduce check_write_stat_permissions utility method.

Like check_access_permissions() but for write_stat() hook instead
of access().

Basic logic copied from BFS, but with the UID/GID logic rewritten
to better conform to behavior on other OSes: notably, we allow
chown() requests that keep the UID the same to go through, same
as Linux seems to, which should fix #19666. We now also validate
that the GID is one of the current team's groups.
This commit is contained in:
Augustin Cavalier
2025-07-07 15:10:01 -04:00
parent 7ed202f9ed
commit 9ea1065b16
5 changed files with 103 additions and 0 deletions
@@ -950,6 +950,7 @@
#define get_vnode_removed fssh_get_vnode_removed
#define volume_for_vnode fssh_volume_for_vnode
#define check_access_permissions fssh_check_access_permissions
#define check_write_stat_permissions fssh_check_write_stat_permissions
#define read_pages fssh_read_pages
#define write_pages fssh_write_pages
#define read_file_io_vec_pages fssh_read_file_io_vec_pages