aboutsummaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efi_snp.c
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2011-05-03 18:52:56 +0100
committerMichael Brown <mcb30@ipxe.org>2011-05-03 18:55:05 +0100
commit0a71888792d20a7322ef8f4acb236f1b86c13c5f (patch)
tree9a4aeed52b5fcd1d324bfdf116ed154ac54e6555 /src/interface/efi/efi_snp.c
parent987b825b7f046e844a332d27497b4846cb23ba43 (diff)
downloadipxe-0a71888792d20a7322ef8f4acb236f1b86c13c5f.tar.gz
[efi] Ensure that each HII package list and formset has a unique GUID
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface/efi/efi_snp.c')
-rw-r--r--src/interface/efi/efi_snp.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/interface/efi/efi_snp.c b/src/interface/efi/efi_snp.c
index f40bfff94..bc6c09191 100644
--- a/src/interface/efi/efi_snp.c
+++ b/src/interface/efi/efi_snp.c
@@ -769,8 +769,8 @@ static EFI_GUID efi_hii_config_access_protocol_guid
static EFI_HII_DATABASE_PROTOCOL *efihii;
EFI_REQUIRE_PROTOCOL ( EFI_HII_DATABASE_PROTOCOL, &efihii );
-/** Local GUID used for our EFI SNP formset */
-#define EFI_SNP_FORMSET_GUID \
+/** Local base GUID used for our EFI SNP formset */
+#define EFI_SNP_FORMSET_GUID_BASE \
{ 0xc4f84019, 0x6dfd, 0x4a27, \
{ 0x9b, 0x94, 0xb7, 0x2e, 0x1f, 0xbc, 0xad, 0xca } }
@@ -815,7 +815,7 @@ struct efi_snp_formset {
.Length = sizeof ( efi_snp_formset ),
.Type = EFI_HII_PACKAGE_FORMS,
},
- .FormSet = EFI_IFR_FORM_SET ( EFI_SNP_FORMSET_GUID,
+ .FormSet = EFI_IFR_FORM_SET ( EFI_SNP_FORMSET_GUID_BASE,
EFI_SNP_FORMSET_TITLE,
EFI_SNP_FORMSET_HELP,
typeof ( efi_snp_formset.FormSet ),
@@ -992,6 +992,9 @@ efi_snp_package_list ( struct efi_snp_device *snpdev ) {
if ( ! package_list )
return NULL;
+ /* Create a unique GUID for this package list and formset */
+ efi_snp_formset.FormSet.FormSet.Guid.Data1++;
+
/* Populate package list */
memcpy ( &package_list->header.PackageListGuid,
&efi_snp_formset.FormSet.FormSet.Guid,