All of lore.kernel.org
 help / color / mirror / Atom feed
From: joeyli <jlee@suse.com>
To: Matt Fleming <matt@codeblueprint.co.uk>
Cc: "Lee, Chun-Yi" <joeyli.kernel@gmail.com>,
	linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-pm@vger.kernel.org, "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Matthew Garrett <matthew.garrett@nebula.com>,
	Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>,
	Josh Boyer <jwboyer@redhat.com>, Vojtech Pavlik <vojtech@suse.cz>,
	Matt Fleming <matt.fleming@intel.com>,
	Jiri Kosina <jkosina@suse.cz>, "H. Peter Anvin" <hpa@zytor.com>,
	Ingo Molnar <mingo@redhat.com>
Subject: Re: [PATCH v2 08/16] x86/efi: Carrying hibernation key by setup data
Date: Thu, 27 Aug 2015 17:28:26 +0800	[thread overview]
Message-ID: <20150827092826.GD27415@linux-rxt1.site> (raw)
In-Reply-To: <20150821124026.GB3310@codeblueprint.co.uk>

On Fri, Aug 21, 2015 at 01:40:26PM +0100, Matt Fleming wrote:
> On Tue, 11 Aug, at 02:16:28PM, Lee, Chun-Yi wrote:
> > For forwarding hibernation key from EFI stub to boot kernel, this patch
> > allocates setup data for carrying hibernation key, size and the status
> > of efi operating.
>  
> This could do with some more information, and include that the key is
> used to validate hibernate images.
> 
> But now that I think about it, is there a reason this patch hasn't
> been merged with patch 6? The memory leak I mentioned in patch 6
> becomes a non-issue in this one, so it would be good if these two
> could be squashed together.
>

OK, I will merge this patch with patch 6.

Actually the sequence of patches are from the order of my developing.
And, the purpose of code in this patch a bit different with patch 6,
so I didn't merge them together.
   
> > Reviewed-by: Jiri Kosina <jkosina@suse.com>
> > Tested-by: Jiri Kosina <jkosina@suse.com>
> > Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
> > ---
> >  arch/x86/boot/compressed/eboot.c      | 26 +++++++++++++++++++++++---
> >  arch/x86/include/uapi/asm/bootparam.h |  1 +
> >  2 files changed, 24 insertions(+), 3 deletions(-)
> > 
> > diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
> > index 463aa9b..c838d09 100644
> > --- a/arch/x86/boot/compressed/eboot.c
> > +++ b/arch/x86/boot/compressed/eboot.c
> > @@ -1394,18 +1394,22 @@ static void setup_hibernation_keys(struct boot_params *params)
> >  {
> >  	unsigned long key_size;
> >  	unsigned long attributes;
> > +	struct setup_data *setup_data, *hibernation_setup_data;
> >  	struct hibernation_keys *keys;
> > +	unsigned long size = 0;
> >  	efi_status_t status;
> 
> One thing to be aware of is that eboot.c has mainly used the
> "reverse-christmas-tree" style of variable declarations, with longer
> lines first, and shorter ones following. I haven't mentioned it before
> because none of your changes seemed to be too different (and it's not
> a tree-wide convention), but the above setup_data line goes a bit too
> far.
> 
> Could you try and keep them ordered, longest line first?
> 

Sure, sorry for I didn't aware that before.

> >  
> >  	/* Allocate setup_data to carry keys */
> > +	size = sizeof(struct setup_data) + sizeof(struct hibernation_keys);
> >  	status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
> > -				sizeof(struct hibernation_keys), &keys);
> > +				size, &hibernation_setup_data);
> >  	if (status != EFI_SUCCESS) {
> >  		efi_printk(sys_table, "Failed to alloc mem for hibernation keys\n");
> >  		return;
> >  	}
> >  
> > -	memset(keys, 0, sizeof(struct hibernation_keys));
> > +	memset(hibernation_setup_data, 0, size);
> > +	keys = (struct hibernation_keys *) hibernation_setup_data->data;
> >  
> >  	status = efi_call_early(get_variable, HIBERNATION_KEY,
> >  				&EFI_HIBERNATION_GUID, &attributes,
> > @@ -1419,7 +1423,8 @@ static void setup_hibernation_keys(struct boot_params *params)
> >  		if (status == EFI_SUCCESS) {
> >  			efi_printk(sys_table, "Cleaned existing hibernation key\n");
> >  			status = EFI_NOT_FOUND;
> > -		}
> > +		} else
> > +			goto clean_fail;
> 
> Please add braces for the 'else' clause. Also, please include a
> comment stating that the reason you jump to the label instead of
> returning is so that the EFI status error code can be recorded in
> hibernation_setup_data.
>

Thanks for suggestions, I will modify it.
 
> >  	}
> >  
> >  	if (status != EFI_SUCCESS) {
> > @@ -1436,6 +1441,21 @@ static void setup_hibernation_keys(struct boot_params *params)
> >  		if (status != EFI_SUCCESS)
> >  			efi_printk(sys_table, "Failed to set hibernation key\n");
> >  	}
> > +
> > +clean_fail:
> > +	hibernation_setup_data->type = SETUP_HIBERNATION_KEYS;
> > +	hibernation_setup_data->len = sizeof(struct hibernation_keys);
> > +	hibernation_setup_data->next = 0;
> > +	keys->hkey_status = efi_status_to_err(status);
> > +
> > +	setup_data = (struct setup_data *)params->hdr.setup_data;
> > +	while (setup_data && setup_data->next)
> > +		setup_data = (struct setup_data *)setup_data->next;
> > +
> > +	if (setup_data)
> > +		setup_data->next = (unsigned long)hibernation_setup_data;
> > +	else
> > +		params->hdr.setup_data = (unsigned long)hibernation_setup_data;
> 
> This label name is a little confusing because you reach it both when
> the EFI boot variable was successfully created and when a bogus EFI
> variable failed to be deleted, i.e. it's not always reached because of
> a failure.
> 
> How about 'setup' or simply 'out' ?
>

I will change the label to 'setup' that match with setting setup_data.
 
> -- 
> Matt Fleming, Intel Open Source Technology Center


Thanks a lot!
Joey Lee

  reply	other threads:[~2015-08-27  9:28 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-11  6:16 [PATCH v2 00/16] Signature verification of hibernate snapshot Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 01/16] PM / hibernate: define HMAC algorithm and digest size of hibernation Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 02/16] x86/efi: Add get and set variable to EFI services pointer table Lee, Chun-Yi
     [not found]   ` <1439273796-25359-3-git-send-email-jlee-IBi9RG/b67k@public.gmane.org>
2015-08-19 16:35     ` Matt Fleming
2015-08-19 16:35       ` Matt Fleming
2015-08-11  6:16 ` [PATCH v2 03/16] x86/boot: Public getting random boot function Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 04/16] x86/efi: Generating random number in EFI stub Lee, Chun-Yi
2015-08-20 14:12   ` Matt Fleming
     [not found]     ` <20150820141221.GC2567-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2015-08-27  4:06       ` joeyli
2015-08-27  4:06         ` joeyli
2015-08-11  6:16 ` [PATCH v2 05/16] x86/efi: Get entropy through EFI random number generator protocol Lee, Chun-Yi
2015-08-20 14:47   ` Matt Fleming
2015-08-27  4:51     ` joeyli
     [not found]   ` <1439273796-25359-6-git-send-email-jlee-IBi9RG/b67k@public.gmane.org>
2015-08-20 20:26     ` Matt Fleming
2015-08-20 20:26       ` Matt Fleming
     [not found]       ` <20150820202620.GF2567-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2015-08-27  6:17         ` joeyli
2015-08-27  6:17           ` joeyli
2015-08-11  6:16 ` [PATCH v2 06/16] x86/efi: Generating random HMAC key for siging hibernate image Lee, Chun-Yi
2015-08-20 20:40   ` Matt Fleming
2015-08-27  9:04     ` joeyli
     [not found]       ` <20150827090452.GB27415-empE8CJ7fzk2xCFIczX1Fw@public.gmane.org>
2015-09-09 12:15         ` Matt Fleming
2015-09-09 12:15           ` Matt Fleming
2015-09-13  2:47           ` joeyli
2015-08-11  6:16 ` [PATCH v2 07/16] efi: Make efi_status_to_err() public Lee, Chun-Yi
2015-08-20 15:07   ` Matt Fleming
     [not found]     ` <20150820150706.GE2567-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2015-08-27  9:06       ` joeyli
2015-08-27  9:06         ` joeyli
2015-08-11  6:16 ` [PATCH v2 08/16] x86/efi: Carrying hibernation key by setup data Lee, Chun-Yi
     [not found]   ` <1439273796-25359-9-git-send-email-jlee-IBi9RG/b67k@public.gmane.org>
2015-08-15 17:07     ` Pavel Machek
2015-08-15 17:07       ` Pavel Machek
2015-08-16  5:28       ` joeyli
2015-08-16  5:28         ` joeyli
2015-08-16 21:23       ` Jiri Kosina
2015-08-16 21:23         ` Jiri Kosina
2015-08-17  6:54         ` Nigel Cunningham
2015-08-21 12:40   ` Matt Fleming
2015-08-27  9:28     ` joeyli [this message]
2015-08-11  6:16 ` [PATCH v2 09/16] PM / hibernate: Reserve hibernation key and erase footprints Lee, Chun-Yi
2015-08-13  2:45   ` Chen, Yu C
2015-08-13  2:45     ` Chen, Yu C
2015-08-13  3:25     ` joeyli
2015-08-13  3:25       ` joeyli
2015-08-13 14:33   ` joeyli
2015-08-13 14:33     ` joeyli
     [not found]   ` <1439273796-25359-10-git-send-email-jlee-IBi9RG/b67k@public.gmane.org>
2015-08-21 13:27     ` Matt Fleming
2015-08-21 13:27       ` Matt Fleming
2015-08-27 10:21       ` joeyli
2015-09-09 12:24         ` Matt Fleming
     [not found]           ` <20150909122408.GE4973-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2015-09-13  2:58             ` joeyli
2015-09-13  2:58               ` joeyli
2015-08-11  6:16 ` [PATCH v2 10/16] PM / hibernate: Generate and verify signature of hibernate snapshot Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 11/16] PM / hibernate: Avoid including hibernation key to hibernate image Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 12/16] PM / hibernate: Forward signature verifying result and key to image kernel Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 13/16] PM / hibernate: Add configuration to enforce signature verification Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 14/16] PM / hibernate: Allow user trigger hibernation key re-generating Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 15/16] PM / hibernate: Bypass verification logic on legacy BIOS Lee, Chun-Yi
2015-08-11  6:16 ` [PATCH v2 16/16] PM / hibernate: Document signature verification of hibernate snapshot Lee, Chun-Yi

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=20150827092826.GD27415@linux-rxt1.site \
    --to=jlee@suse.com \
    --cc=hpa@zytor.com \
    --cc=jkosina@suse.cz \
    --cc=joeyli.kernel@gmail.com \
    --cc=jwboyer@redhat.com \
    --cc=len.brown@intel.com \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=matt.fleming@intel.com \
    --cc=matt@codeblueprint.co.uk \
    --cc=matthew.garrett@nebula.com \
    --cc=mingo@redhat.com \
    --cc=pavel@ucw.cz \
    --cc=rjw@rjwysocki.net \
    --cc=vojtech@suse.cz \
    /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.