public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Jin, Eric" <eric.jin@intel.com>
To: Supreeth Venkatesh <supreeth.venkatesh@arm.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Jin, Eric" <eric.jin@intel.com>
Subject: Re: [edk2-test][Patch 1/1] uefi-sct/SctPkg:Fix flaw in BBTestCreateEventEx_Func_Sub3
Date: Sat, 9 Mar 2019 03:29:33 +0000	[thread overview]
Message-ID: <DA72DC7456565B47808A57108259571F63768ED8@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <042f0558da5483ac6e95189a5bded172b28b914b.camel@arm.com>

Supreeth,

Thank for the comment and add buffer layout description in committed code for better readable. Thanks.

Best Regards
Eric

-----Original Message-----
From: Supreeth Venkatesh [mailto:supreeth.venkatesh@arm.com] 
Sent: Friday, March 8, 2019 5:25 AM
To: Jin, Eric <eric.jin@intel.com>; edk2-devel@lists.01.org
Subject: Re: [edk2-test][Patch 1/1] uefi-sct/SctPkg:Fix flaw in BBTestCreateEventEx_Func_Sub3

On Thu, 2019-03-07 at 09:23 +0800, Eric Jin wrote:
> The intention of test is to validate the signal sequence among three 
> events with gEfiEventMemoryMapChangeGuid and different Tpl. The call 
> of AllocatePages() causes memorymap change and trigger event Notify.
> But the test has an assumption that CreateEventEx() will not cause 
> memorymap change itself, which is not true. When memory pool is out of 
> resource, the memory service will be called to reserve more memory 
> pool.
> The fix is to filter the exception and only leave memorymap change 
> caused by AllocatePages() in test.
> 
> Cc: Supreeth Venkatesh <supreeth.venkatesh@arm.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Eric Jin <eric.jin@intel.com>


Minor comment about parenthesis to make multiple conditions priority more readable. Please fix this. With that
Reviewed-by: Supreeth Venkatesh <supreeth.venkatesh@arm.com>

