History

introduce fd_file(), convert all accessors to it.

For any changes of struct fd representation we need to turn existing accesses to fields into calls of wrappers. Accesses to struct fd::flags are very few (3 in linux/file.h, 1 in net/socket.c, 3 in fs/overlayfs/file.c and 3 more in explicit initializers). Those can be dealt with in the commit converting to new layout; accesses to struct fd::file are too many for that. This commit converts (almost) all of f.file to fd_file(f). It's not entirely mechanical ('file' is used as a member name more than just in struct fd) and it does not even attempt to distinguish the uses in pointer context from those in boolean context; the latter will be eventually turned into a separate helper (fd_empty()). NOTE: mass conversion to fd_empty(), tempting as it might be, is a bad idea; better do that piecewise in commit that convert from fdget...() to CLASS(...). [conflicts in fs/fhandle.c, kernel/bpf/syscall.c, mm/memcontrol.c caught by git; fs/stat.c one got caught by git grep] [fs/xattr.c conflict]

Al Viro committed 2 years ago

Commit 1da91ea1 parent 840029183 files · +504 −502Browse files

Showing the changes to kernel/module (1 of 83 files). Show all

Unified · Split

kernel/module/main.c+1−1
@@ -3211,7 +3211,7 @@ SYSCALL_DEFINE3(finit_module, int, fd, const char __user *, uargs, int, flags) · 3210 unmodified lines
32113211 return -EINVAL;
32123212
32133213 f = fdget(fd);
3214− err = idempotent_init_module(f.file, uargs, flags);
3214+ err = idempotent_init_module(fd_file(f), uargs, flags);
32153215 fdput(f);
32163216 return err;
32173217 }