summary refs log tree commit diff
path: root/gpu_buffer
diff options
context:
space:
mode:
authorDavid Reveman <reveman@chromium.org>2018-05-17 17:18:27 -0400
committerchrome-bot <chrome-bot@chromium.org>2018-05-18 20:08:22 -0700
commitfe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20 (patch)
tree076c722422e57e0a704021a11336661716e44888 /gpu_buffer
parentbb6580167937475e2d54e39bbf4babd402202a08 (diff)
downloadcrosvm-fe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20.tar
crosvm-fe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20.tar.gz
crosvm-fe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20.tar.bz2
crosvm-fe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20.tar.lz
crosvm-fe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20.tar.xz
crosvm-fe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20.tar.zst
crosvm-fe0abe4a7882e2db5eae45e9cf2c617ba5cf4c20.zip
virtwl: Fix DMABuf support on when building for 32bit.
name/date/desc_len fields of drm_version struct are of type __kernel_size_t
and not unsigned long long.

BUG=chromium:837209
TEST=crosvm finds DRM device on kevin

Change-Id: If940b31cb730cbaa46ed781021cbe60189da9f65
Reviewed-on: https://chromium-review.googlesource.com/1064913
Commit-Ready: David Reveman <reveman@chromium.org>
Tested-by: David Reveman <reveman@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'gpu_buffer')
-rw-r--r--gpu_buffer/src/rendernode.rs20
1 files changed, 15 insertions, 5 deletions
diff --git a/gpu_buffer/src/rendernode.rs b/gpu_buffer/src/rendernode.rs
index ce89a15..f8b0201 100644
--- a/gpu_buffer/src/rendernode.rs
+++ b/gpu_buffer/src/rendernode.rs
@@ -4,12 +4,22 @@
 
 use std::ffi::CString;
 use std::fs::{File, OpenOptions};
-use std::os::raw::{c_char, c_int, c_uint, c_ulonglong};
+use std::os::raw::{c_char, c_int, c_uint};
+#[cfg(target_pointer_width = "64")]
+use std::os::raw::c_ulong;
 use std::path::Path;
 use std::ptr::null_mut;
 
 use sys_util::ioctl_with_mut_ref;
 
+// Consistent with __kernel_size_t in include/uapi/asm-generic/posix_types.h.
+#[cfg(not(target_pointer_width = "64"))]
+#[allow(non_camel_case_types)]
+type __kernel_size_t = c_uint;
+#[cfg(target_pointer_width = "64")]
+#[allow(non_camel_case_types)]
+type __kernel_size_t = c_ulong;
+
 const DRM_IOCTL_BASE: c_uint = 0x64;
 
 #[repr(C)]
@@ -18,11 +28,11 @@ struct drm_version {
     version_major: c_int,
     version_minor: c_int,
     version_patchlevel: c_int,
-    name_len: c_ulonglong,
+    name_len: __kernel_size_t,
     name: *mut c_char,
-    date_len: c_ulonglong,
+    date_len: __kernel_size_t,
     date: *mut c_char,
-    desc_len: c_ulonglong,
+    desc_len: __kernel_size_t,
     desc: *mut c_char,
 }
 
@@ -52,7 +62,7 @@ fn get_drm_device_name(fd: &File) -> Result<String, ()> {
         version_major: 0,
         version_minor: 0,
         version_patchlevel: 0,
-        name_len: name_bytes.len() as c_ulonglong,
+        name_len: name_bytes.len() as __kernel_size_t,
         name: name_bytes.as_mut_ptr() as *mut c_char,
         date_len: 0,
         date: null_mut(),