linux/rust/kernel
Sophon Zhang 8d7b3e41ff rust: pci: reject IRQ vector indices that do not fit in u32
IrqVectorRegistration::index() accepts a usize, but pci_irq_vector()
takes an unsigned int. On 64-bit architectures, casting an index larger
than u32::MAX wraps it before the PCI core can validate it. In
particular, u32::MAX + 1 becomes zero and can resolve to the first
allocated vector.

Use a checked conversion and return EINVAL when the index cannot be
represented by the C API.

Fixes: 2fb7755b0a ("rust: pci: resolve IRQ in index() and embed IrqRequest in IrqVector")
Signed-off-by: Sophon Zhang <aiqubits@hotmail.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Link: https://patch.msgid.link/20260901-fix-pci-irq-vector-index-truncation-v4-1-f94aa6932fd9@hotmail.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
2026-09-01 18:21:01 +02:00
..
alloc drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
block rust: block: fix GenDisk cleanup paths 2026-05-31 19:45:06 -06:00
debugfs rust: debugfs: remove unsafe blocks from traits impl for Vec 2026-07-31 11:08:29 +02:00
device
drm drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
fs
gpu rust: gpu: Add GPU buddy allocator bindings 2026-03-23 21:41:47 +01:00
interop rust: interop: Add list module for C linked list interface 2026-03-23 20:29:28 +01:00
io rust: io: register: use path fragment for alias destination 2026-08-03 22:30:32 +02:00
iommu drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
irq rust: irq: make Registration compatible with lifetime-bound drivers 2026-08-04 23:30:34 +02:00
list Locking updates for v7.1: 2026-04-14 12:36:25 -07:00
mm mm: rename zap_page_range_single() to zap_vma_range() 2026-04-05 13:53:15 -07:00
net Char/Misc/IIO/etc driver update for 7.3-rc1 2026-08-25 09:38:50 -07:00
num rust: num: restrict bool conversion to unsigned Bounded 2026-08-24 13:21:12 +02:00
pci rust: pci: reject IRQ vector indices that do not fit in u32 2026-09-01 18:21:01 +02:00
ptr rust: ptr: remove implicit index projection syntax 2026-06-05 10:16:47 +02:00
str
sync Char/Misc/IIO/etc driver update for 7.3-rc1 2026-08-25 09:38:50 -07:00
time hrtimer: add usage examples to documentation 2026-03-23 08:31:00 +01:00
types rust: types: introduce ForLt base trait for CovariantForLt 2026-07-11 19:42:03 +02:00
.gitignore
acpi.rs rust: driver: store pointers in DeviceId 2026-07-30 22:50:15 +02:00
alloc.rs rust: alloc: cleanup imports and use "kernel vertical" style 2026-05-20 17:34:17 +02:00
auxiliary.rs Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
bitfield.rs rust: bitfield: always inline test conversions 2026-08-10 06:58:31 +02:00
bitmap.rs rust: tests: add Kconfig for KUnit test 2026-06-08 02:30:33 +02:00
bits.rs
block.rs
bug.rs rust: bug: fix warn_on macro build error on UML 2026-08-10 07:14:24 +02:00
build_assert.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00
clk.rs rust: clk: implement Send and Sync 2026-04-03 11:57:35 +02:00
configfs.rs rust: configfs: use LocalModule for THIS_MODULE 2026-08-12 09:36:26 +02:00
cpu.rs
cpufreq.rs CPUFreq arm updates for 7.3 2026-08-06 13:25:02 +02:00
cpumask.rs rust: cpumask: rename methods of Cpumask for clarity and consistency 2026-01-27 11:21:23 +05:30
cred.rs
debugfs.rs rust: debugfs: Use kernel Atomic type in docs example 2026-01-19 15:02:46 +01:00
device_id.rs rust: driver: remove duplicate ID table 2026-07-30 22:50:15 +02:00
device.rs Linux 7.2-rc7 2026-08-10 01:20:05 +02:00
devres.rs Linux 7.2 2026-08-20 10:58:44 +10:00
dma.rs drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
driver.rs rust: driver: remove open-coded matching logic 2026-07-30 22:50:15 +02:00
error.rs rust: error: add remaining error codes 2026-08-10 07:57:34 +02:00
faux.rs rust: faux: add Device type with AsBusDevice support 2026-07-12 15:55:51 +02:00
firmware.rs drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
fmt.rs rust: fmt: route {:p} through HashedPtr to prevent address leaks 2026-08-12 11:58:50 +02:00
fs.rs
fwctl.rs fwctl 7.3 pull request 2026-08-19 12:51:36 -07:00
generated_arch_reachable_asm.rs.S
generated_arch_static_branch_asm.rs.S
generated_arch_warn_asm.rs.S
gpu.rs rust: gpu: Add GPU buddy allocator bindings 2026-03-23 21:41:47 +01:00
i2c.rs i2c for v7.3, part 2 2026-08-24 09:07:15 -07:00
id_pool.rs
impl_flags.rs rust: impl_flags: use bit helper in example 2026-08-10 06:44:10 +02:00
init.rs rust: treewide: replace __pinned_init with raw_[try_]init 2026-08-05 11:36:18 +01:00
interop.rs rust: interop: Add list module for C linked list interface 2026-03-23 20:29:28 +01:00
interrupt.rs rust: Introduce interrupt module 2026-08-10 12:53:09 +02:00
io.rs Linux 7.2 2026-08-20 10:58:44 +10:00
ioctl.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00
iov.rs
irq.rs rust: irq: fix C header path in module docs 2026-07-21 00:48:45 +02:00
jump_label.rs rust: jump_label: skip arch-specific asm in testlib builds 2026-08-23 21:27:16 +02:00
Kconfig.test rust: bitfield: Add KUnit tests for bitfield 2026-06-09 04:13:07 +02:00
kunit.rs kunit,rust: Add ability to skip entire test suites 2026-06-29 15:48:26 -06:00
lib.rs fwctl 7.3 pull request 2026-08-19 12:51:36 -07:00
list.rs rust: kernel: list: fix incorrect pop_back example comment 2026-08-23 21:27:16 +02:00
maple_tree.rs
miscdevice.rs Char/Misc/IIO/etc driver update for 7.3-rc1 2026-08-25 09:38:50 -07:00
mm.rs
module_param.rs rust: module_param: support bool parameters 2026-08-06 13:29:03 +02:00
module.rs rust: module: add THIS_MODULE const to ModuleMetadata trait 2026-08-12 09:36:26 +02:00
num.rs rust: add functions and traits for lossless integer conversions 2026-08-13 13:41:28 +02:00
of.rs rust: driver: store pointers in DeviceId 2026-07-30 22:50:15 +02:00
opp.rs opp: rust: mark OPP methods as inline 2026-05-25 09:40:52 +05:30
page.rs mm.git review status for mm-hotfixes-stable..mm-stable 2026-06-19 10:14:34 -07:00
pci.rs drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
pid_namespace.rs
platform.rs Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
prelude.rs rust: prelude: add zerocopy{,_derive}::IntoBytes 2026-06-17 00:32:42 +02:00
print.rs rust: print: fix broken _printk Rustdoc link 2026-08-03 08:03:24 +02:00
processor.rs
ptr.rs rust: io: add dynamically-sized Region type 2026-07-11 17:42:56 +02:00
pwm.rs pwm: Changes for v7.3-rc1 2026-08-19 09:03:59 -07: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: revocable: Use LKMM atomics instead of Rust atomics 2026-08-04 05:52:54 -07:00
safety.rs rust: safety: introduce unsafe_precondition_assert! macro 2026-02-02 08:10:48 +01:00
scatterlist.rs
security.rs
seq_file.rs rust: seq_file: replace kernel::c_str! with C-Strings 2026-01-29 15:32:40 +01:00
serdev.rs Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
sizes.rs rust: sizes: add SizeConstants trait for device address space constants 2026-04-07 12:57:50 +02:00
soc.rs
std_vendor.rs
str.rs rust: str: clean unused import for Rust >= 1.98 2026-06-10 09:07:13 +02:00
sync.rs RCU updates: 2026-08-23 18:00:22 -07:00
task.rs Char/Misc/IIO/etc driver update for 7.3-rc1 2026-08-25 09:38:50 -07:00
time.rs rust: time: add Delta::as_millis_ceil() 2026-08-11 11:34:06 +02:00
tracepoint.rs
transmute.rs rust: transmute: simplify code with Rust 1.80.0 split_at_*checked() 2026-04-07 10:00:24 +02:00
types.rs Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
uaccess.rs Char/Misc/IIO/and others driver updates for 7.1-rc1 2026-04-24 13:23:50 -07:00
usb.rs USB / Thunderbolt changes for 7.3-rc1 2026-08-25 10:44:46 -07:00
workqueue.rs rust: workqueue: use new sync::aref path for imports 2026-03-26 15:45:34 +00:00
xarray.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00