> ---
>  uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestMain.h          
> |  5 +++--
>  uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestCreateEventEx.c
> | 26 +++++++++++++++-----------
>  uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/Support.c                                           
> | 23 +++++++++++++++++++++--
>  3 files changed, 39 insertions(+), 15 deletions(-)
> 
> diff --git a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestMain.h b/uefi- 
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestMain.h
> index 4431b5b22888..87451f9f9a91 100644
> --- a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestMain.h
> +++ b/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestMain.h
> @@ -1,7 +1,7 @@
>  /** @file
>  
>    Copyright 2006 - 2016 Unified EFI, Inc.<BR>
> -  Copyright (c) 2010 - 2016, Intel Corporation. All rights 
> reserved.<BR>
> +  Copyright (c) 2010 - 2019, Intel Corporation. All rights
> reserved.<BR>
>  
>    This program and the accompanying materials
>    are licensed and made available under the terms and conditions of 
> the BSD License @@ -49,7 +49,8 @@ Abstract:
>                   Status                                     \
>                   );
>  
> -#define MAX_TEST_EVENT_NUM 3
> +#define MAX_TEST_EVENT_NUM    3
> +#define SIGNAL_CONTEXT        0xAA    //To check the buffer content
> is modifed by exception or not
>  //
>  // Prototypes: Test Cases
>  //
> diff --git a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestCreateEventEx.c
> b/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestCreateEventEx.c
> index e2e173ab04c0..4a8e44e29b4e 100644
> --- a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestCreateEventEx.c
> +++ b/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/EventTimerTaskPriorityServicesBBTestCreateEventEx.c
> @@ -1,7 +1,7 @@
>  /** @file
>  
>    Copyright 2006 - 2016 Unified EFI, Inc.<BR>
> -  Copyright (c) 2010 - 2016, Intel Corporation. All rights 
> reserved.<BR>
> +  Copyright (c) 2010 - 2019, Intel Corporation. All rights
> reserved.<BR>
>  
>    This program and the accompanying materials
>    are licensed and made available under the terms and conditions of 
> the BSD License @@ -192,6 +192,10 @@ BBTestCreateEventEx_Func (
>    BBTestCreateEventEx_Func_Sub2 (StandardLib);  #endif
>  
> +  //
> +  // The test for the EFI_EVENT_GROUP_MEMORY_MAP_CHANGE  // This 
> + event group is notified by the system when the memory map
> has changed.
> +  //
>    BBTestCreateEventEx_Func_Sub3 (StandardLib);
>  
>    //
> @@ -599,12 +603,12 @@ BBTestCreateEventEx_Func_Sub1 (
>    UINTN               Buffer[MAX_TEST_EVENT_NUM +
> MAX_TEST_EVENT_NUM*2];
>  
>    //
> -  // Initialize Buffer
> +  // Initialize Buffer as SIGNAL_CONTEXT
>    //
>    for (Index = 0; Index < MAX_TEST_EVENT_NUM; Index ++) {
>      Buffer[Index] = Index;
> -    Buffer[Index + MAX_TEST_EVENT_NUM + Index] = (UINTN)(-1);
> -    Buffer[Index + MAX_TEST_EVENT_NUM + 1 + Index] = (UINTN)(-1);
> +    Buffer[Index + MAX_TEST_EVENT_NUM + Index] =
> (UINTN)(SIGNAL_CONTEXT);
> +    Buffer[Index + MAX_TEST_EVENT_NUM + 1 + Index] =
> (UINTN)(SIGNAL_CONTEXT);
>    }
>  
>    //
> @@ -755,12 +759,12 @@ BBTestCreateEventEx_Func_Sub2 (
>    UINTN               Buffer[MAX_TEST_EVENT_NUM +
> MAX_TEST_EVENT_NUM*2];
>  
>    //
> -  // Initialize Buffer
> +  // Initialize Buffer as SIGNAL_CONTEXT
>    //
>    for (Index = 0; Index < MAX_TEST_EVENT_NUM; Index ++) {
>      Buffer[Index] = Index;
> -    Buffer[Index + MAX_TEST_EVENT_NUM + Index] = (UINTN)(-1);
> -    Buffer[Index + MAX_TEST_EVENT_NUM + 1 + Index] = (UINTN)(-1);
> +    Buffer[Index + MAX_TEST_EVENT_NUM + Index] =
> (UINTN)(SIGNAL_CONTEXT);
> +    Buffer[Index + MAX_TEST_EVENT_NUM + 1 + Index] =
> (UINTN)(SIGNAL_CONTEXT);
>    }
>  
>    //
> @@ -914,12 +918,12 @@ BBTestCreateEventEx_Func_Sub3 (
>    UINTN               Buffer[MAX_TEST_EVENT_NUM +
> MAX_TEST_EVENT_NUM*2];
>  
>    //
> -  // Initialize Buffer
> +  // Initialize Buffer as SIGNAL_CONTEXT
>    //
>    for (Index = 0; Index < MAX_TEST_EVENT_NUM; Index ++) {
>      Buffer[Index] = Index;
> -    Buffer[Index + MAX_TEST_EVENT_NUM + Index] = (UINTN)(-1);
> -    Buffer[Index + MAX_TEST_EVENT_NUM + 1 + Index] = (UINTN)(-1);
> +    Buffer[Index + MAX_TEST_EVENT_NUM + Index] =
> (UINTN)(SIGNAL_CONTEXT);
> +    Buffer[Index + MAX_TEST_EVENT_NUM + 1 + Index] =
> (UINTN)(SIGNAL_CONTEXT);
>    }
>  
>    //
> @@ -974,7 +978,7 @@ BBTestCreateEventEx_Func_Sub3 (
>    }
>    
>    //
> -  // Install a configuration table at TPL_NOTIFY
> +  // Call AllocatePage to change the memorymap
>    //
>    OldTpl = gtBS->RaiseTPL (TPL_NOTIFY);
>    
> diff --git a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/Support.c b/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/Support.c
> index aa02383ed2c6..6013c75ff6cf 100644
> --- a/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/Support.c
> +++ b/uefi-
> sct/SctPkg/TestCase/UEFI/EFI/BootServices/EventTimerTaskPriorityServi
> ces/BlackBoxTest/Support.c
> @@ -1,7 +1,7 @@
>  /** @file
>  
>    Copyright 2006 - 2010 Unified EFI, Inc.<BR>
> -  Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2010 - 2019, Intel Corporation. All rights
> reserved.<BR>
>  
>    This program and the accompanying materials
>    are licensed and made available under the terms and conditions of 
> the BSD License @@ -64,10 +64,29 @@ NotifyFunctionTplEx(
>  
>      EventIndex = Buffer[0];
>  
> +    //
> +    // The special code check for the BBTestCreateEventEx_Func_Sub3
> +    // Besides AllocatePages(), CreateEventEx() may trigger the
> memorymap
> +    // change when it is out of resource in memory pool
> +    // Use SIGNAL_CONTEXT to block possible enter triggered by
> CreateEventEx
> +    //
> +    if (EventIndex != 2 && Buffer[4] == (UINTN)(SIGNAL_CONTEXT))
> +      return;
> +
> +    //
> +    // It is the code execution path as expect
> +    // To initial the Buffer to 0xFF
> +    //
> +    if (EventIndex == 2 && Buffer[1] == (UINTN)(SIGNAL_CONTEXT)) {
Priority order isnt readable. Better to add parenthesis.

> +      for (Index=1; Index<MAX_TEST_EVENT_NUM*2+1; Index++) {
> +        Buffer[Index] = (UINTN)(0xFF);
> +      }
> +    }
> +
>      Index = 3-EventIndex;
>  
>      while (1) {     
> -      if (Buffer[Index] == (UINTN)(-1)) {
> +      if (Buffer[Index] == (UINTN)(0xFF)) {
>          break;
>        } else {
>          Index += 2;


      reply	other threads:[~2019-03-09  3:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-07  1:23 [edk2-test][Patch 1/1] uefi-sct/SctPkg:Fix flaw in BBTestCreateEventEx_Func_Sub3 Eric Jin
2019-03-07 21:25 ` Supreeth Venkatesh
2019-03-09  3:29   ` Jin, Eric [this message]

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-list 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=DA72DC7456565B47808A57108259571F63768ED8@SHSMSX103.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox