lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20250928173541.229298-1-ojeda@kernel.org>
Date: Sun, 28 Sep 2025 19:35:40 +0200
From: Miguel Ojeda <ojeda@...nel.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Miguel Ojeda <ojeda@...nel.org>,
	Alex Gaynor <alex.gaynor@...il.com>,
	Boqun Feng <boqun.feng@...il.com>,
	Gary Guo <gary@...yguo.net>,
	Björn Roy Baron <bjorn3_gh@...tonmail.com>,
	Benno Lossin <lossin@...nel.org>,
	Andreas Hindborg <a.hindborg@...nel.org>,
	Alice Ryhl <aliceryhl@...gle.com>,
	Trevor Gross <tmgross@...ch.edu>,
	Danilo Krummrich <dakr@...nel.org>,
	rust-for-linux@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: [GIT PULL] Rust for 6.18

Hi Linus,

This is the next round of the Rust support.

A small one this time. One of the trees I merge (pin-init) is going this
cycle through DRM for convenience.

No conflicts expected at this time. Nevertheless, I did a test merge and
tested it a bit and it seems fine.

When you merge other trees, you will have some. The resolutions in -next
should be fine, except for a `rustfmt` issue in one, so please remember
to double-check that on your merges (it may be solved by the time you
get to it).

All commits have been in linux-next for at least four rounds, most for
two weeks or more.

Please pull for v6.18 -- thanks!

Cheers,
Miguel

