Merge 5.0-rc6 into driver-core-next
We need the debugfs fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
这个提交包含在:
@@ -26,6 +26,12 @@ static int nvdimm_probe(struct device *dev)
|
||||
struct nvdimm_drvdata *ndd;
|
||||
int rc;
|
||||
|
||||
rc = nvdimm_security_setup_events(dev);
|
||||
if (rc < 0) {
|
||||
dev_err(dev, "security event setup failed: %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = nvdimm_check_config_data(dev);
|
||||
if (rc) {
|
||||
/* not required for non-aliased nvdimm, ex. NVDIMM-N */
|
||||
|
@@ -578,13 +578,25 @@ struct nvdimm *__nvdimm_create(struct nvdimm_bus *nvdimm_bus,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__nvdimm_create);
|
||||
|
||||
int nvdimm_security_setup_events(struct nvdimm *nvdimm)
|
||||
static void shutdown_security_notify(void *data)
|
||||
{
|
||||
nvdimm->sec.overwrite_state = sysfs_get_dirent(nvdimm->dev.kobj.sd,
|
||||
"security");
|
||||
struct nvdimm *nvdimm = data;
|
||||
|
||||
sysfs_put(nvdimm->sec.overwrite_state);
|
||||
}
|
||||
|
||||
int nvdimm_security_setup_events(struct device *dev)
|
||||
{
|
||||
struct nvdimm *nvdimm = to_nvdimm(dev);
|
||||
|
||||
if (nvdimm->sec.state < 0 || !nvdimm->sec.ops
|
||||
|| !nvdimm->sec.ops->overwrite)
|
||||
return 0;
|
||||
nvdimm->sec.overwrite_state = sysfs_get_dirent(dev->kobj.sd, "security");
|
||||
if (!nvdimm->sec.overwrite_state)
|
||||
return -ENODEV;
|
||||
return 0;
|
||||
return -ENOMEM;
|
||||
|
||||
return devm_add_action_or_reset(dev, shutdown_security_notify, nvdimm);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nvdimm_security_setup_events);
|
||||
|
||||
|
@@ -54,12 +54,12 @@ struct nvdimm {
|
||||
};
|
||||
|
||||
static inline enum nvdimm_security_state nvdimm_security_state(
|
||||
struct nvdimm *nvdimm, bool master)
|
||||
struct nvdimm *nvdimm, enum nvdimm_passphrase_type ptype)
|
||||
{
|
||||
if (!nvdimm->sec.ops)
|
||||
return -ENXIO;
|
||||
|
||||
return nvdimm->sec.ops->state(nvdimm, master);
|
||||
return nvdimm->sec.ops->state(nvdimm, ptype);
|
||||
}
|
||||
int nvdimm_security_freeze(struct nvdimm *nvdimm);
|
||||
#if IS_ENABLED(CONFIG_NVDIMM_KEYS)
|
||||
|
@@ -250,6 +250,7 @@ long nvdimm_clear_poison(struct device *dev, phys_addr_t phys,
|
||||
void nvdimm_set_aliasing(struct device *dev);
|
||||
void nvdimm_set_locked(struct device *dev);
|
||||
void nvdimm_clear_locked(struct device *dev);
|
||||
int nvdimm_security_setup_events(struct device *dev);
|
||||
#if IS_ENABLED(CONFIG_NVDIMM_KEYS)
|
||||
int nvdimm_security_unlock(struct device *dev);
|
||||
#else
|
||||
|
在新工单中引用
屏蔽一个用户