vfs-7.0-rc1.rust

Please consider pulling these changes from the signed vfs-7.0-rc1.rust tag.
 
 Thanks!
 Christian
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCaYX49gAKCRCRxhvAZXjc
 oheVAQCQdJGRfbo13G4Z8UJg239TRTkCckEpXJaPMyunpdeSNwD/YQctuOS3vW6b
 TbTBY4vlpSmdWYwZUH+P6zZaeSMgsQE=
 =R6mK
 -----END PGP SIGNATURE-----

Merge tag 'vfs-7.0-rc1.rust' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs

Pull vfs rust updates from Christian Brauner:
 "Allow inlining C helpers into Rust when using LTO: Add the
  __rust_helper annotation to all VFS-related Rust helper functions.

  Currently, C helpers cannot be inlined into Rust code even under LTO
  because LLVM detects slightly different codegen options between the C
  and Rust compilation units (differing null-pointer-check flags,
  builtin lists, and target feature strings). The __rust_helper macro is
  the first step toward fixing this: it is currently #defined to
  nothing, but a follow-up series will change it to __always_inline when
  compiling with LTO (while keeping it empty for bindgen, which ignores
  inline functions).

  This picks up the VFS portion (fs, pid_namespace, poll) of a larger
  tree-wide series"

* tag 'vfs-7.0-rc1.rust' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs:
  rust: poll: add __rust_helper to helpers
  rust: pid_namespace: add __rust_helper to helpers
  rust: fs: add __rust_helper to helpers
This commit is contained in:
Linus Torvalds 2026-02-09 10:41:56 -08:00
commit 4b6c6bc6fa
3 changed files with 9 additions and 6 deletions

View file

@ -6,7 +6,7 @@
#include <linux/fs.h>
struct file *rust_helper_get_file(struct file *f)
__rust_helper struct file *rust_helper_get_file(struct file *f)
{
return get_file(f);
}

View file

@ -3,18 +3,20 @@
#include <linux/pid_namespace.h>
#include <linux/cleanup.h>
struct pid_namespace *rust_helper_get_pid_ns(struct pid_namespace *ns)
__rust_helper struct pid_namespace *
rust_helper_get_pid_ns(struct pid_namespace *ns)
{
return get_pid_ns(ns);
}
void rust_helper_put_pid_ns(struct pid_namespace *ns)
__rust_helper void rust_helper_put_pid_ns(struct pid_namespace *ns)
{
put_pid_ns(ns);
}
/* Get a reference on a task's pid namespace. */
struct pid_namespace *rust_helper_task_get_pid_ns(struct task_struct *task)
__rust_helper struct pid_namespace *
rust_helper_task_get_pid_ns(struct task_struct *task)
{
struct pid_namespace *pid_ns;

View file

@ -3,8 +3,9 @@
#include <linux/export.h>
#include <linux/poll.h>
void rust_helper_poll_wait(struct file *filp, wait_queue_head_t *wait_address,
poll_table *p)
__rust_helper void rust_helper_poll_wait(struct file *filp,
wait_queue_head_t *wait_address,
poll_table *p)
{
poll_wait(filp, wait_address, p);
}