linux/drivers/firmware/efi
Matt Fleming fb7a84cac0 efi/capsule: Move 'capsule' to the stack in efi_capsule_supported()
Dan Carpenter reports that passing the address of the pointer to the
kmalloc()'d memory for 'capsule' is dangerous:

 "drivers/firmware/efi/capsule.c:109 efi_capsule_supported()
  warn: did you mean to pass the address of 'capsule'

   108
   109          status = efi.query_capsule_caps(&capsule, 1, &max_size, reset);
                                                ^^^^^^^^
  If we modify capsule inside this function call then at the end of the
  function we aren't freeing the original pointer that we allocated."

Ard Biesheuvel noted that we don't even need to call kmalloc() since the
object we allocate isn't very big and doesn't need to persist after the
function returns.

Place 'capsule' on the stack instead.

Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Kweh Hock Leong <hock.leong.kweh@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: joeyli <jlee@suse.com>
Cc: linux-efi@vger.kernel.org
Link: http://lkml.kernel.org/r/1462570771-13324-4-git-send-email-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-05-07 07:06:13 +02:00
..
libstub efi/arm*/libstub: Wire up GOP protocol to 'struct screen_info' 2016-04-28 11:34:00 +02:00
Kconfig efi: Add misc char driver interface to update EFI firmware 2016-04-28 11:34:05 +02:00
Makefile efi: Add misc char driver interface to update EFI firmware 2016-04-28 11:34:05 +02:00
arm-init.c efi/arm-init: Reserve rather than unmap the memory map for ARM as well 2016-04-28 11:34:05 +02:00
arm-runtime.c efi/arm*: Take the Memory Attributes table into account 2016-04-28 11:33:55 +02:00
capsule-loader.c efi: Add misc char driver interface to update EFI firmware 2016-04-28 11:34:05 +02:00
capsule.c efi/capsule: Move 'capsule' to the stack in efi_capsule_supported() 2016-05-07 07:06:13 +02:00
cper.c efi: Handle memory error structures produced based on old versions of standard 2015-07-15 13:30:38 +01:00
efi-pstore.c Half dozen small cleanups plus change to allow pstore 2015-11-05 11:51:18 -08:00
efi.c efi: Move efi_status_to_err() to drivers/firmware/efi/ 2016-04-28 11:34:03 +02:00
efibc.c efibc: Fix excessive stack footprint warning 2016-05-07 07:06:13 +02:00
efivars.c drivers/firmware/efi/efivars.c: use in_compat_syscall() to check for compat callers 2016-03-22 15:36:02 -07:00
esrt.c efi/esrt: Don't preformat name 2015-12-14 15:24:03 +00:00
fake_mem.c efi: Remove global 'memmap' EFI memory map 2016-04-28 11:33:51 +02:00
memattr.c efi: Implement generic support for the Memory Attributes table 2016-04-28 11:33:54 +02:00
reboot.c efi: Add 'capsule' update support 2016-04-28 11:34:03 +02:00
runtime-map.c efi: Fix error handling in add_sysfs_runtime_map_entry() 2015-05-05 16:20:13 +01:00
runtime-wrappers.c efi/runtime-wrappers: Remove ARCH_EFI_IRQ_FLAGS_MASK #ifdef 2016-04-28 11:34:13 +02:00
vars.c efi: Move efi_status_to_err() to drivers/firmware/efi/ 2016-04-28 11:34:03 +02:00