diff mbox

[2/6] efi_runtime: redefine all uint*_t types by following the header efi.h

Message ID 1471575460-13421-2-git-send-email-ivan.hu@canonical.com
State Accepted
Headers show

Commit Message

Ivan Hu Aug. 19, 2016, 2:57 a.m. UTC
Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
---
 efi_runtime/efi_runtime.c | 42 +++++++++++++++++---------------
 efi_runtime/efi_runtime.h | 62 +++++++++++++++++++++++------------------------
 2 files changed, 54 insertions(+), 50 deletions(-)

Comments

Colin Ian King Aug. 19, 2016, 7:17 a.m. UTC | #1
On 19/08/16 03:57, Ivan Hu wrote:
> Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
> ---
>  efi_runtime/efi_runtime.c | 42 +++++++++++++++++---------------
>  efi_runtime/efi_runtime.h | 62 +++++++++++++++++++++++------------------------
>  2 files changed, 54 insertions(+), 50 deletions(-)
> 
> diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c
> index daf8625..46baedf 100644
> --- a/efi_runtime/efi_runtime.c
> +++ b/efi_runtime/efi_runtime.c
> @@ -47,16 +47,16 @@ MODULE_LICENSE("GPL");
>   * Note this function returns the number of *bytes*, not the number of
>   * ucs2 characters.
>   */
> -static inline size_t user_ucs2_strsize(uint16_t  __user *str)
> +static inline size_t user_ucs2_strsize(efi_char16_t  __user *str)
>  {
> -	uint16_t *s = str, c;
> +	efi_char16_t *s = str, c;
>  	size_t len;
>  
>  	if (!str)
>  		return 0;
>  
>  	/* Include terminating NULL */
> -	len = sizeof(uint16_t);
> +	len = sizeof(efi_char16_t);
>  
>  	if (get_user(c, s++)) {
>  		/* Can't read userspace memory for size */
> @@ -68,7 +68,7 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>  			/* Can't read userspace memory for size */
>  			return 0;
>  		}
> -		len += sizeof(uint16_t);
> +		len += sizeof(efi_char16_t);
>  	}
>  	return len;
>  }
> @@ -77,9 +77,10 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>   * Allocate a buffer and copy a ucs2 string from user space into it.
>   */
>  static inline int
> -copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
> +copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
> +			size_t len)
>  {
> -	uint16_t *buf;
> +	efi_char16_t *buf;
>  
>  	if (!src) {
>  		*dst = NULL;
> @@ -109,7 +110,8 @@ copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
>   *
>   * Just a wrap for user_ucs2_strsize
>   */
> -static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
> +static inline int
> +get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
>  {
>  	if (!access_ok(VERIFY_READ, src, 1))
>  		return -EFAULT;
> @@ -133,7 +135,8 @@ static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
>   *
>   * It is the caller's responsibility to free 'dst'.
>   */
> -static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
> +static inline int
> +copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
>  {
>  	size_t len;
>  
> @@ -156,7 +159,7 @@ static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
>   * 'len' specifies the number of bytes to copy.
>   */
>  static inline int
> -copy_ucs2_to_user_len(uint16_t __user *dst, uint16_t *src, size_t len)
> +copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
>  {
>  	if (!src)
>  		return 0;
> @@ -174,8 +177,8 @@ static long efi_runtime_get_variable(unsigned long arg)
>  	unsigned long datasize, prev_datasize, *dz;
>  	efi_guid_t vendor_guid, *vd = NULL;
>  	efi_status_t status;
> -	uint16_t *name = NULL;
> -	uint32_t attr, *at;
> +	efi_char16_t *name = NULL;
> +	u32 attr, *at;
>  	void *data = NULL;
>  	int rv = 0;
>  
> @@ -251,7 +254,7 @@ static long efi_runtime_set_variable(unsigned long arg)
>  	struct efi_setvariable setvariable_local;
>  	efi_guid_t vendor_guid;
>  	efi_status_t status;
> -	uint16_t *name = NULL;
> +	efi_char16_t *name = NULL;
>  	void *data;
>  	int rv;
>  
> @@ -265,7 +268,8 @@ static long efi_runtime_set_variable(unsigned long arg)
>  		return -EFAULT;
>  
>  	if (setvariable_local.variable_name) {
> -		rv = copy_ucs2_from_user(&name, setvariable_local.variable_name);
> +		rv = copy_ucs2_from_user(&name,
> +					setvariable_local.variable_name);
>  		if (rv)
>  			return rv;
>  	}
> @@ -356,7 +360,7 @@ static long efi_runtime_get_waketime(unsigned long arg)
>  {
>  	struct efi_getwakeuptime __user *getwakeuptime;
>  	struct efi_getwakeuptime getwakeuptime_local;
> -	unsigned char enabled, pending;
> +	efi_bool_t enabled, pending;
>  	efi_status_t status;
>  	efi_time_t efi_time;
>  
> @@ -388,7 +392,7 @@ static long efi_runtime_set_waketime(unsigned long arg)
>  {
>  	struct efi_setwakeuptime __user *setwakeuptime;
>  	struct efi_setwakeuptime setwakeuptime_local;
> -	unsigned char enabled;
> +	efi_bool_t enabled;
>  	efi_status_t status;
>  	efi_time_t efi_time;
>  
> @@ -423,7 +427,7 @@ static long efi_runtime_get_nextvariablename(unsigned long arg)
>  	efi_status_t status;
>  	efi_guid_t *vd = NULL;
>  	efi_guid_t vendor_guid;
> -	uint16_t *name = NULL;
> +	efi_char16_t *name = NULL;
>  	int rv;
>  
>  	getnextvariablename = (struct efi_getnextvariablename
> @@ -509,7 +513,7 @@ static long efi_runtime_get_nexthighmonocount(unsigned long arg)
>  	struct efi_getnexthighmonotoniccount __user *getnexthighmonotoniccount;
>  	struct efi_getnexthighmonotoniccount getnexthighmonotoniccount_local;
>  	efi_status_t status;
> -	uint32_t count;
> +	u32 count;
>  
>  	getnexthighmonotoniccount = (struct
>  			efi_getnexthighmonotoniccount __user *)arg;
> @@ -542,7 +546,7 @@ static long efi_runtime_query_variableinfo(unsigned long arg)
>  	struct efi_queryvariableinfo __user *queryvariableinfo;
>  	struct efi_queryvariableinfo queryvariableinfo_local;
>  	efi_status_t status;
> -	uint64_t max_storage, remaining, max_size;
> +	u64 max_storage, remaining, max_size;
>  
>  	queryvariableinfo = (struct efi_queryvariableinfo __user *)arg;
>  
> @@ -578,7 +582,7 @@ static long efi_runtime_query_capsulecaps(unsigned long arg)
>  	struct efi_querycapsulecapabilities caps;
>  	efi_capsule_header_t *capsules;
>  	efi_status_t status;
> -	uint64_t max_size;
> +	u64 max_size;
>  	int i, reset_type;
>  	int rv;
>  
> diff --git a/efi_runtime/efi_runtime.h b/efi_runtime/efi_runtime.h
> index 9167688..b3da40e 100644
> --- a/efi_runtime/efi_runtime.h
> +++ b/efi_runtime/efi_runtime.h
> @@ -25,73 +25,73 @@
>  #include <linux/efi.h>
>  
>  struct efi_getvariable {
> -	uint16_t	*variable_name;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint32_t	*attributes;
> -	uint64_t	*data_size;
> +	u32		*attributes;
> +	unsigned long	*data_size;

I know UEFI is currently just 64 bit support, so unsigned longs are 64
bits in this case, but why aren't we using u64 instead? Any reason?


>  	void		*data;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_setvariable {
> -	uint16_t	*variable_name;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint32_t	attributes;
> -	uint64_t	data_size;
> +	u32		attributes;
> +	unsigned long	data_size;
>  	void		*data;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_getnextvariablename {
> -	uint64_t	*variable_name_size;
> -	uint16_t	*variable_name;
> +	unsigned long	*variable_name_size;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_queryvariableinfo {
> -	uint32_t	attributes;
> -	uint64_t	*maximum_variable_storage_size;
> -	uint64_t	*remaining_variable_storage_size;
> -	uint64_t	*maximum_variable_size;
> -	uint64_t	*status;
> +	u32		attributes;
> +	u64		*maximum_variable_storage_size;
> +	u64		*remaining_variable_storage_size;
> +	u64		*maximum_variable_size;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_gettime {
> -	efi_time_t		*time;
> -	efi_time_cap_t		*capabilities;
> -	uint64_t		*status;
> +	efi_time_t	*time;
> +	efi_time_cap_t	*capabilities;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_settime {
> -	efi_time_t		*time;
> -	uint64_t		*status;
> +	efi_time_t	*time;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_getwakeuptime {
> -	uint8_t		*enabled;
> -	uint8_t		*pending;
> +	efi_bool_t	*enabled;
> +	efi_bool_t	*pending;
>  	efi_time_t	*time;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_setwakeuptime {
> -	uint8_t		enabled;
> +	efi_bool_t	enabled;
>  	efi_time_t	*time;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_getnexthighmonotoniccount {
> -	uint32_t	*high_count;
> -	uint64_t	*status;
> +	u32		*high_count;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_querycapsulecapabilities {
>  	efi_capsule_header_t	**capsule_header_array;
> -	uint64_t		capsule_count;
> -	uint64_t		*maximum_capsule_size;
> +	unsigned long		capsule_count;
> +	u64			*maximum_capsule_size;
>  	int			*reset_type;
> -	uint64_t		*status;
> +	efi_status_t		*status;
>  } __packed;
>  
>  /* ioctl calls that are permitted to the /dev/efi_runtime interface. */
>
Ivan Hu Aug. 19, 2016, 7:34 a.m. UTC | #2
On 2016年08月19日 15:17, Colin Ian King wrote:
> On 19/08/16 03:57, Ivan Hu wrote:
>> Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
>> ---
>>   efi_runtime/efi_runtime.c | 42 +++++++++++++++++---------------
>>   efi_runtime/efi_runtime.h | 62 +++++++++++++++++++++++------------------------
>>   2 files changed, 54 insertions(+), 50 deletions(-)
>>
>> diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c
>> index daf8625..46baedf 100644
>> --- a/efi_runtime/efi_runtime.c
>> +++ b/efi_runtime/efi_runtime.c
>> @@ -47,16 +47,16 @@ MODULE_LICENSE("GPL");
>>    * Note this function returns the number of *bytes*, not the number of
>>    * ucs2 characters.
>>    */
>> -static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>> +static inline size_t user_ucs2_strsize(efi_char16_t  __user *str)
>>   {
>> -	uint16_t *s = str, c;
>> +	efi_char16_t *s = str, c;
>>   	size_t len;
>>   
>>   	if (!str)
>>   		return 0;
>>   
>>   	/* Include terminating NULL */
>> -	len = sizeof(uint16_t);
>> +	len = sizeof(efi_char16_t);
>>   
>>   	if (get_user(c, s++)) {
>>   		/* Can't read userspace memory for size */
>> @@ -68,7 +68,7 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>>   			/* Can't read userspace memory for size */
>>   			return 0;
>>   		}
>> -		len += sizeof(uint16_t);
>> +		len += sizeof(efi_char16_t);
>>   	}
>>   	return len;
>>   }
>> @@ -77,9 +77,10 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>>    * Allocate a buffer and copy a ucs2 string from user space into it.
>>    */
>>   static inline int
>> -copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
>> +copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
>> +			size_t len)
>>   {
>> -	uint16_t *buf;
>> +	efi_char16_t *buf;
>>   
>>   	if (!src) {
>>   		*dst = NULL;
>> @@ -109,7 +110,8 @@ copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
>>    *
>>    * Just a wrap for user_ucs2_strsize
>>    */
>> -static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
>> +static inline int
>> +get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
>>   {
>>   	if (!access_ok(VERIFY_READ, src, 1))
>>   		return -EFAULT;
>> @@ -133,7 +135,8 @@ static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
>>    *
>>    * It is the caller's responsibility to free 'dst'.
>>    */
>> -static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
>> +static inline int
>> +copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
>>   {
>>   	size_t len;
>>   
>> @@ -156,7 +159,7 @@ static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
>>    * 'len' specifies the number of bytes to copy.
>>    */
>>   static inline int
>> -copy_ucs2_to_user_len(uint16_t __user *dst, uint16_t *src, size_t len)
>> +copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
>>   {
>>   	if (!src)
>>   		return 0;
>> @@ -174,8 +177,8 @@ static long efi_runtime_get_variable(unsigned long arg)
>>   	unsigned long datasize, prev_datasize, *dz;
>>   	efi_guid_t vendor_guid, *vd = NULL;
>>   	efi_status_t status;
>> -	uint16_t *name = NULL;
>> -	uint32_t attr, *at;
>> +	efi_char16_t *name = NULL;
>> +	u32 attr, *at;
>>   	void *data = NULL;
>>   	int rv = 0;
>>   
>> @@ -251,7 +254,7 @@ static long efi_runtime_set_variable(unsigned long arg)
>>   	struct efi_setvariable setvariable_local;
>>   	efi_guid_t vendor_guid;
>>   	efi_status_t status;
>> -	uint16_t *name = NULL;
>> +	efi_char16_t *name = NULL;
>>   	void *data;
>>   	int rv;
>>   
>> @@ -265,7 +268,8 @@ static long efi_runtime_set_variable(unsigned long arg)
>>   		return -EFAULT;
>>   
>>   	if (setvariable_local.variable_name) {
>> -		rv = copy_ucs2_from_user(&name, setvariable_local.variable_name);
>> +		rv = copy_ucs2_from_user(&name,
>> +					setvariable_local.variable_name);
>>   		if (rv)
>>   			return rv;
>>   	}
>> @@ -356,7 +360,7 @@ static long efi_runtime_get_waketime(unsigned long arg)
>>   {
>>   	struct efi_getwakeuptime __user *getwakeuptime;
>>   	struct efi_getwakeuptime getwakeuptime_local;
>> -	unsigned char enabled, pending;
>> +	efi_bool_t enabled, pending;
>>   	efi_status_t status;
>>   	efi_time_t efi_time;
>>   
>> @@ -388,7 +392,7 @@ static long efi_runtime_set_waketime(unsigned long arg)
>>   {
>>   	struct efi_setwakeuptime __user *setwakeuptime;
>>   	struct efi_setwakeuptime setwakeuptime_local;
>> -	unsigned char enabled;
>> +	efi_bool_t enabled;
>>   	efi_status_t status;
>>   	efi_time_t efi_time;
>>   
>> @@ -423,7 +427,7 @@ static long efi_runtime_get_nextvariablename(unsigned long arg)
>>   	efi_status_t status;
>>   	efi_guid_t *vd = NULL;
>>   	efi_guid_t vendor_guid;
>> -	uint16_t *name = NULL;
>> +	efi_char16_t *name = NULL;
>>   	int rv;
>>   
>>   	getnextvariablename = (struct efi_getnextvariablename
>> @@ -509,7 +513,7 @@ static long efi_runtime_get_nexthighmonocount(unsigned long arg)
>>   	struct efi_getnexthighmonotoniccount __user *getnexthighmonotoniccount;
>>   	struct efi_getnexthighmonotoniccount getnexthighmonotoniccount_local;
>>   	efi_status_t status;
>> -	uint32_t count;
>> +	u32 count;
>>   
>>   	getnexthighmonotoniccount = (struct
>>   			efi_getnexthighmonotoniccount __user *)arg;
>> @@ -542,7 +546,7 @@ static long efi_runtime_query_variableinfo(unsigned long arg)
>>   	struct efi_queryvariableinfo __user *queryvariableinfo;
>>   	struct efi_queryvariableinfo queryvariableinfo_local;
>>   	efi_status_t status;
>> -	uint64_t max_storage, remaining, max_size;
>> +	u64 max_storage, remaining, max_size;
>>   
>>   	queryvariableinfo = (struct efi_queryvariableinfo __user *)arg;
>>   
>> @@ -578,7 +582,7 @@ static long efi_runtime_query_capsulecaps(unsigned long arg)
>>   	struct efi_querycapsulecapabilities caps;
>>   	efi_capsule_header_t *capsules;
>>   	efi_status_t status;
>> -	uint64_t max_size;
>> +	u64 max_size;
>>   	int i, reset_type;
>>   	int rv;
>>   
>> diff --git a/efi_runtime/efi_runtime.h b/efi_runtime/efi_runtime.h
>> index 9167688..b3da40e 100644
>> --- a/efi_runtime/efi_runtime.h
>> +++ b/efi_runtime/efi_runtime.h
>> @@ -25,73 +25,73 @@
>>   #include <linux/efi.h>
>>   
>>   struct efi_getvariable {
>> -	uint16_t	*variable_name;
>> +	efi_char16_t	*variable_name;
>>   	efi_guid_t	*vendor_guid;
>> -	uint32_t	*attributes;
>> -	uint64_t	*data_size;
>> +	u32		*attributes;
>> +	unsigned long	*data_size;
> I know UEFI is currently just 64 bit support, so unsigned longs are 64
> bits in this case, but why aren't we using u64 instead? Any reason?
Just simply follow the type defined on efi.h

typedef efi_status_t efi_get_variable_t (efi_char16_t *name, efi_guid_t 
*vendor, u32 *attr,
                      unsigned long *data_size, void *data);
>
>>   	void		*data;
>> -	uint64_t	*status;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_setvariable {
>> -	uint16_t	*variable_name;
>> +	efi_char16_t	*variable_name;
>>   	efi_guid_t	*vendor_guid;
>> -	uint32_t	attributes;
>> -	uint64_t	data_size;
>> +	u32		attributes;
>> +	unsigned long	data_size;
>>   	void		*data;
>> -	uint64_t	*status;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_getnextvariablename {
>> -	uint64_t	*variable_name_size;
>> -	uint16_t	*variable_name;
>> +	unsigned long	*variable_name_size;
>> +	efi_char16_t	*variable_name;
>>   	efi_guid_t	*vendor_guid;
>> -	uint64_t	*status;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_queryvariableinfo {
>> -	uint32_t	attributes;
>> -	uint64_t	*maximum_variable_storage_size;
>> -	uint64_t	*remaining_variable_storage_size;
>> -	uint64_t	*maximum_variable_size;
>> -	uint64_t	*status;
>> +	u32		attributes;
>> +	u64		*maximum_variable_storage_size;
>> +	u64		*remaining_variable_storage_size;
>> +	u64		*maximum_variable_size;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_gettime {
>> -	efi_time_t		*time;
>> -	efi_time_cap_t		*capabilities;
>> -	uint64_t		*status;
>> +	efi_time_t	*time;
>> +	efi_time_cap_t	*capabilities;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_settime {
>> -	efi_time_t		*time;
>> -	uint64_t		*status;
>> +	efi_time_t	*time;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_getwakeuptime {
>> -	uint8_t		*enabled;
>> -	uint8_t		*pending;
>> +	efi_bool_t	*enabled;
>> +	efi_bool_t	*pending;
>>   	efi_time_t	*time;
>> -	uint64_t	*status;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_setwakeuptime {
>> -	uint8_t		enabled;
>> +	efi_bool_t	enabled;
>>   	efi_time_t	*time;
>> -	uint64_t	*status;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_getnexthighmonotoniccount {
>> -	uint32_t	*high_count;
>> -	uint64_t	*status;
>> +	u32		*high_count;
>> +	efi_status_t	*status;
>>   } __packed;
>>   
>>   struct efi_querycapsulecapabilities {
>>   	efi_capsule_header_t	**capsule_header_array;
>> -	uint64_t		capsule_count;
>> -	uint64_t		*maximum_capsule_size;
>> +	unsigned long		capsule_count;
>> +	u64			*maximum_capsule_size;
>>   	int			*reset_type;
>> -	uint64_t		*status;
>> +	efi_status_t		*status;
>>   } __packed;
>>   
>>   /* ioctl calls that are permitted to the /dev/efi_runtime interface. */
>>
Colin Ian King Aug. 19, 2016, 7:46 a.m. UTC | #3
On 19/08/16 08:34, ivanhu wrote:
> 
> 
> On 2016年08月19日 15:17, Colin Ian King wrote:
>> On 19/08/16 03:57, Ivan Hu wrote:
>>> Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
>>> ---
>>>   efi_runtime/efi_runtime.c | 42 +++++++++++++++++---------------
>>>   efi_runtime/efi_runtime.h | 62
>>> +++++++++++++++++++++++------------------------
>>>   2 files changed, 54 insertions(+), 50 deletions(-)
>>>
>>> diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c
>>> index daf8625..46baedf 100644
>>> --- a/efi_runtime/efi_runtime.c
>>> +++ b/efi_runtime/efi_runtime.c
>>> @@ -47,16 +47,16 @@ MODULE_LICENSE("GPL");
>>>    * Note this function returns the number of *bytes*, not the number of
>>>    * ucs2 characters.
>>>    */
>>> -static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>>> +static inline size_t user_ucs2_strsize(efi_char16_t  __user *str)
>>>   {
>>> -    uint16_t *s = str, c;
>>> +    efi_char16_t *s = str, c;
>>>       size_t len;
>>>         if (!str)
>>>           return 0;
>>>         /* Include terminating NULL */
>>> -    len = sizeof(uint16_t);
>>> +    len = sizeof(efi_char16_t);
>>>         if (get_user(c, s++)) {
>>>           /* Can't read userspace memory for size */
>>> @@ -68,7 +68,7 @@ static inline size_t user_ucs2_strsize(uint16_t 
>>> __user *str)
>>>               /* Can't read userspace memory for size */
>>>               return 0;
>>>           }
>>> -        len += sizeof(uint16_t);
>>> +        len += sizeof(efi_char16_t);
>>>       }
>>>       return len;
>>>   }
>>> @@ -77,9 +77,10 @@ static inline size_t user_ucs2_strsize(uint16_t 
>>> __user *str)
>>>    * Allocate a buffer and copy a ucs2 string from user space into it.
>>>    */
>>>   static inline int
>>> -copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t
>>> len)
>>> +copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
>>> +            size_t len)
>>>   {
>>> -    uint16_t *buf;
>>> +    efi_char16_t *buf;
>>>         if (!src) {
>>>           *dst = NULL;
>>> @@ -109,7 +110,8 @@ copy_ucs2_from_user_len(uint16_t **dst, uint16_t
>>> __user *src, size_t len)
>>>    *
>>>    * Just a wrap for user_ucs2_strsize
>>>    */
>>> -static inline int get_ucs2_strsize_from_user(uint16_t __user *src,
>>> size_t *len)
>>> +static inline int
>>> +get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
>>>   {
>>>       if (!access_ok(VERIFY_READ, src, 1))
>>>           return -EFAULT;
>>> @@ -133,7 +135,8 @@ static inline int
>>> get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
>>>    *
>>>    * It is the caller's responsibility to free 'dst'.
>>>    */
>>> -static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t
>>> __user *src)
>>> +static inline int
>>> +copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
>>>   {
>>>       size_t len;
>>>   @@ -156,7 +159,7 @@ static inline int copy_ucs2_from_user(uint16_t
>>> **dst, uint16_t __user *src)
>>>    * 'len' specifies the number of bytes to copy.
>>>    */
>>>   static inline int
>>> -copy_ucs2_to_user_len(uint16_t __user *dst, uint16_t *src, size_t len)
>>> +copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src,
>>> size_t len)
>>>   {
>>>       if (!src)
>>>           return 0;
>>> @@ -174,8 +177,8 @@ static long efi_runtime_get_variable(unsigned
>>> long arg)
>>>       unsigned long datasize, prev_datasize, *dz;
>>>       efi_guid_t vendor_guid, *vd = NULL;
>>>       efi_status_t status;
>>> -    uint16_t *name = NULL;
>>> -    uint32_t attr, *at;
>>> +    efi_char16_t *name = NULL;
>>> +    u32 attr, *at;
>>>       void *data = NULL;
>>>       int rv = 0;
>>>   @@ -251,7 +254,7 @@ static long efi_runtime_set_variable(unsigned
>>> long arg)
>>>       struct efi_setvariable setvariable_local;
>>>       efi_guid_t vendor_guid;
>>>       efi_status_t status;
>>> -    uint16_t *name = NULL;
>>> +    efi_char16_t *name = NULL;
>>>       void *data;
>>>       int rv;
>>>   @@ -265,7 +268,8 @@ static long efi_runtime_set_variable(unsigned
>>> long arg)
>>>           return -EFAULT;
>>>         if (setvariable_local.variable_name) {
>>> -        rv = copy_ucs2_from_user(&name,
>>> setvariable_local.variable_name);
>>> +        rv = copy_ucs2_from_user(&name,
>>> +                    setvariable_local.variable_name);
>>>           if (rv)
>>>               return rv;
>>>       }
>>> @@ -356,7 +360,7 @@ static long efi_runtime_get_waketime(unsigned
>>> long arg)
>>>   {
>>>       struct efi_getwakeuptime __user *getwakeuptime;
>>>       struct efi_getwakeuptime getwakeuptime_local;
>>> -    unsigned char enabled, pending;
>>> +    efi_bool_t enabled, pending;
>>>       efi_status_t status;
>>>       efi_time_t efi_time;
>>>   @@ -388,7 +392,7 @@ static long efi_runtime_set_waketime(unsigned
>>> long arg)
>>>   {
>>>       struct efi_setwakeuptime __user *setwakeuptime;
>>>       struct efi_setwakeuptime setwakeuptime_local;
>>> -    unsigned char enabled;
>>> +    efi_bool_t enabled;
>>>       efi_status_t status;
>>>       efi_time_t efi_time;
>>>   @@ -423,7 +427,7 @@ static long
>>> efi_runtime_get_nextvariablename(unsigned long arg)
>>>       efi_status_t status;
>>>       efi_guid_t *vd = NULL;
>>>       efi_guid_t vendor_guid;
>>> -    uint16_t *name = NULL;
>>> +    efi_char16_t *name = NULL;
>>>       int rv;
>>>         getnextvariablename = (struct efi_getnextvariablename
>>> @@ -509,7 +513,7 @@ static long
>>> efi_runtime_get_nexthighmonocount(unsigned long arg)
>>>       struct efi_getnexthighmonotoniccount __user
>>> *getnexthighmonotoniccount;
>>>       struct efi_getnexthighmonotoniccount
>>> getnexthighmonotoniccount_local;
>>>       efi_status_t status;
>>> -    uint32_t count;
>>> +    u32 count;
>>>         getnexthighmonotoniccount = (struct
>>>               efi_getnexthighmonotoniccount __user *)arg;
>>> @@ -542,7 +546,7 @@ static long
>>> efi_runtime_query_variableinfo(unsigned long arg)
>>>       struct efi_queryvariableinfo __user *queryvariableinfo;
>>>       struct efi_queryvariableinfo queryvariableinfo_local;
>>>       efi_status_t status;
>>> -    uint64_t max_storage, remaining, max_size;
>>> +    u64 max_storage, remaining, max_size;
>>>         queryvariableinfo = (struct efi_queryvariableinfo __user *)arg;
>>>   @@ -578,7 +582,7 @@ static long
>>> efi_runtime_query_capsulecaps(unsigned long arg)
>>>       struct efi_querycapsulecapabilities caps;
>>>       efi_capsule_header_t *capsules;
>>>       efi_status_t status;
>>> -    uint64_t max_size;
>>> +    u64 max_size;
>>>       int i, reset_type;
>>>       int rv;
>>>   diff --git a/efi_runtime/efi_runtime.h b/efi_runtime/efi_runtime.h
>>> index 9167688..b3da40e 100644
>>> --- a/efi_runtime/efi_runtime.h
>>> +++ b/efi_runtime/efi_runtime.h
>>> @@ -25,73 +25,73 @@
>>>   #include <linux/efi.h>
>>>     struct efi_getvariable {
>>> -    uint16_t    *variable_name;
>>> +    efi_char16_t    *variable_name;
>>>       efi_guid_t    *vendor_guid;
>>> -    uint32_t    *attributes;
>>> -    uint64_t    *data_size;
>>> +    u32        *attributes;
>>> +    unsigned long    *data_size;
>> I know UEFI is currently just 64 bit support, so unsigned longs are 64
>> bits in this case, but why aren't we using u64 instead? Any reason?
> Just simply follow the type defined on efi.h
> 
> typedef efi_status_t efi_get_variable_t (efi_char16_t *name, efi_guid_t
> *vendor, u32 *attr,
>                      unsigned long *data_size, void *data);

Ah, thanks for the clarification. That makes sense.

>>
>>>       void        *data;
>>> -    uint64_t    *status;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_setvariable {
>>> -    uint16_t    *variable_name;
>>> +    efi_char16_t    *variable_name;
>>>       efi_guid_t    *vendor_guid;
>>> -    uint32_t    attributes;
>>> -    uint64_t    data_size;
>>> +    u32        attributes;
>>> +    unsigned long    data_size;
>>>       void        *data;
>>> -    uint64_t    *status;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_getnextvariablename {
>>> -    uint64_t    *variable_name_size;
>>> -    uint16_t    *variable_name;
>>> +    unsigned long    *variable_name_size;
>>> +    efi_char16_t    *variable_name;
>>>       efi_guid_t    *vendor_guid;
>>> -    uint64_t    *status;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_queryvariableinfo {
>>> -    uint32_t    attributes;
>>> -    uint64_t    *maximum_variable_storage_size;
>>> -    uint64_t    *remaining_variable_storage_size;
>>> -    uint64_t    *maximum_variable_size;
>>> -    uint64_t    *status;
>>> +    u32        attributes;
>>> +    u64        *maximum_variable_storage_size;
>>> +    u64        *remaining_variable_storage_size;
>>> +    u64        *maximum_variable_size;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_gettime {
>>> -    efi_time_t        *time;
>>> -    efi_time_cap_t        *capabilities;
>>> -    uint64_t        *status;
>>> +    efi_time_t    *time;
>>> +    efi_time_cap_t    *capabilities;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_settime {
>>> -    efi_time_t        *time;
>>> -    uint64_t        *status;
>>> +    efi_time_t    *time;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_getwakeuptime {
>>> -    uint8_t        *enabled;
>>> -    uint8_t        *pending;
>>> +    efi_bool_t    *enabled;
>>> +    efi_bool_t    *pending;
>>>       efi_time_t    *time;
>>> -    uint64_t    *status;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_setwakeuptime {
>>> -    uint8_t        enabled;
>>> +    efi_bool_t    enabled;
>>>       efi_time_t    *time;
>>> -    uint64_t    *status;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_getnexthighmonotoniccount {
>>> -    uint32_t    *high_count;
>>> -    uint64_t    *status;
>>> +    u32        *high_count;
>>> +    efi_status_t    *status;
>>>   } __packed;
>>>     struct efi_querycapsulecapabilities {
>>>       efi_capsule_header_t    **capsule_header_array;
>>> -    uint64_t        capsule_count;
>>> -    uint64_t        *maximum_capsule_size;
>>> +    unsigned long        capsule_count;
>>> +    u64            *maximum_capsule_size;
>>>       int            *reset_type;
>>> -    uint64_t        *status;
>>> +    efi_status_t        *status;
>>>   } __packed;
>>>     /* ioctl calls that are permitted to the /dev/efi_runtime
>>> interface. */
>>>
>
Colin Ian King Aug. 19, 2016, 7:46 a.m. UTC | #4
On 19/08/16 03:57, Ivan Hu wrote:
> Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
> ---
>  efi_runtime/efi_runtime.c | 42 +++++++++++++++++---------------
>  efi_runtime/efi_runtime.h | 62 +++++++++++++++++++++++------------------------
>  2 files changed, 54 insertions(+), 50 deletions(-)
> 
> diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c
> index daf8625..46baedf 100644
> --- a/efi_runtime/efi_runtime.c
> +++ b/efi_runtime/efi_runtime.c
> @@ -47,16 +47,16 @@ MODULE_LICENSE("GPL");
>   * Note this function returns the number of *bytes*, not the number of
>   * ucs2 characters.
>   */
> -static inline size_t user_ucs2_strsize(uint16_t  __user *str)
> +static inline size_t user_ucs2_strsize(efi_char16_t  __user *str)
>  {
> -	uint16_t *s = str, c;
> +	efi_char16_t *s = str, c;
>  	size_t len;
>  
>  	if (!str)
>  		return 0;
>  
>  	/* Include terminating NULL */
> -	len = sizeof(uint16_t);
> +	len = sizeof(efi_char16_t);
>  
>  	if (get_user(c, s++)) {
>  		/* Can't read userspace memory for size */
> @@ -68,7 +68,7 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>  			/* Can't read userspace memory for size */
>  			return 0;
>  		}
> -		len += sizeof(uint16_t);
> +		len += sizeof(efi_char16_t);
>  	}
>  	return len;
>  }
> @@ -77,9 +77,10 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>   * Allocate a buffer and copy a ucs2 string from user space into it.
>   */
>  static inline int
> -copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
> +copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
> +			size_t len)
>  {
> -	uint16_t *buf;
> +	efi_char16_t *buf;
>  
>  	if (!src) {
>  		*dst = NULL;
> @@ -109,7 +110,8 @@ copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
>   *
>   * Just a wrap for user_ucs2_strsize
>   */
> -static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
> +static inline int
> +get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
>  {
>  	if (!access_ok(VERIFY_READ, src, 1))
>  		return -EFAULT;
> @@ -133,7 +135,8 @@ static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
>   *
>   * It is the caller's responsibility to free 'dst'.
>   */
> -static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
> +static inline int
> +copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
>  {
>  	size_t len;
>  
> @@ -156,7 +159,7 @@ static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
>   * 'len' specifies the number of bytes to copy.
>   */
>  static inline int
> -copy_ucs2_to_user_len(uint16_t __user *dst, uint16_t *src, size_t len)
> +copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
>  {
>  	if (!src)
>  		return 0;
> @@ -174,8 +177,8 @@ static long efi_runtime_get_variable(unsigned long arg)
>  	unsigned long datasize, prev_datasize, *dz;
>  	efi_guid_t vendor_guid, *vd = NULL;
>  	efi_status_t status;
> -	uint16_t *name = NULL;
> -	uint32_t attr, *at;
> +	efi_char16_t *name = NULL;
> +	u32 attr, *at;
>  	void *data = NULL;
>  	int rv = 0;
>  
> @@ -251,7 +254,7 @@ static long efi_runtime_set_variable(unsigned long arg)
>  	struct efi_setvariable setvariable_local;
>  	efi_guid_t vendor_guid;
>  	efi_status_t status;
> -	uint16_t *name = NULL;
> +	efi_char16_t *name = NULL;
>  	void *data;
>  	int rv;
>  
> @@ -265,7 +268,8 @@ static long efi_runtime_set_variable(unsigned long arg)
>  		return -EFAULT;
>  
>  	if (setvariable_local.variable_name) {
> -		rv = copy_ucs2_from_user(&name, setvariable_local.variable_name);
> +		rv = copy_ucs2_from_user(&name,
> +					setvariable_local.variable_name);
>  		if (rv)
>  			return rv;
>  	}
> @@ -356,7 +360,7 @@ static long efi_runtime_get_waketime(unsigned long arg)
>  {
>  	struct efi_getwakeuptime __user *getwakeuptime;
>  	struct efi_getwakeuptime getwakeuptime_local;
> -	unsigned char enabled, pending;
> +	efi_bool_t enabled, pending;
>  	efi_status_t status;
>  	efi_time_t efi_time;
>  
> @@ -388,7 +392,7 @@ static long efi_runtime_set_waketime(unsigned long arg)
>  {
>  	struct efi_setwakeuptime __user *setwakeuptime;
>  	struct efi_setwakeuptime setwakeuptime_local;
> -	unsigned char enabled;
> +	efi_bool_t enabled;
>  	efi_status_t status;
>  	efi_time_t efi_time;
>  
> @@ -423,7 +427,7 @@ static long efi_runtime_get_nextvariablename(unsigned long arg)
>  	efi_status_t status;
>  	efi_guid_t *vd = NULL;
>  	efi_guid_t vendor_guid;
> -	uint16_t *name = NULL;
> +	efi_char16_t *name = NULL;
>  	int rv;
>  
>  	getnextvariablename = (struct efi_getnextvariablename
> @@ -509,7 +513,7 @@ static long efi_runtime_get_nexthighmonocount(unsigned long arg)
>  	struct efi_getnexthighmonotoniccount __user *getnexthighmonotoniccount;
>  	struct efi_getnexthighmonotoniccount getnexthighmonotoniccount_local;
>  	efi_status_t status;
> -	uint32_t count;
> +	u32 count;
>  
>  	getnexthighmonotoniccount = (struct
>  			efi_getnexthighmonotoniccount __user *)arg;
> @@ -542,7 +546,7 @@ static long efi_runtime_query_variableinfo(unsigned long arg)
>  	struct efi_queryvariableinfo __user *queryvariableinfo;
>  	struct efi_queryvariableinfo queryvariableinfo_local;
>  	efi_status_t status;
> -	uint64_t max_storage, remaining, max_size;
> +	u64 max_storage, remaining, max_size;
>  
>  	queryvariableinfo = (struct efi_queryvariableinfo __user *)arg;
>  
> @@ -578,7 +582,7 @@ static long efi_runtime_query_capsulecaps(unsigned long arg)
>  	struct efi_querycapsulecapabilities caps;
>  	efi_capsule_header_t *capsules;
>  	efi_status_t status;
> -	uint64_t max_size;
> +	u64 max_size;
>  	int i, reset_type;
>  	int rv;
>  
> diff --git a/efi_runtime/efi_runtime.h b/efi_runtime/efi_runtime.h
> index 9167688..b3da40e 100644
> --- a/efi_runtime/efi_runtime.h
> +++ b/efi_runtime/efi_runtime.h
> @@ -25,73 +25,73 @@
>  #include <linux/efi.h>
>  
>  struct efi_getvariable {
> -	uint16_t	*variable_name;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint32_t	*attributes;
> -	uint64_t	*data_size;
> +	u32		*attributes;
> +	unsigned long	*data_size;
>  	void		*data;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_setvariable {
> -	uint16_t	*variable_name;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint32_t	attributes;
> -	uint64_t	data_size;
> +	u32		attributes;
> +	unsigned long	data_size;
>  	void		*data;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_getnextvariablename {
> -	uint64_t	*variable_name_size;
> -	uint16_t	*variable_name;
> +	unsigned long	*variable_name_size;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_queryvariableinfo {
> -	uint32_t	attributes;
> -	uint64_t	*maximum_variable_storage_size;
> -	uint64_t	*remaining_variable_storage_size;
> -	uint64_t	*maximum_variable_size;
> -	uint64_t	*status;
> +	u32		attributes;
> +	u64		*maximum_variable_storage_size;
> +	u64		*remaining_variable_storage_size;
> +	u64		*maximum_variable_size;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_gettime {
> -	efi_time_t		*time;
> -	efi_time_cap_t		*capabilities;
> -	uint64_t		*status;
> +	efi_time_t	*time;
> +	efi_time_cap_t	*capabilities;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_settime {
> -	efi_time_t		*time;
> -	uint64_t		*status;
> +	efi_time_t	*time;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_getwakeuptime {
> -	uint8_t		*enabled;
> -	uint8_t		*pending;
> +	efi_bool_t	*enabled;
> +	efi_bool_t	*pending;
>  	efi_time_t	*time;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_setwakeuptime {
> -	uint8_t		enabled;
> +	efi_bool_t	enabled;
>  	efi_time_t	*time;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_getnexthighmonotoniccount {
> -	uint32_t	*high_count;
> -	uint64_t	*status;
> +	u32		*high_count;
> +	efi_status_t	*status;
>  } __packed;
>  
>  struct efi_querycapsulecapabilities {
>  	efi_capsule_header_t	**capsule_header_array;
> -	uint64_t		capsule_count;
> -	uint64_t		*maximum_capsule_size;
> +	unsigned long		capsule_count;
> +	u64			*maximum_capsule_size;
>  	int			*reset_type;
> -	uint64_t		*status;
> +	efi_status_t		*status;
>  } __packed;
>  
>  /* ioctl calls that are permitted to the /dev/efi_runtime interface. */
> 
Acked-by: Colin Ian King <colin.king@canonical.com>
Alex Hung Aug. 23, 2016, 1:37 a.m. UTC | #5
On 2016-08-19 10:57 AM, Ivan Hu wrote:
> Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
> ---
>  efi_runtime/efi_runtime.c | 42 +++++++++++++++++---------------
>  efi_runtime/efi_runtime.h | 62 +++++++++++++++++++++++------------------------
>  2 files changed, 54 insertions(+), 50 deletions(-)
>
> diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c
> index daf8625..46baedf 100644
> --- a/efi_runtime/efi_runtime.c
> +++ b/efi_runtime/efi_runtime.c
> @@ -47,16 +47,16 @@ MODULE_LICENSE("GPL");
>   * Note this function returns the number of *bytes*, not the number of
>   * ucs2 characters.
>   */
> -static inline size_t user_ucs2_strsize(uint16_t  __user *str)
> +static inline size_t user_ucs2_strsize(efi_char16_t  __user *str)
>  {
> -	uint16_t *s = str, c;
> +	efi_char16_t *s = str, c;
>  	size_t len;
>
>  	if (!str)
>  		return 0;
>
>  	/* Include terminating NULL */
> -	len = sizeof(uint16_t);
> +	len = sizeof(efi_char16_t);
>
>  	if (get_user(c, s++)) {
>  		/* Can't read userspace memory for size */
> @@ -68,7 +68,7 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>  			/* Can't read userspace memory for size */
>  			return 0;
>  		}
> -		len += sizeof(uint16_t);
> +		len += sizeof(efi_char16_t);
>  	}
>  	return len;
>  }
> @@ -77,9 +77,10 @@ static inline size_t user_ucs2_strsize(uint16_t  __user *str)
>   * Allocate a buffer and copy a ucs2 string from user space into it.
>   */
>  static inline int
> -copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
> +copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
> +			size_t len)
>  {
> -	uint16_t *buf;
> +	efi_char16_t *buf;
>
>  	if (!src) {
>  		*dst = NULL;
> @@ -109,7 +110,8 @@ copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
>   *
>   * Just a wrap for user_ucs2_strsize
>   */
> -static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
> +static inline int
> +get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
>  {
>  	if (!access_ok(VERIFY_READ, src, 1))
>  		return -EFAULT;
> @@ -133,7 +135,8 @@ static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
>   *
>   * It is the caller's responsibility to free 'dst'.
>   */
> -static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
> +static inline int
> +copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
>  {
>  	size_t len;
>
> @@ -156,7 +159,7 @@ static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
>   * 'len' specifies the number of bytes to copy.
>   */
>  static inline int
> -copy_ucs2_to_user_len(uint16_t __user *dst, uint16_t *src, size_t len)
> +copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
>  {
>  	if (!src)
>  		return 0;
> @@ -174,8 +177,8 @@ static long efi_runtime_get_variable(unsigned long arg)
>  	unsigned long datasize, prev_datasize, *dz;
>  	efi_guid_t vendor_guid, *vd = NULL;
>  	efi_status_t status;
> -	uint16_t *name = NULL;
> -	uint32_t attr, *at;
> +	efi_char16_t *name = NULL;
> +	u32 attr, *at;
>  	void *data = NULL;
>  	int rv = 0;
>
> @@ -251,7 +254,7 @@ static long efi_runtime_set_variable(unsigned long arg)
>  	struct efi_setvariable setvariable_local;
>  	efi_guid_t vendor_guid;
>  	efi_status_t status;
> -	uint16_t *name = NULL;
> +	efi_char16_t *name = NULL;
>  	void *data;
>  	int rv;
>
> @@ -265,7 +268,8 @@ static long efi_runtime_set_variable(unsigned long arg)
>  		return -EFAULT;
>
>  	if (setvariable_local.variable_name) {
> -		rv = copy_ucs2_from_user(&name, setvariable_local.variable_name);
> +		rv = copy_ucs2_from_user(&name,
> +					setvariable_local.variable_name);
>  		if (rv)
>  			return rv;
>  	}
> @@ -356,7 +360,7 @@ static long efi_runtime_get_waketime(unsigned long arg)
>  {
>  	struct efi_getwakeuptime __user *getwakeuptime;
>  	struct efi_getwakeuptime getwakeuptime_local;
> -	unsigned char enabled, pending;
> +	efi_bool_t enabled, pending;
>  	efi_status_t status;
>  	efi_time_t efi_time;
>
> @@ -388,7 +392,7 @@ static long efi_runtime_set_waketime(unsigned long arg)
>  {
>  	struct efi_setwakeuptime __user *setwakeuptime;
>  	struct efi_setwakeuptime setwakeuptime_local;
> -	unsigned char enabled;
> +	efi_bool_t enabled;
>  	efi_status_t status;
>  	efi_time_t efi_time;
>
> @@ -423,7 +427,7 @@ static long efi_runtime_get_nextvariablename(unsigned long arg)
>  	efi_status_t status;
>  	efi_guid_t *vd = NULL;
>  	efi_guid_t vendor_guid;
> -	uint16_t *name = NULL;
> +	efi_char16_t *name = NULL;
>  	int rv;
>
>  	getnextvariablename = (struct efi_getnextvariablename
> @@ -509,7 +513,7 @@ static long efi_runtime_get_nexthighmonocount(unsigned long arg)
>  	struct efi_getnexthighmonotoniccount __user *getnexthighmonotoniccount;
>  	struct efi_getnexthighmonotoniccount getnexthighmonotoniccount_local;
>  	efi_status_t status;
> -	uint32_t count;
> +	u32 count;
>
>  	getnexthighmonotoniccount = (struct
>  			efi_getnexthighmonotoniccount __user *)arg;
> @@ -542,7 +546,7 @@ static long efi_runtime_query_variableinfo(unsigned long arg)
>  	struct efi_queryvariableinfo __user *queryvariableinfo;
>  	struct efi_queryvariableinfo queryvariableinfo_local;
>  	efi_status_t status;
> -	uint64_t max_storage, remaining, max_size;
> +	u64 max_storage, remaining, max_size;
>
>  	queryvariableinfo = (struct efi_queryvariableinfo __user *)arg;
>
> @@ -578,7 +582,7 @@ static long efi_runtime_query_capsulecaps(unsigned long arg)
>  	struct efi_querycapsulecapabilities caps;
>  	efi_capsule_header_t *capsules;
>  	efi_status_t status;
> -	uint64_t max_size;
> +	u64 max_size;
>  	int i, reset_type;
>  	int rv;
>
> diff --git a/efi_runtime/efi_runtime.h b/efi_runtime/efi_runtime.h
> index 9167688..b3da40e 100644
> --- a/efi_runtime/efi_runtime.h
> +++ b/efi_runtime/efi_runtime.h
> @@ -25,73 +25,73 @@
>  #include <linux/efi.h>
>
>  struct efi_getvariable {
> -	uint16_t	*variable_name;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint32_t	*attributes;
> -	uint64_t	*data_size;
> +	u32		*attributes;
> +	unsigned long	*data_size;
>  	void		*data;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_setvariable {
> -	uint16_t	*variable_name;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint32_t	attributes;
> -	uint64_t	data_size;
> +	u32		attributes;
> +	unsigned long	data_size;
>  	void		*data;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_getnextvariablename {
> -	uint64_t	*variable_name_size;
> -	uint16_t	*variable_name;
> +	unsigned long	*variable_name_size;
> +	efi_char16_t	*variable_name;
>  	efi_guid_t	*vendor_guid;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_queryvariableinfo {
> -	uint32_t	attributes;
> -	uint64_t	*maximum_variable_storage_size;
> -	uint64_t	*remaining_variable_storage_size;
> -	uint64_t	*maximum_variable_size;
> -	uint64_t	*status;
> +	u32		attributes;
> +	u64		*maximum_variable_storage_size;
> +	u64		*remaining_variable_storage_size;
> +	u64		*maximum_variable_size;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_gettime {
> -	efi_time_t		*time;
> -	efi_time_cap_t		*capabilities;
> -	uint64_t		*status;
> +	efi_time_t	*time;
> +	efi_time_cap_t	*capabilities;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_settime {
> -	efi_time_t		*time;
> -	uint64_t		*status;
> +	efi_time_t	*time;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_getwakeuptime {
> -	uint8_t		*enabled;
> -	uint8_t		*pending;
> +	efi_bool_t	*enabled;
> +	efi_bool_t	*pending;
>  	efi_time_t	*time;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_setwakeuptime {
> -	uint8_t		enabled;
> +	efi_bool_t	enabled;
>  	efi_time_t	*time;
> -	uint64_t	*status;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_getnexthighmonotoniccount {
> -	uint32_t	*high_count;
> -	uint64_t	*status;
> +	u32		*high_count;
> +	efi_status_t	*status;
>  } __packed;
>
>  struct efi_querycapsulecapabilities {
>  	efi_capsule_header_t	**capsule_header_array;
> -	uint64_t		capsule_count;
> -	uint64_t		*maximum_capsule_size;
> +	unsigned long		capsule_count;
> +	u64			*maximum_capsule_size;
>  	int			*reset_type;
> -	uint64_t		*status;
> +	efi_status_t		*status;
>  } __packed;
>
>  /* ioctl calls that are permitted to the /dev/efi_runtime interface. */
>


Acked-by: Alex Hung <alex.hung@canonical.com>
diff mbox

Patch

diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c
index daf8625..46baedf 100644
--- a/efi_runtime/efi_runtime.c
+++ b/efi_runtime/efi_runtime.c
@@ -47,16 +47,16 @@  MODULE_LICENSE("GPL");
  * Note this function returns the number of *bytes*, not the number of
  * ucs2 characters.
  */
-static inline size_t user_ucs2_strsize(uint16_t  __user *str)
+static inline size_t user_ucs2_strsize(efi_char16_t  __user *str)
 {
-	uint16_t *s = str, c;
+	efi_char16_t *s = str, c;
 	size_t len;
 
 	if (!str)
 		return 0;
 
 	/* Include terminating NULL */
-	len = sizeof(uint16_t);
+	len = sizeof(efi_char16_t);
 
 	if (get_user(c, s++)) {
 		/* Can't read userspace memory for size */
@@ -68,7 +68,7 @@  static inline size_t user_ucs2_strsize(uint16_t  __user *str)
 			/* Can't read userspace memory for size */
 			return 0;
 		}
-		len += sizeof(uint16_t);
+		len += sizeof(efi_char16_t);
 	}
 	return len;
 }
@@ -77,9 +77,10 @@  static inline size_t user_ucs2_strsize(uint16_t  __user *str)
  * Allocate a buffer and copy a ucs2 string from user space into it.
  */
 static inline int
-copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
+copy_ucs2_from_user_len(efi_char16_t **dst, efi_char16_t __user *src,
+			size_t len)
 {
-	uint16_t *buf;
+	efi_char16_t *buf;
 
 	if (!src) {
 		*dst = NULL;
@@ -109,7 +110,8 @@  copy_ucs2_from_user_len(uint16_t **dst, uint16_t __user *src, size_t len)
  *
  * Just a wrap for user_ucs2_strsize
  */
-static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
+static inline int
+get_ucs2_strsize_from_user(efi_char16_t __user *src, size_t *len)
 {
 	if (!access_ok(VERIFY_READ, src, 1))
 		return -EFAULT;
@@ -133,7 +135,8 @@  static inline int get_ucs2_strsize_from_user(uint16_t __user *src, size_t *len)
  *
  * It is the caller's responsibility to free 'dst'.
  */
-static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
+static inline int
+copy_ucs2_from_user(efi_char16_t **dst, efi_char16_t __user *src)
 {
 	size_t len;
 
@@ -156,7 +159,7 @@  static inline int copy_ucs2_from_user(uint16_t **dst, uint16_t __user *src)
  * 'len' specifies the number of bytes to copy.
  */
 static inline int
-copy_ucs2_to_user_len(uint16_t __user *dst, uint16_t *src, size_t len)
+copy_ucs2_to_user_len(efi_char16_t __user *dst, efi_char16_t *src, size_t len)
 {
 	if (!src)
 		return 0;
@@ -174,8 +177,8 @@  static long efi_runtime_get_variable(unsigned long arg)
 	unsigned long datasize, prev_datasize, *dz;
 	efi_guid_t vendor_guid, *vd = NULL;
 	efi_status_t status;
-	uint16_t *name = NULL;
-	uint32_t attr, *at;
+	efi_char16_t *name = NULL;
+	u32 attr, *at;
 	void *data = NULL;
 	int rv = 0;
 
@@ -251,7 +254,7 @@  static long efi_runtime_set_variable(unsigned long arg)
 	struct efi_setvariable setvariable_local;
 	efi_guid_t vendor_guid;
 	efi_status_t status;
-	uint16_t *name = NULL;
+	efi_char16_t *name = NULL;
 	void *data;
 	int rv;
 
@@ -265,7 +268,8 @@  static long efi_runtime_set_variable(unsigned long arg)
 		return -EFAULT;
 
 	if (setvariable_local.variable_name) {
-		rv = copy_ucs2_from_user(&name, setvariable_local.variable_name);
+		rv = copy_ucs2_from_user(&name,
+					setvariable_local.variable_name);
 		if (rv)
 			return rv;
 	}
@@ -356,7 +360,7 @@  static long efi_runtime_get_waketime(unsigned long arg)
 {
 	struct efi_getwakeuptime __user *getwakeuptime;
 	struct efi_getwakeuptime getwakeuptime_local;
-	unsigned char enabled, pending;
+	efi_bool_t enabled, pending;
 	efi_status_t status;
 	efi_time_t efi_time;
 
@@ -388,7 +392,7 @@  static long efi_runtime_set_waketime(unsigned long arg)
 {
 	struct efi_setwakeuptime __user *setwakeuptime;
 	struct efi_setwakeuptime setwakeuptime_local;
-	unsigned char enabled;
+	efi_bool_t enabled;
 	efi_status_t status;
 	efi_time_t efi_time;
 
@@ -423,7 +427,7 @@  static long efi_runtime_get_nextvariablename(unsigned long arg)
 	efi_status_t status;
 	efi_guid_t *vd = NULL;
 	efi_guid_t vendor_guid;
-	uint16_t *name = NULL;
+	efi_char16_t *name = NULL;
 	int rv;
 
 	getnextvariablename = (struct efi_getnextvariablename
@@ -509,7 +513,7 @@  static long efi_runtime_get_nexthighmonocount(unsigned long arg)
 	struct efi_getnexthighmonotoniccount __user *getnexthighmonotoniccount;
 	struct efi_getnexthighmonotoniccount getnexthighmonotoniccount_local;
 	efi_status_t status;
-	uint32_t count;
+	u32 count;
 
 	getnexthighmonotoniccount = (struct
 			efi_getnexthighmonotoniccount __user *)arg;
@@ -542,7 +546,7 @@  static long efi_runtime_query_variableinfo(unsigned long arg)
 	struct efi_queryvariableinfo __user *queryvariableinfo;
 	struct efi_queryvariableinfo queryvariableinfo_local;
 	efi_status_t status;
-	uint64_t max_storage, remaining, max_size;
+	u64 max_storage, remaining, max_size;
 
 	queryvariableinfo = (struct efi_queryvariableinfo __user *)arg;
 
@@ -578,7 +582,7 @@  static long efi_runtime_query_capsulecaps(unsigned long arg)
 	struct efi_querycapsulecapabilities caps;
 	efi_capsule_header_t *capsules;
 	efi_status_t status;
-	uint64_t max_size;
+	u64 max_size;
 	int i, reset_type;
 	int rv;
 
diff --git a/efi_runtime/efi_runtime.h b/efi_runtime/efi_runtime.h
index 9167688..b3da40e 100644
--- a/efi_runtime/efi_runtime.h
+++ b/efi_runtime/efi_runtime.h
@@ -25,73 +25,73 @@ 
 #include <linux/efi.h>
 
 struct efi_getvariable {
-	uint16_t	*variable_name;
+	efi_char16_t	*variable_name;
 	efi_guid_t	*vendor_guid;
-	uint32_t	*attributes;
-	uint64_t	*data_size;
+	u32		*attributes;
+	unsigned long	*data_size;
 	void		*data;
-	uint64_t	*status;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_setvariable {
-	uint16_t	*variable_name;
+	efi_char16_t	*variable_name;
 	efi_guid_t	*vendor_guid;
-	uint32_t	attributes;
-	uint64_t	data_size;
+	u32		attributes;
+	unsigned long	data_size;
 	void		*data;
-	uint64_t	*status;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_getnextvariablename {
-	uint64_t	*variable_name_size;
-	uint16_t	*variable_name;
+	unsigned long	*variable_name_size;
+	efi_char16_t	*variable_name;
 	efi_guid_t	*vendor_guid;
-	uint64_t	*status;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_queryvariableinfo {
-	uint32_t	attributes;
-	uint64_t	*maximum_variable_storage_size;
-	uint64_t	*remaining_variable_storage_size;
-	uint64_t	*maximum_variable_size;
-	uint64_t	*status;
+	u32		attributes;
+	u64		*maximum_variable_storage_size;
+	u64		*remaining_variable_storage_size;
+	u64		*maximum_variable_size;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_gettime {
-	efi_time_t		*time;
-	efi_time_cap_t		*capabilities;
-	uint64_t		*status;
+	efi_time_t	*time;
+	efi_time_cap_t	*capabilities;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_settime {
-	efi_time_t		*time;
-	uint64_t		*status;
+	efi_time_t	*time;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_getwakeuptime {
-	uint8_t		*enabled;
-	uint8_t		*pending;
+	efi_bool_t	*enabled;
+	efi_bool_t	*pending;
 	efi_time_t	*time;
-	uint64_t	*status;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_setwakeuptime {
-	uint8_t		enabled;
+	efi_bool_t	enabled;
 	efi_time_t	*time;
-	uint64_t	*status;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_getnexthighmonotoniccount {
-	uint32_t	*high_count;
-	uint64_t	*status;
+	u32		*high_count;
+	efi_status_t	*status;
 } __packed;
 
 struct efi_querycapsulecapabilities {
 	efi_capsule_header_t	**capsule_header_array;
-	uint64_t		capsule_count;
-	uint64_t		*maximum_capsule_size;
+	unsigned long		capsule_count;
+	u64			*maximum_capsule_size;
 	int			*reset_type;
-	uint64_t		*status;
+	efi_status_t		*status;
 } __packed;
 
 /* ioctl calls that are permitted to the /dev/efi_runtime interface. */