All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/sysfb: Fix check for bad VRAM size
@ 2020-01-07 23:04 Arvind Sankar
  2020-01-15 13:12 ` Borislav Petkov
  2020-01-20 10:14 ` [tip: x86/boot] " tip-bot2 for Arvind Sankar
  0 siblings, 2 replies; 3+ messages in thread
From: Arvind Sankar @ 2020-01-07 23:04 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, Borislav Petkov, H. Peter Anvin
  Cc: x86, linux-kernel, Christopher Head

When checking whether the reported lfb_size makes sense, we PAGE_ALIGN
height * stride before seeing whether it exceeds the reported size.

This doesn't work if height * stride is not an exact number of pages.
For example, as reported in kernel bugzilla linked, an 800x600x32 EFI
framebuffer gets skipped because of this.

Move the PAGE_ALIGN to after the check vs size.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206051
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
---
 arch/x86/kernel/sysfb_simplefb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/sysfb_simplefb.c b/arch/x86/kernel/sysfb_simplefb.c
index 01f0e2263b86..298fc1edd9c9 100644
--- a/arch/x86/kernel/sysfb_simplefb.c
+++ b/arch/x86/kernel/sysfb_simplefb.c
@@ -90,11 +90,11 @@ __init int create_simplefb(const struct screen_info *si,
 	if (si->orig_video_isVGA == VIDEO_TYPE_VLFB)
 		size <<= 16;
 	length = mode->height * mode->stride;
-	length = PAGE_ALIGN(length);
 	if (length > size) {
 		printk(KERN_WARNING "sysfb: VRAM smaller than advertised\n");
 		return -EINVAL;
 	}
+	length = PAGE_ALIGN(length);
 
 	/* setup IORESOURCE_MEM as framebuffer memory */
 	memset(&res, 0, sizeof(res));
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] x86/sysfb: Fix check for bad VRAM size
  2020-01-07 23:04 [PATCH] x86/sysfb: Fix check for bad VRAM size Arvind Sankar
@ 2020-01-15 13:12 ` Borislav Petkov
  2020-01-20 10:14 ` [tip: x86/boot] " tip-bot2 for Arvind Sankar
  1 sibling, 0 replies; 3+ messages in thread
From: Borislav Petkov @ 2020-01-15 13:12 UTC (permalink / raw)
  To: Christopher Head
  Cc: Arvind Sankar, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	linux-kernel

On Tue, Jan 07, 2020 at 06:04:10PM -0500, Arvind Sankar wrote:
> When checking whether the reported lfb_size makes sense, we PAGE_ALIGN
> height * stride before seeing whether it exceeds the reported size.
> 
> This doesn't work if height * stride is not an exact number of pages.
> For example, as reported in kernel bugzilla linked, an 800x600x32 EFI
> framebuffer gets skipped because of this.
> 
> Move the PAGE_ALIGN to after the check vs size.
> 
> BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206051
> Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
> ---
>  arch/x86/kernel/sysfb_simplefb.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/x86/kernel/sysfb_simplefb.c b/arch/x86/kernel/sysfb_simplefb.c
> index 01f0e2263b86..298fc1edd9c9 100644
> --- a/arch/x86/kernel/sysfb_simplefb.c
> +++ b/arch/x86/kernel/sysfb_simplefb.c
> @@ -90,11 +90,11 @@ __init int create_simplefb(const struct screen_info *si,
>  	if (si->orig_video_isVGA == VIDEO_TYPE_VLFB)
>  		size <<= 16;
>  	length = mode->height * mode->stride;
> -	length = PAGE_ALIGN(length);
>  	if (length > size) {
>  		printk(KERN_WARNING "sysfb: VRAM smaller than advertised\n");
>  		return -EINVAL;
>  	}
> +	length = PAGE_ALIGN(length);
>  
>  	/* setup IORESOURCE_MEM as framebuffer memory */
>  	memset(&res, 0, sizeof(res));
> -- 

Christopher,

can I add your Reported-by: and Tested-by: tags to the patch?

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [tip: x86/boot] x86/sysfb: Fix check for bad VRAM size
  2020-01-07 23:04 [PATCH] x86/sysfb: Fix check for bad VRAM size Arvind Sankar
  2020-01-15 13:12 ` Borislav Petkov
@ 2020-01-20 10:14 ` tip-bot2 for Arvind Sankar
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot2 for Arvind Sankar @ 2020-01-20 10:14 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Christopher Head, Arvind Sankar, Borislav Petkov, x86, LKML

The following commit has been merged into the x86/boot branch of tip:

Commit-ID:     dacc9092336be20b01642afe1a51720b31f60369
Gitweb:        https://git.kernel.org/tip/dacc9092336be20b01642afe1a51720b31f60369
Author:        Arvind Sankar <nivedita@alum.mit.edu>
AuthorDate:    Tue, 07 Jan 2020 18:04:10 -05:00
Committer:     Borislav Petkov <bp@suse.de>
CommitterDate: Mon, 20 Jan 2020 10:57:53 +01:00

x86/sysfb: Fix check for bad VRAM size

When checking whether the reported lfb_size makes sense, the height
* stride result is page-aligned before seeing whether it exceeds the
reported size.

This doesn't work if height * stride is not an exact number of pages.
For example, as reported in the kernel bugzilla below, an 800x600x32 EFI
framebuffer gets skipped because of this.

Move the PAGE_ALIGN to after the check vs size.

Reported-by: Christopher Head <chead@chead.ca>
Tested-by: Christopher Head <chead@chead.ca>
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206051
Link: https://lkml.kernel.org/r/20200107230410.2291947-1-nivedita@alum.mit.edu
---
 arch/x86/kernel/sysfb_simplefb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/sysfb_simplefb.c b/arch/x86/kernel/sysfb_simplefb.c
index 01f0e22..298fc1e 100644
--- a/arch/x86/kernel/sysfb_simplefb.c
+++ b/arch/x86/kernel/sysfb_simplefb.c
@@ -90,11 +90,11 @@ __init int create_simplefb(const struct screen_info *si,
 	if (si->orig_video_isVGA == VIDEO_TYPE_VLFB)
 		size <<= 16;
 	length = mode->height * mode->stride;
-	length = PAGE_ALIGN(length);
 	if (length > size) {
 		printk(KERN_WARNING "sysfb: VRAM smaller than advertised\n");
 		return -EINVAL;
 	}
+	length = PAGE_ALIGN(length);
 
 	/* setup IORESOURCE_MEM as framebuffer memory */
 	memset(&res, 0, sizeof(res));

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-01-20 10:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-07 23:04 [PATCH] x86/sysfb: Fix check for bad VRAM size Arvind Sankar
2020-01-15 13:12 ` Borislav Petkov
2020-01-20 10:14 ` [tip: x86/boot] " tip-bot2 for Arvind Sankar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.