mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
hypervisor: replace as <pointer> casts with safer alternatives
`as` casts can change mutability, which quickly leads to undefined behavior. Signed-off-by: Julian Schindel <mail@arctic-alpaca.de>
This commit is contained in:
committed by
Rob Bradford
parent
2a6b746f5e
commit
9b0d4b20ea
@@ -82,7 +82,7 @@ fn dist_attr_set(gic: &DeviceFd, offset: u32, val: u32) -> Result<()> {
|
||||
let gic_dist_attr = kvm_device_attr {
|
||||
group: KVM_DEV_ARM_VGIC_GRP_DIST_REGS,
|
||||
attr: offset as u64,
|
||||
addr: &val as *const u32 as u64,
|
||||
addr: &raw const val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
@@ -99,7 +99,7 @@ fn dist_attr_get(gic: &DeviceFd, offset: u32) -> Result<u32> {
|
||||
let mut gic_dist_attr = kvm_device_attr {
|
||||
group: KVM_DEV_ARM_VGIC_GRP_DIST_REGS,
|
||||
attr: offset as u64,
|
||||
addr: &mut val as *mut u32 as u64,
|
||||
addr: &raw mut val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
@@ -127,7 +127,7 @@ fn get_interrupts_num(gic: &DeviceFd) -> Result<u32> {
|
||||
let mut nr_irqs_attr = kvm_device_attr {
|
||||
group: KVM_DEV_ARM_VGIC_GRP_NR_IRQS,
|
||||
attr: 0,
|
||||
addr: &mut num_irq as *mut u32 as u64,
|
||||
addr: &raw mut num_irq as u64,
|
||||
flags: 0,
|
||||
};
|
||||
// SAFETY: nr_irqs_attr.addr is safe to write to.
|
||||
|
||||
@@ -85,7 +85,7 @@ fn icc_attr_set(gic: &DeviceFd, offset: u64, typer: u64, val: u32) -> Result<()>
|
||||
let gic_icc_attr = kvm_device_attr {
|
||||
group: KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS,
|
||||
attr: ((typer & KVM_DEV_ARM_VGIC_V3_MPIDR_MASK) | offset), // this needs the mpidr
|
||||
addr: &val as *const u32 as u64,
|
||||
addr: &raw const val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
@@ -102,7 +102,7 @@ fn icc_attr_get(gic: &DeviceFd, offset: u64, typer: u64) -> Result<u32> {
|
||||
let mut gic_icc_attr = kvm_device_attr {
|
||||
group: KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS,
|
||||
attr: ((typer & KVM_DEV_ARM_VGIC_V3_MPIDR_MASK) | offset), // this needs the mpidr
|
||||
addr: &mut val as *mut u32 as u64,
|
||||
addr: &raw mut val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ fn gicv3_its_attr_set(its_device: &DeviceFd, group: u32, attr: u32, val: u64) ->
|
||||
let gicv3_its_attr = kvm_bindings::kvm_device_attr {
|
||||
group,
|
||||
attr: attr as u64,
|
||||
addr: &val as *const u64 as u64,
|
||||
addr: &raw const val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
@@ -45,7 +45,7 @@ fn gicv3_its_attr_get(its_device: &DeviceFd, group: u32, attr: u32) -> Result<u6
|
||||
let mut gicv3_its_attr = kvm_bindings::kvm_device_attr {
|
||||
group,
|
||||
attr: attr as u64,
|
||||
addr: &mut val as *mut u64 as u64,
|
||||
addr: &raw mut val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
@@ -159,7 +159,7 @@ impl KvmGicV3Its {
|
||||
&self.device,
|
||||
kvm_bindings::KVM_DEV_ARM_VGIC_GRP_ADDR,
|
||||
u64::from(kvm_bindings::KVM_VGIC_V3_ADDR_TYPE_DIST),
|
||||
&self.dist_addr as *const u64 as u64,
|
||||
&raw const self.dist_addr as u64,
|
||||
0,
|
||||
)?;
|
||||
|
||||
@@ -168,7 +168,7 @@ impl KvmGicV3Its {
|
||||
&self.device,
|
||||
kvm_bindings::KVM_DEV_ARM_VGIC_GRP_ADDR,
|
||||
u64::from(kvm_bindings::KVM_VGIC_V3_ADDR_TYPE_REDIST),
|
||||
&self.redists_addr as *const u64 as u64,
|
||||
&raw const self.redists_addr as u64,
|
||||
0,
|
||||
)?;
|
||||
|
||||
@@ -190,7 +190,7 @@ impl KvmGicV3Its {
|
||||
&its_fd,
|
||||
kvm_bindings::KVM_DEV_ARM_VGIC_GRP_ADDR,
|
||||
u64::from(kvm_bindings::KVM_VGIC_ITS_ADDR_TYPE),
|
||||
&self.msi_addr as *const u64 as u64,
|
||||
&raw const self.msi_addr as u64,
|
||||
0,
|
||||
)?;
|
||||
|
||||
@@ -207,7 +207,7 @@ impl KvmGicV3Its {
|
||||
/* We need to tell the kernel how many irqs to support with this vgic.
|
||||
* See the `layout` module for details.
|
||||
*/
|
||||
let nr_irqs_ptr = &nr_irqs as *const u32;
|
||||
let nr_irqs_ptr = &raw const nr_irqs;
|
||||
Self::set_device_attribute(
|
||||
&self.device,
|
||||
kvm_bindings::KVM_DEV_ARM_VGIC_GRP_NR_IRQS,
|
||||
|
||||
@@ -100,7 +100,7 @@ fn redist_attr_set(gic: &DeviceFd, offset: u32, typer: u64, val: u32) -> Result<
|
||||
let gic_redist_attr = kvm_device_attr {
|
||||
group: KVM_DEV_ARM_VGIC_GRP_REDIST_REGS,
|
||||
attr: (typer & KVM_DEV_ARM_VGIC_V3_MPIDR_MASK) | (offset as u64), // this needs the mpidr
|
||||
addr: &val as *const u32 as u64,
|
||||
addr: &raw const val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
@@ -117,7 +117,7 @@ fn redist_attr_get(gic: &DeviceFd, offset: u32, typer: u64) -> Result<u32> {
|
||||
let mut gic_redist_attr = kvm_device_attr {
|
||||
group: KVM_DEV_ARM_VGIC_GRP_REDIST_REGS,
|
||||
attr: (typer & KVM_DEV_ARM_VGIC_V3_MPIDR_MASK) | (offset as u64), // this needs the mpidr
|
||||
addr: &mut val as *mut u32 as u64,
|
||||
addr: &raw mut val as u64,
|
||||
flags: 0,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user