]> git.proxmox.com Git - mirror_edk2.git/commit
NetworkPkg/HttpBootDxe: Fix for the issue that the HTTP boot option can't be booted...
authorSunny Wang <sunnywang@hpe.com>
Thu, 5 May 2016 02:05:00 +0000 (10:05 +0800)
committerFu Siyuan <siyuan.fu@intel.com>
Fri, 6 May 2016 01:00:57 +0000 (09:00 +0800)
commit44a7d08b5a935347a35507fb5db42659a96b3452
tree9ea9bb019696e72a462ae9f79adbd50cd518c70c
parent9cc0168a70052638ffb40b09369a636d4fa84b36
NetworkPkg/HttpBootDxe: Fix for the issue that the HTTP boot option can't be booted more than once

This issue can be reproduced by the following steps:
1. Boot to HTTP boot option and the boot file is a ISO file like Ubuntu PE image.
2. Exit from boot option (GRUB) and then back to boot manager menu.
3. Boot to the same HTTP boot option again or a HTTP boot option pointing to the same HTTP ISO file. It will fail to boot.
Root cause:
When booting a HTTP boot option, the HTTP boot driver will save the Boot File's information in its private data as cache data for skipping the Boot file discovery from next time boot. However, the cache data doesn't include ImageType data, which would cause HTTP boot driver using the invalid ImageType (ImageTypeMax) and then fail to boot the cached boot file. In other words, for the second time boot, the HttpBootLoadFile() doesn't update ImageType (it returns a valid ImageType), which causes that the HttpBootDxeLoadFile() skips to Register a RAM Disk for downloaded HTTP ISO file and then BDS code can't find the RAM disk to boot.
Solution:
Save ImageType to private data for next time HTTP boot.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Sunny Wang <sunnywang@hpe.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
NetworkPkg/HttpBootDxe/HttpBootDxe.h
NetworkPkg/HttpBootDxe/HttpBootImpl.c