All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Domsch <Matt_Domsch@dell.com>
To: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: matthew.e.tolentino@intel.com, linux-kernel@vger.kernel.org,
	mactel-linux-devel@lists.sourceforge.net
Subject: Re: [PATCH] - make sure that EFI variable data size is always 64 bit
Date: Sun, 19 Mar 2006 15:29:01 -0600	[thread overview]
Message-ID: <20060319212901.GA30843@lists.us.dell.com> (raw)
In-Reply-To: <20060319184325.GA7605@srcf.ucam.org>

On Sun, Mar 19, 2006 at 06:43:25PM +0000, Matthew Garrett wrote:
> The EFI spec states that the data size of an EFI variable is 64 bits. 
> "unsigned long", on the other hand, isn't on IA32.
> 
> diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
> index bda5bce..488c24c 100644
> --- a/drivers/firmware/efivars.c
> +++ b/drivers/firmware/efivars.c
> @@ -110,7 +110,7 @@ static LIST_HEAD(efivar_list);
>  struct efi_variable {
>  	efi_char16_t  VariableName[1024/sizeof(efi_char16_t)];
>  	efi_guid_t    VendorGuid;
> -	unsigned long DataSize;
> +	__u64	      DataSize;
>  	__u8          Data[1024];
>  	efi_status_t  Status;
>  	__u32         Attributes;
> diff --git a/include/linux/efi.h b/include/linux/efi.h
> index 9e97bc2..3f0a179 100644
> --- a/include/linux/efi.h
> +++ b/include/linux/efi.h
> @@ -163,7 +163,7 @@ typedef efi_status_t efi_get_wakeup_time
>  					    efi_time_t *tm);
>  typedef efi_status_t efi_set_wakeup_time_t (efi_bool_t enabled, efi_time_t *tm);
>  typedef efi_status_t efi_get_variable_t (efi_char16_t *name, efi_guid_t *vendor, u32 *attr,
> -					 unsigned long *data_size, void *data);
> +					 __u64 *data_size, void *data);
>  typedef efi_status_t efi_get_next_variable_t (unsigned long *name_size, efi_char16_t *name,
>  					      efi_guid_t *vendor);
>  typedef efi_status_t efi_set_variable_t (efi_char16_t *name, efi_guid_t *vendor, 



NAK.  efibootmgr, the main userspace consumer of this struct, also
thinks this is an "unsigned long".   This wasn't specified up through
EFI 1.10, which I complained about (it, and efi_status_t being defined
as an unsigned long) both force userspace consumers of this struct to
match size of the kernel (i.e. compile a 32-bit binary for 32-bit kernel,
and compile a 64-bit binary for 64-bit kernel).

-Matt


-- 
Matt Domsch
Software Architect
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com

  reply	other threads:[~2006-03-19 21:29 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-19 18:43 [PATCH] - make sure that EFI variable data size is always 64 bit Matthew Garrett
2006-03-19 21:29 ` Matt Domsch [this message]
2006-03-19 21:33   ` Matthew Garrett
2006-03-19 22:49     ` Matt Domsch
2006-03-19 23:17       ` Matthew Garrett
2006-03-20  8:54 ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060319212901.GA30843@lists.us.dell.com \
    --to=matt_domsch@dell.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mactel-linux-devel@lists.sourceforge.net \
    --cc=matthew.e.tolentino@intel.com \
    --cc=mjg59@srcf.ucam.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.