]> git.baikalelectronics.ru Git - kernel.git/commit
libnvdimm/label: Clear 'updating' flag after label-set update
authorDan Williams <dan.j.williams@intel.com>
Tue, 15 Jan 2019 18:47:00 +0000 (10:47 -0800)
committerDan Williams <dan.j.williams@intel.com>
Tue, 15 Jan 2019 18:47:00 +0000 (10:47 -0800)
commit7ea696022380c76e3887078bd59630d80053faea
treed6b0652b2d68adc6273eb146e364a5a489345eb8
parent8b5c1a1b081cff38bca27a6abe1da0f1accff3a0
libnvdimm/label: Clear 'updating' flag after label-set update

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: 782b6cc79e49 ("libnvdimm: write pmem label set")
Cc: <stable@vger.kernel.org>
Cc: Kelly Couch <kelly.j.couch@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/label.c