diff options
author | Ingo Molnar <mingo@kernel.org> | 2024-10-17 09:58:07 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2024-10-17 09:58:07 +0200 |
commit | be602cde657ee43d23adbf309be6d700d0106dc9 (patch) | |
tree | d27775738d0deefe7c3071be7d667912dc3ee932 /rust/kernel/device.rs | |
parent | cd9626e9ebc77edec33023fe95dab4b04ffc819d (diff) | |
parent | c964ced7726294d40913f2127c3f185a92cb4a41 (diff) | |
download | linux-be602cde657ee43d23adbf309be6d700d0106dc9.tar.gz linux-be602cde657ee43d23adbf309be6d700d0106dc9.tar.bz2 linux-be602cde657ee43d23adbf309be6d700d0106dc9.zip |
Merge branch 'linus' into sched/urgent, to resolve conflict
Conflicts:
kernel/sched/ext.c
There's a context conflict between this upstream commit:
3fdb9ebcec10 sched_ext: Start schedulers with consistent p->scx.slice values
... and this fix in sched/urgent:
98442f0ccd82 sched: Fix delayed_dequeue vs switched_from_fair()
Resolve it.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'rust/kernel/device.rs')
-rw-r--r-- | rust/kernel/device.rs | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs index 851018eef885..c8199ee079ef 100644 --- a/rust/kernel/device.rs +++ b/rust/kernel/device.rs @@ -51,18 +51,9 @@ impl Device { /// /// It must also be ensured that `bindings::device::release` can be called from any thread. /// While not officially documented, this should be the case for any `struct device`. - pub unsafe fn from_raw(ptr: *mut bindings::device) -> ARef<Self> { - // SAFETY: By the safety requirements, ptr is valid. - // Initially increase the reference count by one to compensate for the final decrement once - // this newly created `ARef<Device>` instance is dropped. - unsafe { bindings::get_device(ptr) }; - - // CAST: `Self` is a `repr(transparent)` wrapper around `bindings::device`. - let ptr = ptr.cast::<Self>(); - - // SAFETY: `ptr` is valid by the safety requirements of this function. By the above call to - // `bindings::get_device` we also own a reference to the underlying `struct device`. - unsafe { ARef::from_raw(ptr::NonNull::new_unchecked(ptr)) } + pub unsafe fn get_device(ptr: *mut bindings::device) -> ARef<Self> { + // SAFETY: By the safety requirements ptr is valid + unsafe { Self::as_ref(ptr) }.into() } /// Obtain the raw `struct device *`. |