summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/firmware/efi/esrt.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/drivers/firmware/efi/esrt.c b/drivers/firmware/efi/esrt.c
index 20c0cbdb1c60..a5b95d61ae71 100644
--- a/drivers/firmware/efi/esrt.c
+++ b/drivers/firmware/efi/esrt.c
@@ -167,7 +167,6 @@ static struct kset *esrt_kset;
static int esre_create_sysfs_entry(void *esre, int entry_num)
{
- int rc = 0;
struct esre_entry *entry;
char name[20];
@@ -180,13 +179,15 @@ static int esre_create_sysfs_entry(void *esre, int entry_num)
entry->kobj.kset = esrt_kset;
if (esrt->fw_resource_version == 1) {
+ int rc = 0;
+
entry->esre.esre1 = esre;
rc = kobject_init_and_add(&entry->kobj, &esre1_ktype, NULL,
"%s", name);
- }
- if (rc) {
- kfree(entry);
- return rc;
+ if (rc) {
+ kfree(entry);
+ return rc;
+ }
}
list_add_tail(&entry->list, &entry_list);
@@ -248,6 +249,7 @@ void __init efi_esrt_init(void)
size_t size, max, entry_size, entries_size;
efi_memory_desc_t md;
int rc;
+ phys_addr_t end;
pr_debug("esrt-init: loading.\n");
if (!esrt_table_exists())
@@ -335,8 +337,8 @@ void __init efi_esrt_init(void)
esrt_data = (phys_addr_t)efi.esrt;
esrt_data_size = size;
- pr_info("Reserving ESRT space from %p to %p.\n", (void *)esrt_data,
- (char *)esrt_data + size);
+ end = esrt_data + size;
+ pr_info("Reserving ESRT space from %pa to %pa.\n", &esrt_data, &end);
memblock_reserve(esrt_data, esrt_data_size);
pr_debug("esrt-init: loaded.\n");
@@ -353,11 +355,16 @@ static int __init register_entries(void)
return 0;
for (i = 0; i < le32_to_cpu(esrt->fw_resource_count); i++) {
- void *entry;
+ void *esre = NULL;
if (esrt->fw_resource_version == 1) {
- entry = &v1_entries[i];
+ esre = &v1_entries[i];
+ } else {
+ pr_err("Unsupported ESRT version %lld.\n",
+ esrt->fw_resource_version);
+ return -EINVAL;
}
- rc = esre_create_sysfs_entry(entry, i);
+
+ rc = esre_create_sysfs_entry(esre, i);
if (rc < 0) {
pr_err("ESRT entry creation failed with error %d.\n",
rc);
@@ -387,7 +394,7 @@ static int __init esrt_sysfs_init(void)
ioesrt = ioremap(esrt_data, esrt_data_size);
if (!ioesrt) {
- pr_err("ioremap(%p, %zu) failed.\n", (void *)esrt_data,
+ pr_err("ioremap(%pa, %zu) failed.\n", &esrt_data,
esrt_data_size);
return -ENOMEM;
}