From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::244; helo=mail-wr0-x244.google.com; envelope-from=marcandre.lureau@gmail.com; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x244.google.com (mail-wr0-x244.google.com [IPv6:2a00:1450:400c:c0c::244]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 66DDE2243694D for ; Mon, 5 Mar 2018 05:59:32 -0800 (PST) Received: by mail-wr0-x244.google.com with SMTP id z12so17403968wrg.4 for ; Mon, 05 Mar 2018 06:05:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=910b+KREIhnOOI3+FxhORgam2hYQqj6qF77Tu3h9hXc=; b=ZcBs/LEurOKkyMd8YkUapMKPsMs8/buqioexyBtWM23XjlJu1cCv9FCGI8h2knkfRN XQmXxeA7O0G8IRK1fOMkX+7K04urwSI+FQL/8yokaWJy+6s4FkNBHg59vztvZHjOrjgp +vMmOW3FmJuHVh0Hwxjt0cCZ2SW9eIHv5cO0Oz/KEceaalBr/xhXJTTHMLw2OPxH1y9t Na0jVafc5SQigUPYL8aTXAU/0M9chphH6znxoQeqKp/jr9QFONd40g0tubQ/Nd2RcBtw +bh3MYVX6s9f37uZg9MKE1oKnWSqustaItQ79p5DU8H0vOs1uTBxZhn1Z/R5AeNevvTS Chrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=910b+KREIhnOOI3+FxhORgam2hYQqj6qF77Tu3h9hXc=; b=Y9Bfg6gUnrGW/8sI0fsNQDrDgoLE6ZXEPMvDs3Kjd/neCYTjRNI1Ysm2YTKjIeMrje P9d0LqCBj258xd2q22scVHRFpa/Ev9LVZemvbxGDlP2SrJ2h136zYQHb/SNLg+AXrAkm 9CU4qwhzxb6eUoEb9l8rYFkrGwARK4VeeE5hRhjnVBkQXxQKgp7pOC5xIq9P84cNWbXi RWCOteiJ8sULT6WzLDhU65GkPHap7hrQnjvbmeoV4Ym9AIwIX+KHbGlInYoBmjdI5rxw PIobiGPJbIM9kIlgRJLya0K44r/iqxiFM3B1MekuwhHWSpXx7jC8x9FVEupxdFRIt2Jq 5YZw== X-Gm-Message-State: APf1xPAPZLfZOF4IiE1y26+UVPsDYd8HTSc5ipyRlGClQ0TIRcq4m6nT EWODamJLvDEjCCWkp1A7Y4FZPAqMxuBhARJevcM= X-Google-Smtp-Source: AG47ELu2vuYTbzRpTB2JbjfFnKY1u2jgbWfu69dP0eWm2Oty3X4mXQwfvd2jarvrHLLxGLH9kRhhscKP98bg41+f374= X-Received: by 10.223.171.88 with SMTP id r24mr12763426wrc.194.1520258743829; Mon, 05 Mar 2018 06:05:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.185.67 with HTTP; Mon, 5 Mar 2018 06:05:43 -0800 (PST) In-Reply-To: <91D51528-C2CA-41DF-921F-DBD5C2EC028C@apple.com> References: <20180223132311.26555-1-marcandre.lureau@redhat.com> <20180223132311.26555-4-marcandre.lureau@redhat.com> <91D51528-C2CA-41DF-921F-DBD5C2EC028C@apple.com> From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= Date: Mon, 5 Mar 2018 15:05:43 +0100 Message-ID: To: Andrew Fish Cc: edk2-devel@lists.01.org, QEMU , Javier Martinez Canillas , Peter Jones , Jiewen Yao , Laszlo Ersek Subject: Re: [PATCH 3/7] HACK: HobLib: workaround infinite loop X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Mar 2018 13:59:33 -0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi On Fri, Feb 23, 2018 at 8:45 PM, Andrew Fish wrote: > > >> On Feb 23, 2018, at 5:23 AM, marcandre.lureau@redhat.com wrote: >> >> From: Marc-Andr=C3=A9 Lureau >> >> Without this hack, GetNextHob() loops infinitely with the next patch. >> I don't understand the reason. >> >> The loop is triggered by the GetFirstGuidHob (&gTpmErrorHobGuid) call. >> >> CC: Laszlo Ersek >> CC: Stefan Berger >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Marc-Andr=C3=A9 Lureau >> --- >> MdePkg/Library/PeiHobLib/HobLib.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/MdePkg/Library/PeiHobLib/HobLib.c b/MdePkg/Library/PeiHobLi= b/HobLib.c >> index 5c0eeb992f..ed3c5fbd6d 100644 >> --- a/MdePkg/Library/PeiHobLib/HobLib.c >> +++ b/MdePkg/Library/PeiHobLib/HobLib.c >> @@ -89,6 +89,10 @@ GetNextHob ( >> if (Hob.Header->HobType =3D=3D Type) { >> return Hob.Raw; >> } >> + if (GET_HOB_LENGTH (HobStart) =3D=3D 0) { > > As Laszlo points out this error condition is likely memory corruption. Th= us it would be better to check for all know illegal values? > > if (GET_HOB_LENGTH(HobStart) < sizeof (EFI_HOB_GENERIC_HEADER) > Thanks, I have adjusted the check. With manual calls and printf (I don't know a better way to debug ovmf ;), I try to locate the issue. It's somehow related to RegisterForShadow(). The "corruption" seems to happen during the second call. After the PeiLoadImage(...,PEIM_STATE_REGISTER_FOR_SHADOW,..), right before calling PeimEntryPoint(), a GetFirstGuidHob() succeed, but inside the function, it fails (with the same arguments). Right after it succeeds again... The PeimEntryPoint() is not the Tcg2Pei:PeimEntryMA(), I suppose there is some kind of wrapping code, but I fail to find where. Any idea? thanks for your help --=20 Marc-Andr=C3=A9 Lureau