EFI calls can made directly on ARM, so the function pointers
are directly invoked.  This allows types to be checked at
compile time, so here we ensure that the parameters match
the function signature. The wrappers used by x86 prevent
any type checking.
Correct the type of chunksize to be based on native
width as specified by the EFI_FILE_PROTOCOL read()
function.

Signed-off-by: Roy Franz <roy.fr...@linaro.org>
---
 drivers/firmware/efi/efi-stub-helper.c |   15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/firmware/efi/efi-stub-helper.c 
b/drivers/firmware/efi/efi-stub-helper.c
index 9437edd..6b28845 100644
--- a/drivers/firmware/efi/efi-stub-helper.c
+++ b/drivers/firmware/efi/efi-stub-helper.c
@@ -322,7 +322,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t 
*sys_table_arg,
        status = efi_call_phys3(sys_table_arg->boottime->allocate_pool,
                                EFI_LOADER_DATA,
                                nr_files * sizeof(*files),
-                               &files);
+                               (void **)&files);
        if (status != EFI_SUCCESS) {
                efi_printk(sys_table_arg, "Failed to alloc mem for file handle 
list\n");
                goto fail;
@@ -373,7 +373,8 @@ static efi_status_t handle_cmdline_files(efi_system_table_t 
*sys_table_arg,
                        boottime = sys_table_arg->boottime;
 
                        status = efi_call_phys3(boottime->handle_protocol,
-                                       image->device_handle, &fs_proto, &io);
+                                       image->device_handle, &fs_proto,
+                                               (void **)&io);
                        if (status != EFI_SUCCESS) {
                                efi_printk(sys_table_arg, "Failed to handle 
fs_proto\n");
                                goto free_files;
@@ -407,7 +408,8 @@ static efi_status_t handle_cmdline_files(efi_system_table_t 
*sys_table_arg,
 
 grow:
                status = efi_call_phys3(sys_table_arg->boottime->allocate_pool,
-                                       EFI_LOADER_DATA, info_sz, &info);
+                                       EFI_LOADER_DATA, info_sz,
+                                       (void **)&info);
                if (status != EFI_SUCCESS) {
                        efi_printk(sys_table_arg, "Failed to alloc mem for file 
info\n");
                        goto close_handles;
@@ -457,18 +459,19 @@ grow:
 
                addr = file_addr;
                for (j = 0; j < nr_files; j++) {
-                       u64 size;
+                       unsigned long size;
 
                        size = files[j].size;
                        while (size) {
-                               u64 chunksize;
+                               unsigned long chunksize;
                                if (size > EFI_READ_CHUNK_SIZE)
                                        chunksize = EFI_READ_CHUNK_SIZE;
                                else
                                        chunksize = size;
                                status = efi_call_phys3(fh->read,
                                                        files[j].handle,
-                                                       &chunksize, addr);
+                                                       &chunksize,
+                                                       (void *)addr);
                                if (status != EFI_SUCCESS) {
                                        efi_printk(sys_table_arg, "Failed to 
read file\n");
                                        goto free_file_total;
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to