diff --git a/aya/src/sys/netlink.rs b/aya/src/sys/netlink.rs index 6b8b5e7b..f67f6b92 100644 --- a/aya/src/sys/netlink.rs +++ b/aya/src/sys/netlink.rs @@ -707,9 +707,13 @@ impl From for io::Error { } unsafe fn request_attributes(req: &mut T, msg_len: usize) -> &mut [u8] { - let attrs_addr = align_to(req as *mut _ as usize + msg_len, NLMSG_ALIGNTO as usize); - let attrs_end = req as *mut _ as usize + mem::size_of::(); - slice::from_raw_parts_mut(attrs_addr as *mut u8, attrs_end - attrs_addr) + let req: *mut _ = req; + let req: *mut u8 = req.cast(); + let attrs_addr = req.add(msg_len); + let align_offset = attrs_addr.align_offset(NLMSG_ALIGNTO as usize); + let attrs_addr = attrs_addr.add(align_offset); + let len = mem::size_of::() - msg_len - align_offset; + slice::from_raw_parts_mut(attrs_addr, len) } fn bytes_of(val: &T) -> &[u8] {