kernel/x86_64: compatibility syscalls for image.cpp.
* define compat_image_info, compat_extended_image_info to be used for respective 32-bit types of syscalls in compatibility mode. * handle 32-bit types in _user_register_image, _user_get_image_info, _user_get_next_image_info, other syscalls are compatible as is. Change-Id: Ibbd33e6796208dfa70d869e36bf745bc3e18d330
This commit is contained in:
@@ -23,6 +23,18 @@ copy_ref_var_from_user(T *user, T &kernel)
|
||||
return user_memcpy(&kernel, user, sizeof(T));
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
inline
|
||||
status_t
|
||||
copy_ref_var_from_user(T *user, T &kernel, size_t size)
|
||||
{
|
||||
if (size != sizeof(T))
|
||||
return B_BAD_VALUE;
|
||||
return copy_ref_var_from_user(user, kernel);
|
||||
}
|
||||
|
||||
|
||||
// copy_ref_var_to_user
|
||||
template<typename T>
|
||||
inline
|
||||
@@ -35,4 +47,17 @@ copy_ref_var_to_user(T &kernel, T *user)
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
inline
|
||||
status_t
|
||||
copy_ref_var_to_user(T &kernel, T *user, size_t size)
|
||||
{
|
||||
if (size > sizeof(T))
|
||||
return B_BAD_VALUE;
|
||||
if (!IS_USER_ADDRESS(user))
|
||||
return B_BAD_ADDRESS;
|
||||
return user_memcpy(user, &kernel, size);
|
||||
}
|
||||
|
||||
|
||||
#endif // _SYSCALL_ARGS_H
|
||||
|
||||
Reference in New Issue
Block a user