diff --git a/src/gallium/frontends/rusticl/core/context.rs b/src/gallium/frontends/rusticl/core/context.rs index 6eef5377213..5643f54e196 100644 --- a/src/gallium/frontends/rusticl/core/context.rs +++ b/src/gallium/frontends/rusticl/core/context.rs @@ -319,7 +319,7 @@ impl Context { unreachable!("SVM supported only on Linux") } - let res = unsafe { + let mut res = unsafe { mmap( vma.get() as usize as *mut c_void, size.get() as usize, @@ -335,6 +335,14 @@ impl Context { return Err(CL_OUT_OF_HOST_MEMORY); } + if res as usize != vma.get() as usize { + unsafe { + let ret = munmap(res, size.get() as usize); + debug_assert_eq!(0, ret); + } + res = ptr::null_mut(); + } + res.cast() } else { unsafe { alloc::alloc(layout) }.cast()