audk/MdeModulePkg/Universal/Disk
Hao Wu e33257215b MdeModulePkg PartitionDxe: Add Re-entry handling logic for BindingStop
There are scenario when the BindingStop service of PartitionDxe driver be
re-entered.

An example will be ejecting a DVD from a SATA DVDROM and then run
"reconnect -r" under shell. In this specific case, part of the calling
stack will be:

PartitionDriverBindingStop() (PartitionDxe) ->
Stop first child handle (PartitionDxe) ->
ScsiDiskFlushBlocksEx() (ScsiDiskDxe) ->
A media change is detected (ScsiDiskDxe) ->
Reinstall of BlockIO(2) protocols (ScsiDiskDxe) ->
Entering PartitionDriverBindingStop() again (PartitionDxe) ->
Potential risk of referencing already stopped child handle (PartitionDxe)
...

The current code has potential issue of referencing of already stopped
child handle. This commit adds re-entry handling logic to resolve such
issue.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-03-29 15:50:01 +08:00
..
CdExpressPei MdeModulePkg: Convert all .uni files to utf-8 2015-12-15 04:56:23 +00:00
DiskIoDxe MdeModulePkg DiskIoDxe: Media status check not be done at DiskIo level 2016-03-29 13:39:13 +08:00
PartitionDxe MdeModulePkg PartitionDxe: Add Re-entry handling logic for BindingStop 2016-03-29 15:50:01 +08:00
RamDiskDxe MdeModulePkg/RamDiskDxe: Fix typo in HII message 2016-03-24 20:48:40 +08:00
UnicodeCollation/EnglishDxe MdeModulePkg: Convert all .uni files to utf-8 2015-12-15 04:56:23 +00:00