linux-efi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
  • * [PATCH 4.5 65/88] x86/sysfb_efi: Fix valid BAR address range check
           [not found] <20160509071952.129092535@linuxfoundation.org>
           [not found] ` <20160509071952.129092535-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
    @ 2016-05-09  7:21 ` Greg Kroah-Hartman
      1 sibling, 0 replies; 2+ messages in thread
    From: Greg Kroah-Hartman @ 2016-05-09  7:21 UTC (permalink / raw)
      To: linux-kernel
      Cc: Greg Kroah-Hartman, stable, Wang YanQing, Matt Fleming,
    	Peter Jones, Ard Biesheuvel, David Herrmann, Linus Torvalds,
    	Peter Zijlstra, Thomas Gleixner, Tomi Valkeinen, linux-efi,
    	Ingo Molnar
    
    4.5-stable review patch.  If anyone has any objections, please let me know.
    
    ------------------
    
    From: Wang YanQing <udknight@gmail.com>
    
    commit c10fcb14c7afd6688c7b197a814358fecf244222 upstream.
    
    The code for checking whether a BAR address range is valid will break
    out of the loop when a start address of 0x0 is encountered.
    
    This behaviour is wrong since by breaking out of the loop we may miss
    the BAR that describes the EFI frame buffer in a later iteration.
    
    Because of this bug I can't use video=efifb: boot parameter to get
    efifb on my new ThinkPad E550 for my old linux system hard disk with
    3.10 kernel. In 3.10, efifb is the only choice due to DRM/I915 not
    supporting the GPU.
    
    This patch also add a trivial optimization to break out after we find
    the frame buffer address range without testing later BARs.
    
    Signed-off-by: Wang YanQing <udknight@gmail.com>
    [ Rewrote changelog. ]
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Reviewed-by: Peter Jones <pjones@redhat.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: David Herrmann <dh.herrmann@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1462454061-21561-2-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    ---
     arch/x86/kernel/sysfb_efi.c |   14 ++++++++++++--
     1 file changed, 12 insertions(+), 2 deletions(-)
    
    --- a/arch/x86/kernel/sysfb_efi.c
    +++ b/arch/x86/kernel/sysfb_efi.c
    @@ -106,14 +106,24 @@ static int __init efifb_set_system(const
     					continue;
     				for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
     					resource_size_t start, end;
    +					unsigned long flags;
    +
    +					flags = pci_resource_flags(dev, i);
    +					if (!(flags & IORESOURCE_MEM))
    +						continue;
    +
    +					if (flags & IORESOURCE_UNSET)
    +						continue;
    +
    +					if (pci_resource_len(dev, i) == 0)
    +						continue;
     
     					start = pci_resource_start(dev, i);
    -					if (start == 0)
    -						break;
     					end = pci_resource_end(dev, i);
     					if (screen_info.lfb_base >= start &&
     					    screen_info.lfb_base < end) {
     						found_bar = 1;
    +						break;
     					}
     				}
     			}
    
    ^ permalink raw reply	[flat|nested] 2+ messages in thread

  • end of thread, other threads:[~2016-05-09  7:21 UTC | newest]
    
    Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
    -- links below jump to the message on this page --
         [not found] <20160509071952.129092535@linuxfoundation.org>
         [not found] ` <20160509071952.129092535-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
    2016-05-09  7:21   ` [PATCH 4.5 59/88] MAINTAINERS: Remove asterisk from EFI directory names Greg Kroah-Hartman
    2016-05-09  7:21 ` [PATCH 4.5 65/88] x86/sysfb_efi: Fix valid BAR address range check Greg Kroah-Hartman
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).