History

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

Linus Torvalds committed 7 years ago

Commit 26caabb2 parents f403d71 faa8bd64 files · +14 −19Browse files

Unified · Split

4 files
  1. drivers/acpi/nfit/core.c +7 −13
  2. drivers/acpi/nfit/intel.c +4 −4
  3. drivers/nvdimm/nd-core.h +2 −2
  4. include/linux/libnvdimm.h +1 −0
drivers/acpi/nfit/core.c+7−13
@@ -26,7 +26,6 @@ · 25 unmodified lines
26#include <acpi/nfit.h>26#include <acpi/nfit.h>
27#include "intel.h"27#include "intel.h"
28#include "nfit.h"28#include "nfit.h"
29#include "intel.h"
30 29
31/*30/*
32 * For readq() and writeq() on 32-bit builds, the hi-lo, lo-hi order is31 * 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) · 45 unmodified lines
78}77}
79EXPORT_SYMBOL(to_nfit_uuid);78EXPORT_SYMBOL(to_nfit_uuid);
80 79
81static struct acpi_nfit_desc *to_acpi_nfit_desc(
82 struct nvdimm_bus_descriptor *nd_desc)
83{
84 return container_of(nd_desc, struct acpi_nfit_desc, nd_desc);
85}
86
87static struct acpi_device *to_acpi_dev(struct acpi_nfit_desc *acpi_desc)80static struct acpi_device *to_acpi_dev(struct acpi_nfit_desc *acpi_desc)
88{81{
89 struct nvdimm_bus_descriptor *nd_desc = &acpi_desc->nd_desc;82 struct nvdimm_bus_descriptor *nd_desc = &acpi_desc->nd_desc;
@@ -419,7 +412,7 @@ static bool payload_dumpable(struct nvdimm *nvdimm, unsigned int func) · 329 unmodified lines
419int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,412int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
420 unsigned int cmd, void *buf, unsigned int buf_len, int *cmd_rc)413 unsigned int cmd, void *buf, unsigned int buf_len, int *cmd_rc)
421{414{
422 struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc);415 struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc);
423 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);416 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
424 union acpi_object in_obj, in_buf, *out_obj;417 union acpi_object in_obj, in_buf, *out_obj;
425 const struct nd_cmd_desc *desc = NULL;418 const struct nd_cmd_desc *desc = NULL;
@@ -721,6 +714,7 @@ int nfit_get_smbios_id(u32 device_handle, u16 *flags) · 295 unmodified lines
721 struct acpi_nfit_memory_map *memdev;714 struct acpi_nfit_memory_map *memdev;
722 struct acpi_nfit_desc *acpi_desc;715 struct acpi_nfit_desc *acpi_desc;
723 struct nfit_mem *nfit_mem;716 struct nfit_mem *nfit_mem;
717 u16 physical_id;
724 718
725 mutex_lock(&acpi_desc_lock);719 mutex_lock(&acpi_desc_lock);
726 list_for_each_entry(acpi_desc, &acpi_descs, list) {720 list_for_each_entry(acpi_desc, &acpi_descs, list) {
@@ -728,10 +722,11 @@ int nfit_get_smbios_id(u32 device_handle, u16 *flags) · 1 unmodified line
728 list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) {722 list_for_each_entry(nfit_mem, &acpi_desc->dimms, list) {
729 memdev = __to_nfit_memdev(nfit_mem);723 memdev = __to_nfit_memdev(nfit_mem);
730 if (memdev->device_handle == device_handle) {724 if (memdev->device_handle == device_handle) {
725 *flags = memdev->flags;
726 physical_id = memdev->physical_id;
731 mutex_unlock(&acpi_desc->init_mutex);727 mutex_unlock(&acpi_desc->init_mutex);
732 mutex_unlock(&acpi_desc_lock);728 mutex_unlock(&acpi_desc_lock);
733 *flags = memdev->flags;729 return physical_id;
734 return memdev->physical_id;
735 }730 }
736 }731 }
737 mutex_unlock(&acpi_desc->init_mutex);732 mutex_unlock(&acpi_desc->init_mutex);
@@ -2231,7 +2226,6 @@ static int acpi_nfit_init_interleave_set(struct acpi_nfit_desc *acpi_desc, · 1493 unmodified lines
2231 nd_set = devm_kzalloc(dev, sizeof(*nd_set), GFP_KERNEL);2226 nd_set = devm_kzalloc(dev, sizeof(*nd_set), GFP_KERNEL);
2232 if (!nd_set)2227 if (!nd_set)
2233 return -ENOMEM;2228 return -ENOMEM;
2234 ndr_desc->nd_set = nd_set;
2235 guid_copy(&nd_set->type_guid, (guid_t *) spa->range_guid);2229 guid_copy(&nd_set->type_guid, (guid_t *) spa->range_guid);
2236 2230
2237 info = devm_kzalloc(dev, sizeof_nfit_set_info(nr), GFP_KERNEL);2231 info = devm_kzalloc(dev, sizeof_nfit_set_info(nr), GFP_KERNEL);
@@ -3367,7 +3361,7 @@ EXPORT_SYMBOL_GPL(acpi_nfit_init); · 1129 unmodified lines
3367 3361
3368static int acpi_nfit_flush_probe(struct nvdimm_bus_descriptor *nd_desc)3362static int acpi_nfit_flush_probe(struct nvdimm_bus_descriptor *nd_desc)
3369{3363{
3370 struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc);3364 struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc);
3371 struct device *dev = acpi_desc->dev;3365 struct device *dev = acpi_desc->dev;
3372 3366
3373 /* Bounce the device lock to flush acpi_nfit_add / acpi_nfit_notify */3367 /* 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) · 10 unmodified lines
3384static int __acpi_nfit_clear_to_send(struct nvdimm_bus_descriptor *nd_desc,3378static int __acpi_nfit_clear_to_send(struct nvdimm_bus_descriptor *nd_desc,
3385 struct nvdimm *nvdimm, unsigned int cmd)3379 struct nvdimm *nvdimm, unsigned int cmd)
3386{3380{
3387 struct acpi_nfit_desc *acpi_desc = to_acpi_nfit_desc(nd_desc);3381 struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc);
3388 3382
3389 if (nvdimm)3383 if (nvdimm)
3390 return 0;3384 return 0;
drivers/acpi/nfit/intel.c+4−4
@@ -146,7 +146,7 @@ static int intel_security_change_key(struct nvdimm *nvdimm, · 145 unmodified lines
146 146
147static void nvdimm_invalidate_cache(void);147static void nvdimm_invalidate_cache(void);
148 148
149static int intel_security_unlock(struct nvdimm *nvdimm,149static int __maybe_unused intel_security_unlock(struct nvdimm *nvdimm,
150 const struct nvdimm_key_data *key_data)150 const struct nvdimm_key_data *key_data)
151{151{
152 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);152 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
@@ -227,7 +227,7 @@ static int intel_security_disable(struct nvdimm *nvdimm, · 74 unmodified lines
227 return 0;227 return 0;
228}228}
229 229
230static int intel_security_erase(struct nvdimm *nvdimm,230static int __maybe_unused intel_security_erase(struct nvdimm *nvdimm,
231 const struct nvdimm_key_data *key,231 const struct nvdimm_key_data *key,
232 enum nvdimm_passphrase_type ptype)232 enum nvdimm_passphrase_type ptype)
233{233{
@@ -276,7 +276,7 @@ static int intel_security_erase(struct nvdimm *nvdimm, · 42 unmodified lines
276 return 0;276 return 0;
277}277}
278 278
279static int intel_security_query_overwrite(struct nvdimm *nvdimm)279static int __maybe_unused intel_security_query_overwrite(struct nvdimm *nvdimm)
280{280{
281 int rc;281 int rc;
282 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);282 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
@@ -313,7 +313,7 @@ static int intel_security_query_overwrite(struct nvdimm *nvdimm) · 30 unmodified lines
313 return 0;313 return 0;
314}314}
315 315
316static int intel_security_overwrite(struct nvdimm *nvdimm,316static int __maybe_unused intel_security_overwrite(struct nvdimm *nvdimm,
317 const struct nvdimm_key_data *nkey)317 const struct nvdimm_key_data *nkey)
318{318{
319 int rc;319 int rc;
drivers/nvdimm/nd-core.h+2−2
@@ -54,12 +54,12 @@ struct nvdimm { · 53 unmodified lines
54};54};
55 55
56static inline enum nvdimm_security_state nvdimm_security_state(56static inline enum nvdimm_security_state nvdimm_security_state(
57 struct nvdimm *nvdimm, bool master)57 struct nvdimm *nvdimm, enum nvdimm_passphrase_type ptype)
58{58{
59 if (!nvdimm->sec.ops)59 if (!nvdimm->sec.ops)
60 return -ENXIO;60 return -ENXIO;
61 61
62 return nvdimm->sec.ops->state(nvdimm, master);62 return nvdimm->sec.ops->state(nvdimm, ptype);
63}63}
64int nvdimm_security_freeze(struct nvdimm *nvdimm);64int nvdimm_security_freeze(struct nvdimm *nvdimm);
65#if IS_ENABLED(CONFIG_NVDIMM_KEYS)65#if IS_ENABLED(CONFIG_NVDIMM_KEYS)
include/linux/libnvdimm.h+1−0
@@ -160,6 +160,7 @@ static inline struct nd_blk_region_desc *to_blk_region_desc( · 159 unmodified lines
160}160}
161 161
162enum nvdimm_security_state {162enum nvdimm_security_state {
163 NVDIMM_SECURITY_ERROR = -1,
163 NVDIMM_SECURITY_DISABLED,164 NVDIMM_SECURITY_DISABLED,
164 NVDIMM_SECURITY_UNLOCKED,165 NVDIMM_SECURITY_UNLOCKED,
165 NVDIMM_SECURITY_LOCKED,166 NVDIMM_SECURITY_LOCKED,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t