]> git.proxmox.com Git - mirror_edk2.git/commit - MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
MdeModulePkg/UefiBootManagerLib: limit recursive call depth
authorHeyi Guo <heyi.guo@linaro.org>
Thu, 1 Mar 2018 02:39:32 +0000 (10:39 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Wed, 7 Mar 2018 06:26:04 +0000 (14:26 +0800)
commit72208a9a90b8c6cd5011ddf174ad01e567b67454
treec3c9ce3683cf7702c85b70a414d221a51f76ea70
parent61c1742ba15386f488cb452d8e0594467c7e3108
MdeModulePkg/UefiBootManagerLib: limit recursive call depth

Function BmRepairAllControllers may recursively call itself if some
driver health protocol returns EfiDriverHealthStatusReconnectRequired.
However, driver health protocol of some buggy third party driver may
always return such status even after one and another reconnect. The
endless iteration will cause stack overflow and then system exception,
and it may be not easy to find that the exception is actually caused
by stack overflow.

So we limit the number of reconnect retry to 10 to improve code
robustness, and DEBUG_CODE is moved ahead before recursive repair to
track the repair result.

We also remove a duplicated declaration of BmRepairAllControllers() in
InternalBm.h in this patch, for it is only a trivial change.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c
MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h