• D
    libnvdimm/label: Clear 'updating' flag after label-set update · 2b88d92e
    Dan Williams 提交于
    commit 966d23a006ca7b44ac8cf4d0c96b19785e0c3da0 upstream.
    
    The UEFI 2.7 specification sets expectations that the 'updating' flag is
    eventually cleared. To date, the libnvdimm core has never adhered to
    that protocol. The policy of the core matches the policy of other
    multi-device info-block formats like MD-Software-RAID that expect
    administrator intervention on inconsistent info-blocks, not automatic
    invalidation.
    
    However, some pre-boot environments may unfortunately attempt to "clean
    up" the labels and invalidate a set when it fails to find at least one
    "non-updating" label in the set. Clear the updating flag after set
    updates to minimize the window of vulnerability to aggressive pre-boot
    environments.
    
    Ideally implementations would not write to the label area outside of
    creating namespaces.
    
    Note that this only minimizes the window, it does not close it as the
    system can still crash while clearing the flag and the set can be
    subsequently deleted / invalidated by the pre-boot environment.
    
    Fixes: f524bf27 ("libnvdimm: write pmem label set")
    Cc: <stable@vger.kernel.org>
    Cc: Kelly Couch <kelly.j.couch@intel.com>
    Signed-off-by: NDan Williams <dan.j.williams@intel.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2b88d92e
label.c 31.5 KB