From: Christian Brauner Date: Mon, 30 Sep 2024 11:02:35 +0000 (+0200) Subject: Merge patch series "File abstractions needed by Rust Binder" X-Git-Tag: v6.13-rc1~75^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=70d7f7dbd98a4d499b46ec9ef2bd1f2698facf2b;p=thirdparty%2Fkernel%2Flinux.git Merge patch series "File abstractions needed by Rust Binder" Alice Ryhl says: This patchset contains the file abstractions needed by the Rust implementation of the Binder driver. Please see the Rust Binder RFC for usage examples: https://lore.kernel.org/rust-for-linux/20231101-rust-binder-v1-0-08ba9197f637@google.com Users of "rust: types: add `NotThreadSafe`": [PATCH 5/9] rust: file: add `FileDescriptorReservation` Users of "rust: task: add `Task::current_raw`": [PATCH 7/9] rust: file: add `Kuid` wrapper [PATCH 8/9] rust: file: add `DeferredFdCloser` Users of "rust: file: add Rust abstraction for `struct file`": [PATCH RFC 02/20] rust_binder: add binderfs support to Rust binder [PATCH RFC 03/20] rust_binder: add threading support Users of "rust: cred: add Rust abstraction for `struct cred`": [PATCH RFC 05/20] rust_binder: add nodes and context managers [PATCH RFC 06/20] rust_binder: add oneway transactions [PATCH RFC 11/20] rust_binder: send nodes in transaction [PATCH RFC 13/20] rust_binder: add BINDER_TYPE_FD support Users of "rust: security: add abstraction for secctx": [PATCH RFC 06/20] rust_binder: add oneway transactions Users of "rust: file: add `FileDescriptorReservation`": [PATCH RFC 13/20] rust_binder: add BINDER_TYPE_FD support [PATCH RFC 14/20] rust_binder: add BINDER_TYPE_FDA support Users of "rust: file: add `Kuid` wrapper": [PATCH RFC 05/20] rust_binder: add nodes and context managers [PATCH RFC 06/20] rust_binder: add oneway transactions Users of "rust: file: add abstraction for `poll_table`": [PATCH RFC 07/20] rust_binder: add epoll support This patchset has some uses of read_volatile in place of READ_ONCE. Please see the following rfc for context on this: https://lore.kernel.org/all/20231025195339.1431894-1-boqun.feng@gmail.com/ * patches from https://lore.kernel.org/r/20240915-alice-file-v10-0-88484f7a3dcf@google.com: rust: file: add abstraction for `poll_table` rust: file: add `Kuid` wrapper rust: file: add `FileDescriptorReservation` rust: security: add abstraction for secctx rust: cred: add Rust abstraction for `struct cred` rust: file: add Rust abstraction for `struct file` rust: task: add `Task::current_raw` rust: types: add `NotThreadSafe` Link: https://lore.kernel.org/r/20240915-alice-file-v10-0-88484f7a3dcf@google.com Signed-off-by: Christian Brauner --- 70d7f7dbd98a4d499b46ec9ef2bd1f2698facf2b diff --cc fs/file.c index eb093e7369720,fc14209cf3e92..36ff81c90edb8 --- a/fs/file.c +++ b/fs/file.c @@@ -1096,8 -1123,15 +1096,15 @@@ EXPORT_SYMBOL(task_lookup_next_fdget_rc * * The fput_needed flag returned by fget_light should be passed to the * corresponding fput_light. + * + * (As an exception to rule 2, you can call filp_close between fget_light and + * fput_light provided that you capture a real refcount with get_file before + * the call to filp_close, and ensure that this real refcount is fput *after* + * the fput_light call.) + * + * See also the documentation in rust/kernel/file.rs. */ -static unsigned long __fget_light(unsigned int fd, fmode_t mask) +static inline struct fd __fget_light(unsigned int fd, fmode_t mask) { struct files_struct *files = current->files; struct file *file; diff --cc rust/kernel/lib.rs index b5f4b3ce6b482,e088c94a5a144..22785422ac8b7 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@@ -45,7 -47,7 +47,8 @@@ pub mod page pub mod prelude; pub mod print; pub mod rbtree; + pub mod security; +pub mod sizes; mod static_assert; #[doc(hidden)] pub mod std_vendor;