mirror of https://gitee.com/openkylin/linux.git
libnvdimm v5.0-rc3
* Fix driver initialization crash due to the inability to report an 'error' state for a DIMM's security capability. * Build warning fix for little-endian ARM64 builds * Fix a potential race between the EDAC driver's usage of the NFIT SMBIOS id for a DIMM and the driver shutdown path. * A small collection of one-line benign cleanups for duplicate variable assignments, a duplicate header include and a mis-typed function argument. -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJcQ4vDAAoJEB7SkWpmfYgCwrYP/iCZZVWz7TlP8u73alEXtw4G gPPQHb+n0Y5DQOMZCu1jFfKvkZzcIq4Wp6277Ht6DEREzoobyswRM8G1EKOwbzUM J9D0Hm8XCy9Z6v3MpH/VASMowjQkClL/5xy8rlJdZMjprjDFqq3t4M/sBARsaeZv xldAcNdbAQWq6HEebLZXja/AF8Ex0o59Z/w3oJ1Ds98mGPjGPUejV9cnpgCOHGZc rfB9DZdEKf4CUEqZmlRI253yhR4iHtzKJQGMadQVhcLdO/Jjc8DKxozOgxQOuWQu SvAv6t+tymGzPCUJg+pFROwemn3mB2fh3XMaueEY1biCZcj67Lml0H/zTewezsI7 CZ4ZUPypc9L50GIUYCyPkNuB7E6jXmMD6Vn7EEx1GwQTlZmRQ8WbTELLGGsNUfvI 55TqT0IbcnUhOXqKbaYql1Y7Z/yEmiBI1f5VdB9zXQKZ66dcgfgfVqLfhw7HUmmu j6J3xAtvcYX8x2EA75fdfr5mKUyrr1UAYG6bkActll0mRIHK4u2+ME4E4wmhZidG PlZV0sIy6EMDTbTyFP1N0P9FsG4DmK6mTATXFn/CqYMoW3TTuAlsWxhdtGMzhpur See6W4yJ0pT3wmzzPcOgPI4erntb7dQirwDjclw4qj/DnUegPKxP8UxXzFBH3gFV /wYYqXWh0cXa/Jq9YX3L =HCIs -----END PGP SIGNATURE----- Merge tag 'libnvdimm-fixes-5.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm Pull libnvdimm fixes from Dan Williams: "A crash fix, a build warning fix, a miscellaneous small cleanups. In case anyone is looking for them, there was a regression caught by testing that caused two patches to be dropped from this update. Those patches have been reworked and will soak for another week / re-target 5.0-rc4. - Fix driver initialization crash due to the inability to report an 'error' state for a DIMM's security capability. - Build warning fix for little-endian ARM64 builds - Fix a potential race between the EDAC driver's usage of the NFIT SMBIOS id for a DIMM and the driver shutdown path. - A small collection of one-line benign cleanups for duplicate variable assignments, a duplicate header include and a mis-typed function argument" * tag 'libnvdimm-fixes-5.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: libnvdimm/security: Fix nvdimm_security_state() state request selection acpi/nfit: Remove duplicate set nd_set in acpi_nfit_init_interleave_set() acpi/nfit: Fix race accessing memdev in nfit_get_smbios_id() libnvdimm/dimm: Fix security capability detection for non-Intel NVDIMMs nfit: Mark some functions as __maybe_unused ACPI/nfit: delete the function to_acpi_nfit_desc ACPI/nfit: delete the redundant header file
This commit is contained in:
commit
26caabbcd7
|
@ -26,7 +26,6 @@
|
|||
#include <acpi/nfit.h>
|
||||
#include "intel.h"
|
||||
#include "nfit.h"
|
||||
#include "intel.h"
|
||||
|
||||
/*
|
||||
* For readq() and writeq() on 32-bit builds, the hi-lo, lo-hi order is
|
||||
|
@ -78,12 +77,6 @@ const guid_t *to_nfit_uuid(enum nfit_uuids id)
|
|||
}
|
||||
EXPORT_SYMBOL(to_nfit_uuid);
|
||||
|
||||
static struct acpi_nfit_desc *to_acpi_nfit_desc(
|
||||
struct nvdimm_bus_descriptor *nd_desc)
|
||||
{
|
||||
return container_of(nd_desc, struct acpi_nfit_desc, nd_desc);
|
||||
}
|
||||
|
||||
static struct acpi_device *to_acpi_dev(struct acpi_nfit_desc *acpi_desc)
|
||||
{
|
||||
struct nvdimm_bus_descriptor *nd_desc = &acpi_desc->nd_desc;
|
||||
|
@ -419,7 +412,7 @@ static bool payload_dumpable(struct nvdimm *nvdimm, unsigned int func)
|
|||
int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
|
||||
unsigned int cmd, void *buf, unsigned int buf_len, int *cmd_rc)
|
||||
{
|
||||
struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc);
|
||||
struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc);
|
||||
struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
|
||||
union acpi_object in_obj, in_buf, *out_obj;
|
||||
const struct nd_cmd_desc *desc = NULL;
|
||||
|
@ -721,6 +714,7 @@ int nfit_get_smbios_id(u32 device_handle, u16 *flags)
|
|||
struct acpi_nfit_memory_map *memdev;
|
||||
struct acpi_nfit_desc *acpi_desc;
|
||||
struct nfit_mem *nfit_mem;
|
||||
u16 physical_id;
|
||||
|
||||
mutex_lock(&acpi_desc_lock);
|
||||
list_for_each_entry(acpi_desc, &acpi_descs, list) {
|
||||
|
@ -728,10 +722,11 @@ int nfit_get_smbios_id(u32 device_handle, u16 *flags)
|
|||
list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) {
|
||||
memdev = __to_nfit_memdev(nfit_mem);
|
||||
if (memdev->device_handle == device_handle) {
|
||||
*flags = memdev->flags;
|
||||
physical_id = memdev->physical_id;
|
||||
mutex_unlock(&acpi_desc->init_mutex);
|
||||
mutex_unlock(&acpi_desc_lock);
|
||||
*flags = memdev->flags;
|
||||
return memdev->physical_id;
|
||||
return physical_id;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&acpi_desc->init_mutex);
|
||||
|
@ -2231,7 +2226,6 @@ static int acpi_nfit_init_interleave_set(struct acpi_nfit_desc *acpi_desc,
|
|||
nd_set = devm_kzalloc(dev, sizeof(*nd_set), GFP_KERNEL);
|
||||
if (!nd_set)
|
||||
return -ENOMEM;
|
||||
ndr_desc->nd_set = nd_set;
|
||||
guid_copy(&nd_set->type_guid, (guid_t *) spa->range_guid);
|
||||
|
||||
info = devm_kzalloc(dev, sizeof_nfit_set_info(nr), GFP_KERNEL);
|
||||
|
@ -3367,7 +3361,7 @@ EXPORT_SYMBOL_GPL(acpi_nfit_init);
|
|||
|
||||
static int acpi_nfit_flush_probe(struct nvdimm_bus_descriptor *nd_desc)
|
||||
{
|
||||
struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc);
|
||||
struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc);
|
||||
struct device *dev = acpi_desc->dev;
|
||||
|
||||
/* Bounce the device lock to flush acpi_nfit_add / acpi_nfit_notify */
|
||||
|
@ -3384,7 +3378,7 @@ static int acpi_nfit_flush_probe(struct nvdimm_bus_descriptor *nd_desc)
|
|||
static int __acpi_nfit_clear_to_send(struct nvdimm_bus_descriptor *nd_desc,
|
||||
struct nvdimm *nvdimm, unsigned int cmd)
|
||||
{
|
||||
struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc);
|
||||
struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc);
|
||||
|
||||
if (nvdimm)
|
||||
return 0;
|
||||
|
|
|
@ -146,7 +146,7 @@ static int intel_security_change_key(struct nvdimm *nvdimm,
|
|||
|
||||
static void nvdimm_invalidate_cache(void);
|
||||
|
||||
static int intel_security_unlock(struct nvdimm *nvdimm,
|
||||
static int __maybe_unused intel_security_unlock(struct nvdimm *nvdimm,
|
||||
const struct nvdimm_key_data *key_data)
|
||||
{
|
||||
struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
|
||||
|
@ -227,7 +227,7 @@ static int intel_security_disable(struct nvdimm *nvdimm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int intel_security_erase(struct nvdimm *nvdimm,
|
||||
static int __maybe_unused intel_security_erase(struct nvdimm *nvdimm,
|
||||
const struct nvdimm_key_data *key,
|
||||
enum nvdimm_passphrase_type ptype)
|
||||
{
|
||||
|
@ -276,7 +276,7 @@ static int intel_security_erase(struct nvdimm *nvdimm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int intel_security_query_overwrite(struct nvdimm *nvdimm)
|
||||
static int __maybe_unused intel_security_query_overwrite(struct nvdimm *nvdimm)
|
||||
{
|
||||
int rc;
|
||||
struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
|
||||
|
@ -313,7 +313,7 @@ static int intel_security_query_overwrite(struct nvdimm *nvdimm)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int intel_security_overwrite(struct nvdimm *nvdimm,
|
||||
static int __maybe_unused intel_security_overwrite(struct nvdimm *nvdimm,
|
||||
const struct nvdimm_key_data *nkey)
|
||||
{
|
||||
int rc;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -160,6 +160,7 @@ static inline struct nd_blk_region_desc *to_blk_region_desc(
|
|||
}
|
||||
|
||||
enum nvdimm_security_state {
|
||||
NVDIMM_SECURITY_ERROR = -1,
|
||||
NVDIMM_SECURITY_DISABLED,
|
||||
NVDIMM_SECURITY_UNLOCKED,
|
||||
NVDIMM_SECURITY_LOCKED,
|
||||
|
|
Loading…
Reference in New Issue