OSDN Git Service

libnvdimm/security: the 'security' attr never show 'overwrite' state
authorJane Chu <jane.chu@oracle.com>
Mon, 3 Aug 2020 22:41:38 +0000 (16:41 -0600)
committerVishal Verma <vishal.l.verma@intel.com>
Tue, 4 Aug 2020 00:54:13 +0000 (18:54 -0600)
commit7c02d53dfe4db08cd7b4d4be8c7f1b801cf8b899
treecdbcda1808c3244e1fcdd60631b1c050e6e9792a
parentdad42d17558f316e9e807698cd4207359b636084
libnvdimm/security: the 'security' attr never show 'overwrite' state

'security' attribute displays the security state of an nvdimm.
During normal operation, the nvdimm state maybe one of 'disabled',
'unlocked' or 'locked'.  When an admin issues
  # ndctl sanitize-dimm nmem0 --overwrite
the attribute is expected to change to 'overwrite' until the overwrite
operation completes.

But tests on our systems show that 'overwrite' is never shown during
the overwrite operation. i.e.
  # cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/nmem0/security
  unlocked
the attribute remain 'unlocked' through out the operation, consequently
"ndctl wait-overwrite nmem0" command doesn't wait at all.

The driver tracks the state in 'nvdimm->sec.flags': when the operation
starts, it adds an overwrite bit to the flags; and when the operation
completes, it removes the bit. Hence security_show() should check the
'overwrite' bit first, in order to indicate the actual state when multiple
bits are set in the flags.

Link: https://lore.kernel.org/r/1596494499-9852-2-git-send-email-jane.chu@oracle.com
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jane Chu <jane.chu@oracle.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
drivers/nvdimm/dimm_devs.c