• Chris Wilson's avatar
    drm/i915: Use a temporary va_list for two-pass string handling · e29bb4eb
    Chris Wilson authored
    In
    
    commit edc3d884
    Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Date:   Thu May 23 13:55:35 2013 +0300
    
        drm/i915: avoid big kmallocs on reading error state
    
    we introduce a two-pass mechanism for splitting long strings being
    formatted into the error-state. The first pass finds the length, and the
    second pass emits the right portion of the string into the accumulation
    buffer. Unfortunately we use the same va_list for both passes, resulting
    in the second pass reading garbage off the end of the argument list. As
    the two passes are only used for boundaries between read() calls, the
    corruption is only rarely seen.
    
    This fixes the root cause behind
    
    commit baf27f9b
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Sat Jun 29 23:26:50 2013 +0100
    
        drm/i915: Break up the large vsnprintf() in print_error_buffers()
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    e29bb4eb
i915_gpu_error.c 26.8 KB