linux/rust/kernel
Andreas Hindborg 12717ebeff rust: types: add FOREIGN_ALIGN to ForeignOwnable
The current implementation of `ForeignOwnable` is leaking the type of the
opaque pointer to consumers of the API. This allows consumers of the opaque
pointer to rely on the information that can be extracted from the pointer
type.

To prevent this, change the API to the version suggested by Maira
Canal (link below): Remove `ForeignOwnable::PointedTo` in favor of a
constant, which specifies the alignment of the pointers returned by
`into_foreign`.

With this change, `ArcInner` no longer needs `pub` visibility, so change it
to private.

Suggested-by: Alice Ryhl <aliceryhl@google.com>
Suggested-by: MaĆ­ra Canal <mcanal@igalia.com>
Link: https://lore.kernel.org/r/20240309235927.168915-3-mcanal@igalia.com
Acked-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Benno Lossin <lossin@kernel.org>
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Link: https://lore.kernel.org/r/20250612-pointed-to-v3-1-b009006d86a1@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2025-07-14 23:55:24 +02:00
..
alloc rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
block pin-init changes for v6.17 2025-07-13 23:05:14 +02:00
drm rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
fs rust: enable clippy::ref_as_ptr lint 2025-06-22 23:09:32 +02:00
list rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
mm rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
net rust: enable clippy::cast_lossless lint 2025-06-22 23:09:25 +02:00
sync rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
time rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
.gitignore rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
alloc.rs rust: alloc: add missing Markdown code spans 2025-05-25 22:58:35 +02:00
auxiliary.rs Rust changes for v6.16 2025-06-04 21:18:37 -07:00
block.rs rust: block: introduce kernel::block::mq module 2024-06-14 07:45:04 -06:00
build_assert.rs rust: add build_error! to the prelude 2025-01-10 00:19:09 +01:00
clk.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
configfs.rs pin-init changes for v6.17 2025-07-13 23:05:14 +02:00
cpu.rs rust: cpu: Add CpuId::current() to retrieve current CPU ID 2025-06-12 10:31:28 +05:30
cpufreq.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
cpumask.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
cred.rs cred,rust: mark Credential methods inline 2025-03-04 17:07:49 -05:00
device.rs rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
device_id.rs rust: enable clippy::ref_as_ptr lint 2025-06-22 23:09:32 +02:00
devres.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
dma.rs rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
driver.rs rust: make pin-init its own crate 2025-03-16 21:59:19 +01:00
error.rs rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
faux.rs rust/kernel/faux: mark Registration methods inline 2025-03-11 10:42:23 +01:00
firmware.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
fs.rs rust: file: add Rust abstraction for struct file 2024-09-30 13:02:28 +02:00
generated_arch_static_branch_asm.rs.S rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
init.rs rust: init: remove doctest's Error::from_errno workaround 2025-06-11 21:13:57 +02:00
io.rs rust: io: avoid mentioning private fields in IoMem 2025-06-24 01:02:30 +02:00
ioctl.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
jump_label.rs rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
kunit.rs rust: kunit: use crate-level mapping for c_void 2025-06-24 00:55:22 +02:00
lib.rs Rust changes for v6.16 2025-06-04 21:18:37 -07:00
list.rs rust: list: replace unwrap() with ? in doctest examples 2025-06-24 01:01:12 +02:00
miscdevice.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
mm.rs mm: rust: make CONFIG_MMU ifdefs more narrow 2025-05-31 22:46:12 -07:00
net.rs rust: core abstractions for network PHY drivers 2023-12-15 09:35:50 +00:00
of.rs rust: enable clippy::as_underscore lint 2025-06-22 23:09:17 +02:00
opp.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
page.rs rust: page: optimize rust symbol generation for Page 2025-05-12 00:20:25 +02:00
pci.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
pid_namespace.rs rust: add PidNamespace 2024-10-08 15:44:36 +02:00
platform.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
prelude.rs rust: uaccess: use newtype for user pointers 2025-07-14 23:52:45 +02:00
print.rs rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
rbtree.rs rust: rbtree: simplify finding current in remove_current 2025-07-14 23:53:35 +02:00
revocable.rs rust: revocable: document why &T is not used in RevocableGuard 2025-06-29 18:54:54 +02:00
security.rs lsm,rust: reword "destroy" -> "release" in SecurityCtx 2025-03-04 15:44:46 -05:00
seq_file.rs rust: enable clippy::ptr_as_ptr lint 2025-06-22 23:08:42 +02:00
sizes.rs rust: sizes: add commonly used constants 2024-08-30 10:27:34 +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: enable clippy::ref_as_ptr lint 2025-06-22 23:09:32 +02:00
sync.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
task.rs rust: task: add missing Markdown code spans and intra-doc links 2025-05-25 22:58:35 +02:00
time.rs rust: time: Introduce Instant type 2025-04-29 15:31:07 +02:00
tracepoint.rs rust: add tracepoint support 2024-11-04 16:21:44 -05:00
transmute.rs rust: kernel: move FromBytes and AsBytes traits to a new transmute module 2024-10-10 00:33:42 +02:00
types.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00
uaccess.rs rust: uaccess: use newtype for user pointers 2025-07-14 23:52:45 +02:00
workqueue.rs rust: Use consistent "# Examples" heading style in rustdoc 2025-06-24 01:02:30 +02:00
xarray.rs rust: types: add FOREIGN_ALIGN to ForeignOwnable 2025-07-14 23:55:24 +02:00