Branch: refs/heads/UDK2015
  Home:   https://github.com/tianocore/edk2
  Commit: 49680c684f7b0e3e77d7190943f842ca06b84c50
      
https://github.com/tianocore/edk2/commit/49680c684f7b0e3e77d7190943f842ca06b84c50
  Author: Hao Wu <hao.a...@intel.com>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
    M MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h

  Log Message:
  -----------
  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...@intel.com>
Reviewed-by: Feng Tian <feng.t...@intel.com>
(cherry picked from commit e33257215b984fd624cc51b33e9cc14d7321eab6)


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
edk2-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to