linux/rust/kernel
Alice Ryhl 8121353a4b
rust: regulator: do not assume that regulator_get() returns non-null
The Rust `Regulator` abstraction uses `NonNull` to wrap the underlying
`struct regulator` pointer. When `CONFIG_REGULATOR` is disabled, the C
stub for `regulator_get` returns `NULL`. `from_err_ptr` does not treat
`NULL` as an error, so it was passed to `NonNull::new_unchecked`,
causing undefined behavior.

Fix this by using a raw pointer `*mut bindings::regulator` instead of
`NonNull`. This allows `inner` to be `NULL` when `CONFIG_REGULATOR` is
disabled, and leverages the C stubs which are designed to handle `NULL`
or are no-ops.

Fixes: 9b614ceada ("rust: regulator: add a bare minimum regulator abstraction")
Reported-by: Miguel Ojeda <ojeda@kernel.org>
Closes: https://lore.kernel.org/r/20260322193830.89324-1-ojeda@kernel.org
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Link: https://patch.msgid.link/20260324-regulator-fix-v1-1-a5244afa3c15@google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-03-24 13:08:21 +00:00
..
alloc rust: alloc: use `kernel::fmt` 2025-10-20 04:04:23 +02:00
block rust: block: mq: use pin_init::zeroed() for tag_set 2026-01-21 07:37:15 -07:00
debugfs Driver core changes for 7.0-rc1 2026-02-11 17:43:59 -08:00
device rust: device: replace `kernel::c_str!` with C-Strings 2025-12-22 17:30:24 +01:00
drm rust/drm: Fix Registration::{new,new_foreign_owned}() docs 2026-01-23 14:18:07 -05:00
fs rust: fs: add file::Offset type alias 2025-11-05 00:05:38 +01:00
io Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
iommu rust: iommu: fix `srctree` link warning 2026-01-22 09:19:30 +01:00
irq Rust fixes for v7.0-rc1 2026-02-22 08:43:31 -08:00
list Rust fixes for v7.0-rc1 2026-02-22 08:43:31 -08:00
mm mm: introduce VMA flags bitmap type 2025-11-29 10:41:09 -08:00
net rust: net: replace `kernel::c_str!` with C-Strings 2026-01-05 16:32:39 -08:00
num rust: num: bounded: clean __new documentation and comments 2026-01-26 02:53:16 +01:00
pci rust: io: macro_export io_define_read!() and io_define_write!() 2026-02-23 00:54:02 +01:00
ptr rust: ptr: add projection infrastructure 2026-03-07 23:06:17 +01:00
str rust: str: add radix prefixed integer parsing functions 2025-11-03 14:40:45 +01:00
sync Char/Misc/IIO driver changes for 7.0-rc1 2026-02-17 09:11:04 -08:00
time rust: add udelay() function 2025-11-04 13:25:29 +01:00
.gitignore rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
acpi.rs rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` 2025-10-27 20:27:05 +01:00
alloc.rs Summary of significant series in this pull request: 2025-10-02 18:18:33 -07:00
auxiliary.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
bitmap.rs rust: bitmap: add BitmapVec::new_inline() 2025-11-26 11:25:35 -05:00
bits.rs rust: bits: always inline functions using build_assert with arguments 2026-01-18 20:40:11 +01:00
block.rs rust: block: add block related constants 2025-09-02 05:23:56 -06:00
bug.rs rust: bug: Support DEBUG_BUGVERBOSE_DETAILED option 2026-01-30 05:18:17 +01:00
build_assert.rs rust: build_assert: add instructions for use with function arguments 2026-01-19 01:13:22 +01:00
clk.rs rust: clk: replace `kernel::c_str!` with C-Strings 2026-01-30 01:08:24 +01:00
configfs.rs rust: configfs: replace `kernel::c_str!` with C-Strings 2026-01-15 09:26:49 +01:00
cpu.rs rust: kernel: cpu: mark `CpuId::current()` inline 2025-09-14 23:58:45 +02:00
cpufreq.rs rust: cpufreq: suppress clippy::double_parens in Policy doctest 2026-03-12 11:01:23 +01:00
cpumask.rs rust: cpumask: rename methods of Cpumask for clarity and consistency 2026-01-27 11:21:23 +05:30
cred.rs Char/Misc/IIO/Binder changes for 6.18-rc1 2025-10-04 16:26:32 -07:00
debugfs.rs rust: debugfs: Use kernel Atomic type in docs example 2026-01-19 15:02:46 +01:00
device.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
device_id.rs rust: device_id: replace incorrect word in safety documentation 2025-12-29 14:09:18 +01:00
devres.rs rust: devres: fix race condition due to nesting 2026-02-07 01:03:49 +01:00
dma.rs rust: dma: use pointer projection infra for `dma_{read,write}` macro 2026-03-07 23:06:20 +01:00
driver.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
error.rs rust: replace `CStr` with `core::ffi::CStr` 2025-10-22 07:47:27 +02:00
faux.rs rust: faux: use "kernel vertical" style for imports 2026-01-07 19:56:00 +01:00
firmware.rs rust: firmware: replace `kernel::c_str!` with C-Strings 2025-11-17 00:53:47 +01:00
fmt.rs rust: fmt: Fix grammar in Adapter description 2026-01-04 23:51:35 +01:00
fs.rs rust: fs: add Kiocb struct 2025-09-06 13:27:20 +02:00
generated_arch_reachable_asm.rs.S rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
generated_arch_static_branch_asm.rs.S rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
generated_arch_warn_asm.rs.S rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
i2c.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
id_pool.rs rust: id_pool: do not immediately acquire new ids 2025-12-02 14:17:09 -05:00
impl_flags.rs rust: add `impl_flags!` macro for defining common bitflag operations 2026-02-02 08:09:11 +01:00
init.rs rust: init: use `#[default_error(err)]` for the initializer macros 2026-01-17 10:51:42 +01:00
io.rs rust: io: macro_export io_define_read!() and io_define_write!() 2026-02-23 00:54:02 +01:00
ioctl.rs rust: start using the `#[expect(...)]` attribute 2024-10-07 21:39:57 +02:00
iov.rs rust: iov: add iov_iter abstractions for ITER_DEST 2025-09-06 13:27:20 +02:00
irq.rs rust: irq: add support for threaded IRQs and handlers 2025-08-12 20:22:09 +02:00
jump_label.rs rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
kunit.rs rust: kunit: fix warning when !CONFIG_PRINTK 2026-03-02 10:01:15 -07:00
lib.rs rust: ptr: add projection infrastructure 2026-03-07 23:06:17 +01:00
list.rs rust: list: add warning to List::remove docs about mem::take 2025-11-26 13:26:59 +01:00
maple_tree.rs rust: maple_tree: rcu_read_lock() in destructor to silence lockdep 2025-12-23 11:23:15 -08:00
miscdevice.rs rust: redefine `bindings::compat_ptr_ioctl` in Rust 2026-01-16 14:54:11 +01:00
mm.rs rust: mm: update ARef and AlwaysRefCounted imports from sync::aref 2025-09-13 16:55:15 -07:00
module_param.rs Modules changes for v6.19-rc1 2025-12-06 08:27:07 -08:00
net.rs
num.rs rust: num: add Bounded integer wrapping type 2025-11-19 00:22:24 +01:00
of.rs rust: of: use `core::ffi::CStr` method names 2025-09-16 09:26:59 +02:00
opp.rs Rust changes for v6.19 2025-12-03 14:16:49 -08:00
page.rs rust: Return Option from page_align and ensure no usize overflow 2025-12-29 15:32:53 +01:00
pci.rs rust: pci: re-export ConfigSpace 2026-02-01 22:18:24 +01:00
pid_namespace.rs rust: pid_namespace: update AlwaysRefCounted imports from sync::aref 2025-08-19 13:08:41 +02:00
platform.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
prelude.rs drm-next for 6.19-rc1: 2025-12-04 08:53:30 -08:00
print.rs rust: print: Add pr_*_once macros 2026-01-30 05:47:05 +01:00
processor.rs rust: Add cpu_relax() helper 2025-08-21 16:58:07 +02:00
ptr.rs rust: ptr: add projection infrastructure 2026-03-07 23:06:17 +01:00
pwm.rs rust: pwm: Simplify to_result call sites and unsafe blocks 2026-01-20 18:49:58 +01:00
rbtree.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
regulator.rs rust: regulator: do not assume that regulator_get() returns non-null 2026-03-24 13:08:21 +00:00
revocable.rs Rust changes for v6.17 2025-08-03 13:49:10 -07:00
safety.rs rust: safety: introduce `unsafe_precondition_assert!` macro 2026-02-02 08:10:48 +01:00
scatterlist.rs rust: scatterlist: Update ARef imports to use sync::aref 2025-12-18 17:25:45 +01:00
security.rs rust_binder: add Rust Binder driver 2025-09-19 09:40:46 +02:00
seq_file.rs rust: seq_file: replace `kernel::c_str!` with C-Strings 2026-01-29 15:32:40 +01:00
sizes.rs rust: sizes: add constants up to SZ_2G 2025-06-23 18:12:30 +02:00
slice.rs rust: slice: fix broken intra-doc links 2025-11-20 10:13:35 +00:00
soc.rs rust: Add soc_device support 2025-12-28 12:43:56 +01:00
static_assert.rs rust: use absolute paths in macros referencing core and kernel 2025-05-23 00:12:14 +02:00
std_vendor.rs rust: convert raw URLs to Markdown autolinks in comments 2025-05-12 00:20:25 +02:00
str.rs rust: str: make NullTerminatedFormatter public 2026-03-04 02:03:31 +01:00
sync.rs rust: sync: Replace `kernel::c_str!` with C-Strings 2026-01-28 09:25:44 +01:00
task.rs rust: task: restrict Task::group_leader() to current 2026-01-26 19:07:13 -08:00
time.rs rust: time: Implement basic arithmetic operations for Delta 2025-09-04 16:56:48 +02:00
tracepoint.rs rust: add tracepoint support 2024-11-04 16:21:44 -05:00
transmute.rs rust: transmute: implement FromBytes and AsBytes for inhabited ZSTs 2026-01-26 03:16:31 +01:00
types.rs rust: allow `clippy::disallowed_names` for doctests 2025-11-17 22:53:27 +01:00
uaccess.rs rust: uaccess: add UserSliceWriter::write_slice_file() 2025-11-05 00:35:37 +01:00
usb.rs USB / Thunderbolt changes for 7.0-rc1 2026-02-17 09:36:43 -08:00
workqueue.rs rust: pin-init: add pin projections to `#[pin_data]` 2025-09-11 23:26:20 +02:00
xarray.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00