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]
Showing the changes to kernel/module (1 of 83 files). Show all
Unified · Split
| @@ -3211,7 +3211,7 @@ SYSCALL_DEFINE3(finit_module, int, fd, const char __user *, uargs, int, flags) · 3210 unmodified lines | |||
| 3211 | return -EINVAL; | 3211 | return -EINVAL; |
| 3212 | 3212 | ||
| 3213 | f = fdget(fd); | 3213 | f = fdget(fd); |
| 3214 | err = idempotent_init_module(f.file, uargs, flags); | 3214 | err = idempotent_init_module(fd_file(f), uargs, flags); |
| 3215 | fdput(f); | 3215 | fdput(f); |
| 3216 | return err; | 3216 | return err; |
| 3217 | } | 3217 | } |