* [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.