Skip to content

Commit 28a9bd2

Browse files
authored
Merge pull request torvalds#683 from wedsonaf/offset
rust: add `IoMem::offset_ok_of_val`
2 parents 3b54404 + 4dde6bd commit 28a9bd2

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

rust/kernel/io_mem.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,16 @@ impl<const SIZE: usize> IoMem<SIZE> {
173173
}
174174
}
175175

176+
fn offset_ok_of_val<T: ?Sized>(offset: usize, value: &T) -> bool {
177+
let value_size = core::mem::size_of_val(value);
178+
let value_alignment = core::mem::align_of_val(value);
179+
if let Some(end) = offset.checked_add(value_size) {
180+
end <= SIZE && offset % value_alignment == 0
181+
} else {
182+
false
183+
}
184+
}
185+
176186
const fn check_offset<T>(offset: usize) {
177187
crate::build_assert!(Self::offset_ok::<T>(offset), "IoMem offset overflow");
178188
}

0 commit comments

Comments
 (0)