The following changes since commit 76eeb9b8de9880ca38696b2fb56ac45ac0a25c6c:

  Linux 6.17-rc5 (2025-09-07 14:22:57 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux.git tags/rust-6.18

for you to fetch changes up to f3f6b3664302e16ef1c6b91034a72df5564d6b8a:

  gpu: nova-core: use Alignment for alignment-related operations (2025-09-22 23:56:06 +0200)

----------------------------------------------------------------
Rust changes for v6.18

Toolchain and infrastructure:

 - Derive 'Zeroable' for all structs and unions generated by 'bindgen'
   where possible and corresponding cleanups. To do so, add the
   'pin-init' crate as a dependency to 'bindings' and 'uapi'.

   It also includes its first use in the 'cpufreq' module, with more to
   come in the next cycle.

 - Add warning to the 'rustdoc' target to detect broken 'srctree/' links
   and fix existing cases.

 - Remove support for unused (since v6.16) host '#[test]'s, simplifying
   the 'rusttest' target. Tests should generally run within KUnit.

'kernel' crate:

 - Add 'ptr' module with a new 'Alignment' type, which is always a power
   of two and is used to validate that a given value is a valid
   alignment and to perform masking and alignment operations:

       // Checked at build time.
       assert_eq!(Alignment::new::<16>().as_usize(), 16);

       // Checked at runtime.
       assert_eq!(Alignment::new_checked(15), None);

       assert_eq!(Alignment::of::<u8>().log2(), 0);

       assert_eq!(0x25u8.align_down(Alignment::new::<0x10>()), 0x20);
       assert_eq!(0x5u8.align_up(Alignment::new::<0x10>()), Some(0x10));
       assert_eq!(u8::MAX.align_up(Alignment::new::<0x10>()), None);

   It also includes its first use in Nova.

 - Add 'core::mem::{align,size}_of{,_val}' to the prelude, matching
   Rust 1.80.0.

 - Keep going with the steps on our migration to the standard library
   'core::ffi::CStr' type (use 'kernel::{fmt, prelude::fmt!}' and use
   upstream method names).

 - 'error' module: improve 'Error::from_errno' and 'to_result'
   documentation, including examples/tests.

 - 'sync' module: extend 'aref' submodule documentation now that it
   exists, and more updates to complete the ongoing move of 'ARef' and
   'AlwaysRefCounted' to 'sync::aref'.

 - 'list' module: add an example/test for 'ListLinksSelfPtr' usage.

 - 'alloc' module:

   - Implement 'Box::pin_slice()', which constructs a pinned slice of
     elements.

   - Provide information about the minimum alignment guarantees of
     'Kmalloc', 'Vmalloc' and 'KVmalloc'.

   - Take minimum alignment guarantees of allocators for
     'ForeignOwnable' into account.

   - Remove the 'allocator_test' (including 'Cmalloc').

   - Add doctest for 'Vec::as_slice()'.

   - Constify various methods.

 - 'time' module:

   - Add methods on 'HrTimer' that can only be called with exclusive
     access to an unarmed timer, or from timer callback context.

   - Add arithmetic operations to 'Instant' and 'Delta'.

   - Add a few convenience and access methods to 'HrTimer' and
     'Instant'.

'macros' crate:

 - Reduce collections in 'quote!' macro.

And a few other cleanups and improvements.

----------------------------------------------------------------
Alexandre Courbot (2):
      rust: add `Alignment` type
      gpu: nova-core: use Alignment for alignment-related operations

Alice Ryhl (3):
      rust: alloc: specify the minimum alignment of each allocator
      rust: alloc: take the allocator into account for FOREIGN_ALIGN
      rust: alloc: implement Box::pin_slice()

Benno Lossin (4):
      rust: add `pin-init` as a dependency to `bindings` and `uapi`
      rust: derive `Zeroable` for all structs & unions generated by bindgen where possible
      rust: cpufreq: replace `MaybeUninit::zeroed().assume_init()` with `pin_init::zeroed()`
      rust: sync: extend module documentation of aref

Boqun Feng (1):
      rust: list: Add an example for `ListLinksSelfPtr` usage

Danilo Krummrich (1):
      rust: alloc: add ARCH_KMALLOC_MINALIGN to bindgen blocklist

Hui Zhu (2):
      rust: alloc: kvec: add doc example for as_slice method
      rust: alloc: kvec: simplify KUnit test module name to "rust_kvec"

Lyude Paul (9):
      rust: hrtimer: Document the return value for HrTimerHandle::cancel()
      rust: hrtimer: Add HrTimerInstant
      rust: hrtimer: Add HrTimer::raw_forward() and forward()
      rust: hrtimer: Add HrTimerCallbackContext and ::forward()
      rust: hrtimer: Add forward_now() to HrTimer and HrTimerCallbackContext
      rust: time: Add Instant::from_ktime()
      rust: hrtimer: Add HrTimer::expires()
      rust: time: Implement Add<Delta>/Sub<Delta> for Instant
      rust: time: Implement basic arithmetic operations for Delta

Miguel Ojeda (10):
      rust: kernel: remove support for unused host `#[test]`s
      rust: alloc: remove `allocator_test`
      Merge tag 'alloc-next-v6.18-2025-09-04' of https://github.com/Rust-for-Linux/linux into rust-next
      rust: block: fix `srctree/` links
      rust: drm: fix `srctree/` links
      rust: warn if `srctree/` links do not exist
      rust: prelude: re-export `core::mem::{align,size}_of{,_val}`
      rust: error: improve `Error::from_errno` documentation
      rust: error: improve `to_result` documentation
      Merge tag 'rust-timekeeping-v6.18' of https://github.com/Rust-for-Linux/linux into rust-next

Onur Özkan (3):
      rust: make `ArrayLayout::new_unchecked` a `const fn`
      rust: make `kvec::Vec` functions `const fn`
      rust: error: add C header links

Ritvik Gupta (1):
      rust: kernel: cpu: mark `CpuId::current()` inline

Shankari Anand (3):
      rust: dma: Update ARef and AlwaysRefCounted imports from sync::aref
      rust: sync: Update ARef and AlwaysRefCounted imports from sync::aref
      rust: task: update ARef and AlwaysRefCounted imports from sync::aref

Tamir Duberstein (21):
      gpu: nova-core: use `kernel::{fmt,prelude::fmt!}`
      rust: alloc: use `kernel::{fmt,prelude::fmt!}`
      rust: block: use `kernel::{fmt,prelude::fmt!}`
      rust: device: use `kernel::{fmt,prelude::fmt!}`
      rust: file: use `kernel::{fmt,prelude::fmt!}`
      rust: kunit: use `kernel::{fmt,prelude::fmt!}`
      rust: seq_file: use `kernel::{fmt,prelude::fmt!}`
      rust: sync: use `kernel::{fmt,prelude::fmt!}`
      rust: device: use `kernel::{fmt,prelude::fmt!}`
      drm/panic: use `core::ffi::CStr` method names
      rust: auxiliary: use `core::ffi::CStr` method names
      rust: configfs: use `core::ffi::CStr` method names
      rust: cpufreq: use `core::ffi::CStr` method names
      rust: drm: use `core::ffi::CStr` method names
      rust: firmware: use `core::ffi::CStr` method names
      rust: kunit: use `core::ffi::CStr` method names
      rust: miscdevice: use `core::ffi::CStr` method names
      rust: net: use `core::ffi::CStr` method names
      rust: of: use `core::ffi::CStr` method names
      rust: acpi: use `core::ffi::CStr` method names
      rust: macros: reduce collections in `quote!` macro

 Documentation/gpu/nova/core/todo.rst |   1 -
 drivers/block/rnull.rs               |   2 +-
 drivers/gpu/drm/drm_panic_qr.rs      |   2 +-
 drivers/gpu/nova-core/fb.rs          |   6 +-
 drivers/gpu/nova-core/gpu.rs         |   3 +-
 drivers/gpu/nova-core/regs/macros.rs |   6 +-
 drivers/gpu/nova-core/vbios.rs       |   4 +-
 rust/Makefile                        |  29 ++---
 rust/bindgen_parameters              |   5 +
 rust/bindings/bindings_helper.h      |   1 +
 rust/bindings/lib.rs                 |   8 ++
 rust/kernel/acpi.rs                  |   7 +-
 rust/kernel/alloc.rs                 |  15 +--
 rust/kernel/alloc/allocator.rs       |   8 ++
 rust/kernel/alloc/allocator_test.rs  | 124 -------------------
 rust/kernel/alloc/kbox.rs            |  92 +++++++++++++-
 rust/kernel/alloc/kvec.rs            |  24 ++--
 rust/kernel/alloc/kvec/errors.rs     |   2 +-
 rust/kernel/alloc/layout.rs          |   2 +-
 rust/kernel/auxiliary.rs             |   4 +-
 rust/kernel/block/mq.rs              |   2 +-
 rust/kernel/block/mq/gen_disk.rs     |   4 +-
 rust/kernel/block/mq/raw_writer.rs   |   3 +-
 rust/kernel/configfs.rs              |   4 +-
 rust/kernel/cpu.rs                   |   1 +
 rust/kernel/cpufreq.rs               |   6 +-
 rust/kernel/device.rs                |   6 +-
 rust/kernel/device/property.rs       |  23 ++--
 rust/kernel/dma.rs                   |   2 +-
 rust/kernel/drm/device.rs            |   6 +-
 rust/kernel/drm/driver.rs            |   2 +-
 rust/kernel/drm/file.rs              |   2 +-
 rust/kernel/drm/gem/mod.rs           |   2 +-
 rust/kernel/drm/ioctl.rs             |   2 +-
 rust/kernel/error.rs                 |  66 ++++++++--
 rust/kernel/firmware.rs              |   2 +-
 rust/kernel/fs/file.rs               |   5 +-
 rust/kernel/kunit.rs                 |  14 +--
 rust/kernel/lib.rs                   |   5 +-
 rust/kernel/list.rs                  | 120 ++++++++++++++++++
 rust/kernel/miscdevice.rs            |   2 +-
 rust/kernel/net/phy.rs               |   2 +-
 rust/kernel/of.rs                    |   2 +-
 rust/kernel/prelude.rs               |   5 +-
 rust/kernel/ptr.rs                   | 228 +++++++++++++++++++++++++++++++++++
 rust/kernel/seq_file.rs              |   6 +-
 rust/kernel/sync/arc.rs              |   8 +-
 rust/kernel/sync/aref.rs             |  17 ++-
 rust/kernel/task.rs                  |   7 +-
 rust/kernel/time.rs                  | 163 ++++++++++++++++++++++++-
 rust/kernel/time/hrtimer.rs          | 152 ++++++++++++++++++++++-
 rust/kernel/time/hrtimer/arc.rs      |   9 +-
 rust/kernel/time/hrtimer/pin.rs      |   9 +-
 rust/kernel/time/hrtimer/pin_mut.rs  |  12 +-
 rust/kernel/time/hrtimer/tbox.rs     |   9 +-
 rust/macros/quote.rs                 | 104 ++++++++--------
 rust/uapi/lib.rs                     |   2 +
 samples/rust/rust_configfs.rs        |   2 +-
 samples/rust/rust_dma.rs             |   2 +-
 scripts/generate_rust_analyzer.py    |   4 +-
 scripts/rustdoc_test_gen.rs          |   2 +-
 61 files changed, 1054 insertions(+), 315 deletions(-)
 delete mode 100644 rust/kernel/alloc/allocator_test.rs
 create mode 100644 rust/kernel/ptr.rs

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