local/recipes: repair SAFETY-comment corruption from 222d5186eb (mid-token injection)
Commit222d5186eb('add minimal # Safety comments to 70 files') injected '// SAFETY: caller must verify the safety contract for this operation' at wrong byte offsets — INSIDE tokens — splitting identifiers/keywords across a spurious newline (e.g. unsafe->'unsaf'+comment, PTES_PER_PAGE->'PTES_P'+comment+'ER_PAGE'). 1545 such mid-token injections across 19 source files made those recipes fail to even parse. Surfaced by build-redbear.sh --check-sweep. Fix: rejoin each split token by removing the injected comment+newline only where a non-whitespace code char immediately precedes it (correctly-placed standalone SAFETY comments are preserved). Validated: iommu/ehcid/ohcid now compile clean. A blanket revert of222d5186ebwas not viable (later rounds 15-17 + fixes touch these files and would conflict/regress). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -389,8 +389,7 @@ impl EhciController {
|
||||
}
|
||||
|
||||
fn arm_periodic_qh(&mut self, device_address: u8, max_packet: u16, endpoint: u8, td_phys: u64) {
|
||||
let fl =// SAFETY: caller must verify the safety contract for this operation
|
||||
self.frame_list.as_mut_ptr() as *mut u32;
|
||||
let fl = self.frame_list.as_mut_ptr() as *mut u32;
|
||||
let qh_val = qh_endpoint_characteristics(device_address, endpoint, max_packet, false);
|
||||
unsafe {
|
||||
let qh_ptr = self.periodic_qh.as_mut_ptr() as *mut QueueHead;
|
||||
@@ -1554,8 +1553,7 @@ fn low32(value: u64) -> u32 {
|
||||
(value & u64::from(u32::MAX)) as u32
|
||||
}
|
||||
|
||||
fn dma_segment(valu// SAFETY: caller must verify the safety contract for this operation
|
||||
e: u64) -> u32 {
|
||||
fn dma_segment(value: u64) -> u32 {
|
||||
(value >> 32) as u32
|
||||
}
|
||||
|
||||
@@ -1580,18 +1578,15 @@ fn decode_port_status(portsc: u32) -> PortStatus {
|
||||
suspended: portsc & PORT_SUSPEND != 0,
|
||||
over_current: portsc & PORT_OVER_CURRENT_ACTIVE != 0,
|
||||
reset: portsc & PORT_RESET != 0,
|
||||
power: portsc & PORT_P// SAFETY: caller must verify the safety contract for this operation
|
||||
OWER != 0,
|
||||
power: portsc & PORT_POWER != 0,
|
||||
low_speed: line_status == PORT_LINE_STATUS_K,
|
||||
high_speed: portsc & PORT_ENABLE != 0,
|
||||
test_m// SAFETY: caller must verify the safety contract for this operation
|
||||
ode: portsc & PORT_TEST_CONTROL != 0,
|
||||
test_mode: portsc & PORT_TEST_CONTROL != 0,
|
||||
indicator: portsc & PORT_INDICATOR != 0,
|
||||
}
|
||||
}
|
||||
|
||||
fn read_td_token(buffer: &DmaBuffer, index: usize) ->// SAFETY: caller must verify the safety contract for this operation
|
||||
u32 {
|
||||
fn read_td_token(buffer: &DmaBuffer, index: usize) -> u32 {
|
||||
let td_ptr = buffer.as_ptr() as *const TransferDescriptor;
|
||||
unsafe { std::ptr::read_volatile(std::ptr::addr_of!((*td_ptr.add(index)).token)) }
|
||||
}
|
||||
|
||||
@@ -297,8 +297,7 @@ impl OhciController {
|
||||
let td = unsafe { &mut *(td_ptr as *mut TransferDescriptor) };
|
||||
td.hw_info = build_data_td_info(td_dir);
|
||||
td.hw_cbp = buf_phys as u32;
|
||||
td.hw_be = if data_len > 0 { (buf_// SAFETY: caller must verify the safety contract for this operation
|
||||
phys + data_len - 1) as u32 } else { 0 };
|
||||
td.hw_be = if data_len > 0 { (buf_phys + data_len - 1) as u32 } else { 0 };
|
||||
td.hw_next_td = dummy_phys as u32;
|
||||
|
||||
if !is_in && data_len > 0 {
|
||||
|
||||
@@ -146,8 +146,7 @@ mod tests {
|
||||
eth[13] = 0x00;
|
||||
// Minimal IPv4 header
|
||||
eth[14] = 0x45;
|
||||
eth[15] = 0x00;// SAFETY: caller must verify the safety contract for this operation
|
||||
|
||||
eth[15] = 0x00;
|
||||
eth
|
||||
}
|
||||
|
||||
|
||||
@@ -250,8 +250,7 @@ mod inner {
|
||||
}
|
||||
|
||||
// Extract data from the packet's inline area
|
||||
let m// SAFETY: caller must verify the safety contract for this operation
|
||||
ut buf = vec![0u8; cmp::min(len, std::mem::size_of::<usize>() * 4)];
|
||||
let mut buf = vec![0u8; cmp::min(len, std::mem::size_of::<usize>() * 4)];
|
||||
unsafe {
|
||||
let src = &pkt.c as *const usize as *const u8;
|
||||
std::ptr::copy_nonoverlapping(src, buf.as_mut_ptr(), buf.len());
|
||||
@@ -358,8 +357,7 @@ pub fn run_event_loop(
|
||||
b.take_tx()
|
||||
};
|
||||
if let Some(eth) = tx_frame {
|
||||
l// SAFETY: caller must verify the safety contract for this operation
|
||||
et (bssid_copy, mac_copy) = {
|
||||
let (bssid_copy, mac_copy) = {
|
||||
let b = bridge.lock().unwrap();
|
||||
(b.bssid, b.mac)
|
||||
};
|
||||
|
||||
@@ -1794,8 +1794,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn da// SAFETY: caller must verify the safety contract for this operation
|
||||
emon_target_from_env_returns_none_for_invalid_device_path() {
|
||||
fn daemon_target_from_env_returns_none_for_invalid_device_path() {
|
||||
let _g = DAEMON_ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner());
|
||||
unsafe {
|
||||
env::set_var("PCID_DEVICE_PATH", "garbage");
|
||||
|
||||
@@ -89,12 +89,10 @@ fn main() {
|
||||
// Test 6: linux-kpi sync primitives
|
||||
// SAFETY: caller must verify the safety contract for this operation
|
||||
{
|
||||
let mut mutex_mem: [u// SAFETY: caller must verify the safety contract for this operation
|
||||
8; 64] = [0; 64];
|
||||
let mut mutex_mem: [u8; 64] = [0; 64];
|
||||
let mutex =
|
||||
// SAFETY: caller must verify the safety contract for this operation
|
||||
unsafe { &mut *(&mut mutex_mem as *mut [u8; 6// SAFETY: caller must verify the safety contract for this operation
|
||||
4] as *mut linux_kpi::sync::LinuxMutex) };
|
||||
unsafe { &mut *(&mut mutex_mem as *mut [u8; 64] as *mut linux_kpi::sync::LinuxMutex) };
|
||||
unsafe { // SAFETY: caller must verify the safety contract for this operation
|
||||
linux_kpi::sync::mutex_init(mutex) };
|
||||
unsafe { linux_kpi::sync::mutex_lock(mutex) };
|
||||
@@ -111,8 +109,7 @@ linux_kpi::sync::mutex_init(mutex) };
|
||||
// Test 7: linux-kpi firmware struct
|
||||
{
|
||||
let fw = linux_kpi::firmware::Firmware::default();
|
||||
assert// SAFETY: caller must verify the safety contract for this operation
|
||||
!(fw.data.is_null());
|
||||
assert!(fw.data.is_null());
|
||||
assert_eq!(fw.size, 0);
|
||||
eprintln!("[PASS] linux-kpi::firmware Firmware struct");
|
||||
passed += 1;
|
||||
@@ -122,24 +119,20 @@ linux_kpi::sync::mutex_init(mutex) };
|
||||
{
|
||||
let mut dma_handle: u64 = 0;
|
||||
let ptr = unsafe {
|
||||
l// SAFETY: caller must verify the safety contract for this operation
|
||||
inux_kpi::dma::dma_alloc_coherent(std::ptr::null_mut(), 4096, &mut dma_handle, 0)
|
||||
linux_kpi::dma::dma_alloc_coherent(std::ptr::null_mut(), 4096, &mut dma_handle, 0)
|
||||
};
|
||||
if !ptr.is_null() {
|
||||
unsafe {
|
||||
linux_kpi::dma::dma_free_coherent(std::ptr::null_mut(), 4096, ptr, dma_handle)
|
||||
};
|
||||
eprintln!("[PASS] linux-kpi::dma dma_alloc// SAFETY: caller must verify the safety contract for this operation
|
||||
/free_coherent");
|
||||
eprintln!("[PASS] linux-kpi::dma dma_alloc/free_coherent");
|
||||
passed += 1;
|
||||
} else {
|
||||
eprintln!("[SKIP] linux-kpi::dma (requires /scheme/memory/t// SAFETY: caller must verify the safety contract for this operation
|
||||
ranslation)");
|
||||
eprintln!("[SKIP] linux-kpi::dma (requires /scheme/memory/translation)");
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
unsafe { linux_kpi::dma::dma_set_mask(std::ptr::null_mut(), 0xFFF// SAFETY: caller must verify the safety contract for this operation
|
||||
F_FFFF_FFFF_FFFF) },
|
||||
unsafe { linux_kpi::dma::dma_set_mask(std::ptr::null_mut(), 0xFFFF_FFFF_FFFF_FFFF) },
|
||||
0
|
||||
);
|
||||
eprintln!("[PASS] linux-kpi::dma dma_set_mask");
|
||||
|
||||
@@ -74,8 +74,7 @@ impl UhciController {
|
||||
}
|
||||
fn write_reg(&self, offset: u16, value: u16) {
|
||||
// SAFETY: caller must verify the safety contract for this operation
|
||||
unsafe { outw(self.io_base + offs// SAFETY: caller must verify the safety contract for this operation
|
||||
et, value) };
|
||||
unsafe { outw(self.io_base + offset, value) };
|
||||
}
|
||||
fn write32(&self, offset: u16, value: u32) {
|
||||
unsafe { outd(self.io_base + offset, value) };
|
||||
@@ -154,8 +153,7 @@ et, value) };
|
||||
Some((buf, _)) if !buf.is_empty() => {
|
||||
let (data_dma, phys) = alloc_dma(buf.len(), 16);
|
||||
if data_buf.as_ref().map(|(_, is_in)| *is_in).unwrap_or(false) {
|
||||
// IN// SAFETY: caller must verify the safety contract for this operation
|
||||
transfer: buffer filled by HC, we copy out after
|
||||
// IN transfer: buffer filled by HC, we copy out after
|
||||
} else {
|
||||
// OUT transfer: copy data into DMA buffer
|
||||
unsafe {
|
||||
@@ -166,8 +164,7 @@ et, value) };
|
||||
);
|
||||
}
|
||||
}
|
||||
// Lea// SAFETY: caller must verify the safety contract for this operation
|
||||
k DMA for now (cleaned up on process exit)
|
||||
// Leak DMA for now (cleaned up on process exit)
|
||||
core::mem::forget(unsafe { Box::from_raw(data_dma) });
|
||||
phys
|
||||
}
|
||||
@@ -206,8 +203,7 @@ k DMA for now (cleaned up on process exit)
|
||||
break;
|
||||
}
|
||||
if start.elapsed() > Duration::from_secs(2) {
|
||||
return Err(// SAFETY: caller must verify the safety contract for this operation
|
||||
"setup TD timeout");
|
||||
return Err("setup TD timeout");
|
||||
}
|
||||
thread::sleep(Duration::from_micros(100));
|
||||
}
|
||||
@@ -356,8 +352,7 @@ impl UsbHostController for UhciController {
|
||||
) -> Result<usize, UsbError> {
|
||||
let device = self.devices
|
||||
.iter()
|
||||
.find_map// SAFETY: caller must verify the safety contract for this operation
|
||||
(|d| d.as_ref().filter(|d| d.address == device_address))
|
||||
.find_map(|d| d.as_ref().filter(|d| d.address == device_address))
|
||||
.ok_or(UsbError::IoError)?;
|
||||
|
||||
let low_speed = device.low_speed;
|
||||
@@ -504,11 +499,9 @@ fn main() {
|
||||
let config_path = format!("{}/config", device_path);
|
||||
let bar4 = match fs::read(&config_path) {
|
||||
Ok(data) if data.len() >= 0x24 => {
|
||||
u32::from_le_bytes([data[0x20], data[0x21], data// SAFETY: caller must verify the safety contract for this operation
|
||||
[0x22], data[0x23]])
|
||||
u32::from_le_bytes([data[0x20], data[0x21], data[0x22], data[0x23]])
|
||||
}
|
||||
_ => { error!("cannot re// SAFETY: caller must verify the safety contract for this operation
|
||||
ad PCI config"); process::exit(1); }
|
||||
_ => { error!("cannot read PCI config"); process::exit(1); }
|
||||
};
|
||||
|
||||
let io_base = (bar4 & 0xFFE0) as u16;
|
||||
|
||||
@@ -176,19 +176,16 @@ impl InputEventQueue {
|
||||
fn write_avail_idx(&mut self, value: u16) {
|
||||
// SAFETY: caller must verify the safety contract for this operation
|
||||
let ptr = self.avail.as_mut_ptr().wrapping_add(2) as *mut u16;
|
||||
unsafe { ptr.wr// SAFETY: caller must verify the safety contract for this operation
|
||||
ite_unaligned(value) };
|
||||
unsafe { ptr.write_unaligned(value) };
|
||||
}
|
||||
|
||||
fn read_avail_idx(&self) -> u16 {
|
||||
let pt// SAFETY: caller must verify the safety contract for this operation
|
||||
r = self.avail.as_ptr().wrapping_add(2) as *const u16;
|
||||
let ptr = self.avail.as_ptr().wrapping_add(2) as *const u16;
|
||||
unsafe { ptr.read_unaligned() }
|
||||
}
|
||||
|
||||
fn read_used_idx(&self) -> u16 {
|
||||
let ptr = self.used.as_ptr().wrappi// SAFETY: caller must verify the safety contract for this operation
|
||||
ng_add(2) as *const u16;
|
||||
let ptr = self.used.as_ptr().wrapping_add(2) as *const u16;
|
||||
unsafe { ptr.read_unaligned() }
|
||||
}
|
||||
|
||||
@@ -216,8 +213,7 @@ ng_add(2) as *const u16;
|
||||
let mut drained_count: usize = 0;
|
||||
|
||||
while self.last_used_idx != used_idx {
|
||||
let slot// SAFETY: caller must verify the safety contract for this operation
|
||||
= usize::from(self.last_used_idx % self.size);
|
||||
let slot = usize::from(self.last_used_idx % self.size);
|
||||
let elem = self.read_used_elem(slot);
|
||||
let id = elem.id as u16;
|
||||
let buf_offset = usize::from(id) * VIRTIO_INPUT_EVENT_SIZE;
|
||||
|
||||
@@ -157,20 +157,17 @@ fn amdgpu_dc_init_with_fb(
|
||||
fb_phys: u64,
|
||||
fb_size: usize,
|
||||
) -> i32 {
|
||||
unsaf// SAFETY: caller must verify the safety contract for this operation
|
||||
e { ffi_amdgpu_redox_init(mmio_base, mmio_size, fb_phys, fb_size) }
|
||||
unsafe { ffi_amdgpu_redox_init(mmio_base, mmio_size, fb_phys, fb_size) }
|
||||
}
|
||||
|
||||
#[cfg(not(no_amdg// SAFETY: caller must verify the safety contract for this operation
|
||||
pu_c))]
|
||||
#[cfg(not(no_amdgpu_c))]
|
||||
fn amdgpu_dc_detect_connectors() -> i32 {
|
||||
unsafe { ffi_amdgpu_dc_detect_connectors() }
|
||||
}
|
||||
|
||||
// SAFETY: caller must verify the safety contract for this operation
|
||||
#[cfg(not(no_amdgpu_c))]
|
||||
fn amdgpu_dc_get_connector_inf// SAFETY: caller must verify the safety contract for this operation
|
||||
o(idx: i32, info: *mut ConnectorInfoFFI) -> i32 {
|
||||
fn amdgpu_dc_get_connector_info(idx: i32, info: *mut ConnectorInfoFFI) -> i32 {
|
||||
unsafe { ffi_amdgpu_dc_get_connector_info(idx, info) }
|
||||
}
|
||||
|
||||
@@ -538,8 +535,7 @@ impl DisplayCore {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn read_reg(&self, reg: usize) -> Result<// SAFETY: caller must verify the safety contract for this operation
|
||||
u32> {
|
||||
fn read_reg(&self, reg: usize) -> Result<u32> {
|
||||
self.ensure_mmio_reg(reg)?;
|
||||
let offset = reg * 4;
|
||||
let ptr = (self.mmio_base + offset) as *const u32;
|
||||
|
||||
@@ -418,15 +418,13 @@ fence_buffer.as_mut_ptr().add(FENCE_OFFSET_BYTES) as *mut u64 };
|
||||
let fence_buffer = self
|
||||
.fence_buffer
|
||||
.as_mut()
|
||||
.ok_or_else(|| DriverError::Initialization("// SAFETY: caller must verify the safety contract for this operation
|
||||
fence buffer missing".to_string()))?;
|
||||
.ok_or_else(|| DriverError::Initialization("fence buffer missing".to_string()))?;
|
||||
let ptr = unsafe { fence_buffer.as_mut_ptr().add(WPTR_POLL_OFFSET_BYTES) as *mut u64 };
|
||||
unsafe { core::ptr::write_volatile(ptr, wptr_dwords << 2) };
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn r// SAFETY: caller must verify the safety contract for this operation
|
||||
ing_size_order(&self) -> u32 {
|
||||
fn ring_size_order(&self) -> u32 {
|
||||
self.ring_size_dwords.ilog2()
|
||||
}
|
||||
|
||||
|
||||
@@ -752,8 +752,7 @@ impl VirtioTransport {
|
||||
core::ptr::write_bytes(resp_ptr, 0, resp_size);
|
||||
}
|
||||
|
||||
// -// SAFETY: caller must verify the safety contract for this operation
|
||||
--- 2. Write descriptor 0: cmd (device-read, chained to desc 1) ----
|
||||
// ---- 2. Write descriptor 0: cmd (device-read, chained to desc 1) ----
|
||||
unsafe {
|
||||
control_vq.write_descriptor(
|
||||
desc0_idx,
|
||||
@@ -800,10 +799,8 @@ as u16, // next → descriptor 1
|
||||
// VirtIO PCI: write queue index as u16 at offset notify_off * 4
|
||||
// within the notify BAR (VirtIO spec §4.1.4.4).
|
||||
let notify_offset = (control_vq.notify_off as usize).wrapping_mul(4);
|
||||
no// SAFETY: caller must verify the safety contract for this operation
|
||||
tify_mmio.write16(
|
||||
notify_offset,// SAFETY: caller must verify the safety contract for this operation
|
||||
|
||||
notify_mmio.write16(
|
||||
notify_offset,
|
||||
control_vq.ring_idx as u16,
|
||||
);
|
||||
|
||||
@@ -1066,8 +1063,7 @@ tify_mmio.write16(
|
||||
|
||||
let cmd = VirtioGpuResourceAttachBacking {
|
||||
hdr: VirtioGpuCtrlHdr {
|
||||
cmd_type: VIRTIO_// SAFETY: caller must verify the safety contract for this operation
|
||||
GPU_CMD_RESOURCE_ATTACH_BACKING,
|
||||
cmd_type: VIRTIO_GPU_CMD_RESOURCE_ATTACH_BACKING,
|
||||
flags: 0,
|
||||
fence_id: 0,
|
||||
ctx_id: 0,
|
||||
@@ -1085,8 +1081,7 @@ GPU_CMD_RESOURCE_ATTACH_BACKING,
|
||||
unsafe {
|
||||
core::ptr::copy_nonoverlapping(
|
||||
&cmd as *const VirtioGpuResourceAttachBacking as *const u8,
|
||||
cmd_buf.// SAFETY: caller must verify the safety contract for this operation
|
||||
as_mut_ptr(),
|
||||
cmd_buf.as_mut_ptr(),
|
||||
hdr_size,
|
||||
);
|
||||
if !mem_entries.is_empty() {
|
||||
@@ -1295,8 +1290,7 @@ as_mut_ptr(),
|
||||
/// Reference: Linux virtgpu_vq.c:1080 `virtio_gpu_cmd_context_create`
|
||||
pub fn ctx_create(&mut self, capset_id: u32) -> Result<u32> {
|
||||
let ctx_id = self.alloc_ctx_id();
|
||||
let vq = s// SAFETY: caller must verify the safety contract for this operation
|
||||
elf
|
||||
let vq = self
|
||||
.control_vq
|
||||
.as_mut()
|
||||
.ok_or_else(|| DriverError::Initialization("control vq not set up".into()))?;
|
||||
@@ -1315,8 +1309,7 @@ elf
|
||||
debug_name_len: debug_name.len() as u32,
|
||||
};
|
||||
|
||||
let hdr_size = core::mem::size_of::<VirtioGpuCtxCr// SAFETY: caller must verify the safety contract for this operation
|
||||
eate>();
|
||||
let hdr_size = core::mem::size_of::<VirtioGpuCtxCreate>();
|
||||
let mut cmd_buf = vec![0u8; hdr_size + debug_name.len()];
|
||||
unsafe {
|
||||
core::ptr::copy_nonoverlapping(
|
||||
@@ -1362,8 +1355,7 @@ eate>();
|
||||
cmd_buf: &[u8],
|
||||
bo_handles: &[u32],
|
||||
) -> Result<Vec<u8>> {
|
||||
let vq = self// SAFETY: caller must verify the safety contract for this operation
|
||||
|
||||
let vq = self
|
||||
.control_vq
|
||||
.as_mut()
|
||||
.ok_or_else(|| DriverError::Initialization("control vq not set up".into()))?;
|
||||
@@ -1427,8 +1419,7 @@ eate>();
|
||||
.as_mut()
|
||||
.ok_or_else(|| DriverError::Initialization("control vq not set up".into()))?;
|
||||
|
||||
let cmd = VirtioGpuTransferToHo// SAFETY: caller must verify the safety contract for this operation
|
||||
st3D {
|
||||
let cmd = VirtioGpuTransferToHost3D {
|
||||
hdr: VirtioGpuCtrlHdr {
|
||||
cmd_type: VIRTIO_GPU_CMD_TRANSFER_TO_HOST_3D,
|
||||
flags: 0,
|
||||
@@ -1487,8 +1478,7 @@ st3D {
|
||||
let vq = self
|
||||
.control_vq
|
||||
.as_mut()
|
||||
.ok_or_else(|| DriverError::Initialization("control vq no// SAFETY: caller must verify the safety contract for this operation
|
||||
t set up".into()))?;
|
||||
.ok_or_else(|| DriverError::Initialization("control vq not set up".into()))?;
|
||||
|
||||
let cmd = VirtioGpuTransferFromHost3D {
|
||||
hdr: VirtioGpuCtrlHdr {
|
||||
|
||||
@@ -265,8 +265,7 @@ mod tests {
|
||||
let firmware_path = root.join(firmware_name);
|
||||
let parent = match firmware_path.parent() {
|
||||
Some(parent) => parent.to_path_buf(),
|
||||
None =>// SAFETY: caller must verify the safety contract for this operation
|
||||
panic!("firmware test path unexpectedly had no parent"),
|
||||
None => panic!("firmware test path unexpectedly had no parent"),
|
||||
};
|
||||
|
||||
unsafe {
|
||||
|
||||
@@ -308,18 +308,15 @@ impl EventLog {
|
||||
(self.buffer.physical_address() + offset) as u64
|
||||
}
|
||||
|
||||
pub fn completion_store_cpu_ptr(&self) -> *mut u3// SAFETY: caller must verify the safety contract for this operation
|
||||
2 {
|
||||
pub fn completion_store_cpu_ptr(&self) -> *mut u32 {
|
||||
let offset = (self.capacity - 1) * EVENT_LOG_ENTRY_SIZE;
|
||||
unsafe { self.buffer.as_ptr().add(off// SAFETY: caller must verify the safety contract for this operation
|
||||
set) as *mut u32 }
|
||||
unsafe { self.buffer.as_ptr().add(offset) as *mut u32 }
|
||||
}
|
||||
|
||||
pub fn clear_completion_store(&mut self) {
|
||||
let offset = (self.capacity - 1) * EVENT_LOG_ENTRY_SIZE;
|
||||
unsafe {
|
||||
core::ptr// SAFETY: caller must verify the safety contract for this operation
|
||||
::write_bytes(
|
||||
core::ptr::write_bytes(
|
||||
self.buffer.as_mut_ptr().add(offset),
|
||||
// SAFETY: caller must verify the safety contract for this operation
|
||||
0,
|
||||
|
||||
@@ -297,8 +297,7 @@ impl PageTablePage {
|
||||
|
||||
fn entries(&self) -> &[AmdPte] {
|
||||
// SAFETY: caller guarantees ptr is aligned for T and len is exact
|
||||
unsafe { slice::from_raw_parts(self.buffer.as_ptr().cast::<AmdPte>(), PTES_P// SAFETY: caller must verify the safety contract for this operation
|
||||
ER_PAGE) }
|
||||
unsafe { slice::from_raw_parts(self.buffer.as_ptr().cast::<AmdPte>(), PTES_PER_PAGE) }
|
||||
}
|
||||
|
||||
fn entries_mut(&mut self) -> &mut [AmdPte] {
|
||||
|
||||
@@ -550,8 +550,7 @@ mod tests {
|
||||
use super::{
|
||||
DrmModeWire, DrmResourcesWire, ModeSummary, bytes_of, decode_wire, disable_crtc_request,
|
||||
find_mode, has_connector_section, has_mode_lines, parse_modeset_spec,
|
||||
proof_teardown_requests, setcrtc// SAFETY: caller must verify the safety contract for this operation
|
||||
_request,
|
||||
proof_teardown_requests, setcrtc_request,
|
||||
};
|
||||
|
||||
fn owned_bytes_of<T>(value: &T) -> Vec<u8> {
|
||||
|
||||
@@ -915,8 +915,7 @@ mod tests {
|
||||
.unwrap();
|
||||
fs::write(
|
||||
wifictl.join("ifaces/wlan0/connect-result"),
|
||||
"connect_result=bounded-ass// SAFETY: caller must verify the safety contract for this operation
|
||||
ociated ssid=demo security=wpa2-psk\n",
|
||||
"connect_result=bounded-associated ssid=demo security=wpa2-psk\n",
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -1025,8 +1024,7 @@ ociated ssid=demo security=wpa2-psk\n",
|
||||
fs::create_dir_all(wifictl.join("ifaces/wlan0")).unwrap();
|
||||
fs::write(
|
||||
profile_dir.join("wifi-dhcp"),
|
||||
"Description='Wi-Fi'\nInterface=wlan0\nConnection=wifi\nSSID='test-ssid'\nSecurity=open\nIP=dhcp\// SAFETY: caller must verify the safety contract for this operation
|
||||
n",
|
||||
"Description='Wi-Fi'\nInterface=wlan0\nConnection=wifi\nSSID='test-ssid'\nSecurity=open\nIP=dhcp\n",
|
||||
)
|
||||
.unwrap();
|
||||
fs::write(wifictl.join("ifaces/wlan0/status"), "device-detected\n").unwrap();
|
||||
@@ -1048,8 +1046,7 @@ n",
|
||||
fn reports_wifi_last_error() {
|
||||
let _guard = env_lock()
|
||||
.lock()
|
||||
.unwrap_or_else(|poisoned| poiso// SAFETY: caller must verify the safety contract for this operation
|
||||
ned.into_inner());
|
||||
.unwrap_or_else(|poisoned| poisoned.into_inner());
|
||||
let wifictl = temp_root("rbos-wifictl-error");
|
||||
fs::create_dir_all(wifictl.join("ifaces/wlan0")).unwrap();
|
||||
fs::write(
|
||||
|
||||
@@ -2141,8 +2141,7 @@ pub fn set_affinity(pid: u32, cpus: &[u32]) -> Result<(), String> {
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
let mut set: libc::cpu_set_t = unsafe { std::mem::zeroed() };
|
||||
for &cpu in// SAFETY: caller must verify the safety contract for this operation
|
||||
cpus {
|
||||
for &cpu in cpus {
|
||||
if (cpu as usize) < libc::CPU_SETSIZE as usize {
|
||||
unsafe {
|
||||
libc::CPU_SET(cpu as usize, &mut set);
|
||||
|
||||
@@ -602,8 +602,7 @@ mod tests {
|
||||
args: Vec::new(),
|
||||
},
|
||||
};
|
||||
let envs = build_environment(&account, &args, Path::new("/tmp/run/greeter"))// SAFETY: caller must verify the safety contract for this operation
|
||||
;
|
||||
let envs = build_environment(&account, &args, Path::new("/tmp/run/greeter"));
|
||||
assert_eq!(envs["KWIN_DRM_DEVICES"], "/scheme/drm/card0");
|
||||
unsafe { std::env::remove_var("KWIN_DRM_DEVICES"); }
|
||||
}
|
||||
|
||||
@@ -1335,8 +1335,7 @@ esac
|
||||
}
|
||||
|
||||
let mut backend = IntelBackend::from_env();
|
||||
let transport_status = backend.transport_probe("wlan0").unwrap()// SAFETY: caller must verify the safety contract for this operation
|
||||
;
|
||||
let transport_status = backend.transport_probe("wlan0").unwrap();
|
||||
assert_eq!(transport_status, "transport=mock-probe-only");
|
||||
|
||||
unsafe {
|
||||
@@ -1423,8 +1422,7 @@ esac
|
||||
|
||||
let state = InterfaceState {
|
||||
ssid: "demo".to_string(),
|
||||
security: "wpa2-psk".to_string// SAFETY: caller must verify the safety contract for this operation
|
||||
(),
|
||||
security: "wpa2-psk".to_string(),
|
||||
key: "secret".to_string(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user