[U-Boot] [PATCH] disk: part_efi: fix regression due to incorrect buffer usage

Doug Anderson
2011-10-28T19:43:38Z

Acked-by: Doug Anderson <dianders@chromium.org>

...to be fair though, the regression appears to be caused by a mid-air
collision of Anton's change (f75dd584cdfe29dfdcfd424bb237b9238cfb8fe4) with
my change. His patch was committed on Oct 25th (though authored earlier).
When I submitted my patch on the Oct 19th against denx/master, I'm pretty
sure it was correct.

Thank you for finding / fixing! :)

-Doug

---

On Fri, Oct 28, 2011 at 12:21 PM, Stephen Warren <swarren@nvidia.com> wrote:

> Commit deb5ca80275e8cfa74d5680b41204e08a095eca5 "disk: part_efi: fix
> **pgpt_pte == NULL" modified the code to pass "&gpt_head" to
> is_gpt_valid() rather than the previous "gpt_head". However, gpt_head
> is a pointer to the buffer, not the actual buffer, since it was allocated
> using ALLOC_CACHE_ALIGN_BUFFER. This caused is_gpt_valid() to read the
> disk block onto the stack rather than into the buffer, causing the
> code to fail.
>
> This change reverts that portion of the commit mentioned above.
>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> disk/part_efi.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/disk/part_efi.c b/disk/part_efi.c
> index e7f2714..ddf80a7 100644
> --- a/disk/part_efi.c
> +++ b/disk/part_efi.c
> @@ -130,7 +130,7 @@ void print_part_efi(block_dev_desc_t * dev_desc)
> }
> /* This function validates AND fills in the GPT header and PTE */
> if (is_gpt_valid(dev_desc, GPT_PRIMARY_PARTITION_TABLE_LBA,
> - &(gpt_head), &gpt_pte) != 1) {
> + gpt_head, &gpt_pte) != 1) {
> printf("%s: *** ERROR: Invalid GPT ***\n", __func__);
> return;
> }
> @@ -169,7 +169,7 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc,
> int part,
>
> /* This function validates AND fills in the GPT header and PTE */
> if (is_gpt_valid(dev_desc, GPT_PRIMARY_PARTITION_TABLE_LBA,
> - &(gpt_head), &gpt_pte) != 1) {
> + gpt_head, &gpt_pte) != 1) {
> printf("%s: *** ERROR: Invalid GPT ***\n", __func__);
> return -1;
> }
> --
> 1.7.0.4
>
>