lkml.org 
[lkml]   [2015]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.14 11/34] x86/microcode/intel: Guard against stack overflow in the loader
    Date
    3.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Quentin Casasnovas <quentin.casasnovas@oracle.com>

    commit f84598bd7c851f8b0bf8cd0d7c3be0d73c432ff4 upstream.

    mc_saved_tmp is a static array allocated on the stack, we need to make
    sure mc_saved_count stays within its bounds, otherwise we're overflowing
    the stack in _save_mc(). A specially crafted microcode header could lead
    to a kernel crash or potentially kernel execution.

    Signed-off-by: Quentin Casasnovas <quentin.casasnovas@oracle.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Link: http://lkml.kernel.org/r/1422964824-22056-1-git-send-email-quentin.casasnovas@oracle.com
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/x86/kernel/cpu/microcode/intel_early.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/x86/kernel/cpu/microcode/intel_early.c
    +++ b/arch/x86/kernel/cpu/microcode/intel_early.c
    @@ -321,7 +321,7 @@ get_matching_model_microcode(int cpu, un
    unsigned int mc_saved_count = mc_saved_data->mc_saved_count;
    int i;

    - while (leftover) {
    + while (leftover && mc_saved_count < ARRAY_SIZE(mc_saved_tmp)) {
    mc_header = (struct microcode_header_intel *)ucode_ptr;

    mc_size = get_totalsize(mc_header);



    \
     
     \ /
      Last update: 2015-07-01 21:21    [W:3.352 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site