diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2023-07-04 13:50:38 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2023-07-04 13:50:38 -0700 |
commit | 04f2933d375e3f90d4435b7b518d3065afd1fa25 (patch) | |
tree | c3b7cd21480755f4184a7af23219f6f30cf5b6d4 /include/linux/file.h | |
parent | 03275585cabd0240944f19f33d7584a1b099a3a8 (diff) | |
parent | b5ec6fd286dfa466f64cb0e56ed768092d0342ae (diff) | |
download | linux-04f2933d375e3f90d4435b7b518d3065afd1fa25.tar.gz linux-04f2933d375e3f90d4435b7b518d3065afd1fa25.tar.bz2 linux-04f2933d375e3f90d4435b7b518d3065afd1fa25.zip |
Merge tag 'core_guards_for_6.5_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue
Pull scope-based resource management infrastructure from Peter Zijlstra:
"These are the first few patches in the Scope-based Resource Management
series that introduce the infrastructure but not any conversions as of
yet.
Adding the infrastructure now allows multiple people to start using
them.
Of note is that Sparse will need some work since it doesn't yet
understand this attribute and might have decl-after-stmt issues"
* tag 'core_guards_for_6.5_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue:
kbuild: Drop -Wdeclaration-after-statement
locking: Introduce __cleanup() based infrastructure
apparmor: Free up __cleanup() name
dmaengine: ioat: Free up __cleanup() name
Diffstat (limited to 'include/linux/file.h')
-rw-r--r-- | include/linux/file.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/file.h b/include/linux/file.h index 39704eae83e2..6e9099d29343 100644 --- a/include/linux/file.h +++ b/include/linux/file.h @@ -10,6 +10,7 @@ #include <linux/types.h> #include <linux/posix_types.h> #include <linux/errno.h> +#include <linux/cleanup.h> struct file; @@ -80,6 +81,8 @@ static inline void fdput_pos(struct fd f) fdput(f); } +DEFINE_CLASS(fd, struct fd, fdput(_T), fdget(fd), int fd) + extern int f_dupfd(unsigned int from, struct file *file, unsigned flags); extern int replace_fd(unsigned fd, struct file *file, unsigned flags); extern void set_close_on_exec(unsigned int fd, int flag); @@ -88,6 +91,9 @@ extern int __get_unused_fd_flags(unsigned flags, unsigned long nofile); extern int get_unused_fd_flags(unsigned flags); extern void put_unused_fd(unsigned int fd); +DEFINE_CLASS(get_unused_fd, int, if (_T >= 0) put_unused_fd(_T), + get_unused_fd_flags(flags), unsigned flags) + extern void fd_install(unsigned int fd, struct file *file); extern int __receive_fd(struct file *file, int __user *ufd, |