* [PATCH] fbcon: Use correct type for vc_resize() return value
From: Jiacheng Yu @ 2026-05-14 9:19 UTC (permalink / raw)
To: deller, tzimmermann, simona
Cc: sravankumarlpu, dri-devel, linux-fbdev, linux-kernel,
liuyongqiang13
The return value of vc_resize() is int, but fbcon_set_disp() stores it
in an unsigned long variable. While the !ret check happens to work
correctly by coincidence (negative values become large positive values),
the types should match. Use int instead.
Eliminates the following W=3 warning:
drivers/video/fbdev/core/fbcon.c: In function 'fbcon_set_disp':
drivers/video/fbdev/core/fbcon.c:1494:14: warning: implicit conversion from 'int' to 'unsigned long' [-Wconversion]
Fixes: af0db3c1f898 ("fbdev: Fix vmalloc out-of-bounds write in fast_imageblit")
Signed-off-by: Jiacheng Yu <yujiacheng3@huawei.com>
---
drivers/video/fbdev/core/fbcon.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index b0e3e765360d..641687a734d5 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -1440,8 +1440,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
struct vc_data **default_mode, *vc;
struct vc_data *svc;
struct fbcon_par *par = info->fbcon_par;
- int rows, cols;
- unsigned long ret = 0;
+ int rows, cols, ret;
p = &fb_display[unit];
--
2.34.1
^ permalink raw reply related
* [PATCH] staging: sm750fb: Add suspend checks to copyarea and imageblit
From: Chhabilal Dangal @ 2026-05-14 10:30 UTC (permalink / raw)
To: Greg Kroah-Hartman, Sudip Mukherjee
Cc: linux-fbdev, devel, linux-kernel, Chhabilal Dangal
lynxfb_ops_fillrect() already checks info->state before accessing
the hardware 2D engine, but lynxfb_ops_copyarea() and
lynxfb_ops_imageblit() do not.
The suspend path calls fb_set_suspend(), which sets the framebuffer
state to FBINFO_STATE_SUSPENDED. Add matching state checks in the
remaining accelerated callbacks for consistency with fillrect().
This patch was developed with AI assistance and is compile-tested only.
---
drivers/staging/sm750fb/sm750.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 9f3e3d37e..025ac8fe3 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -204,6 +204,9 @@ static void lynxfb_ops_copyarea(struct fb_info *info,
struct sm750_dev *sm750_dev;
unsigned int base, pitch, bpp;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
par = info->par;
sm750_dev = par->dev;
@@ -239,6 +242,9 @@ static void lynxfb_ops_imageblit(struct fb_info *info,
struct lynxfb_par *par;
struct sm750_dev *sm750_dev;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
par = info->par;
sm750_dev = par->dev;
/*
--
2.54.0
^ permalink raw reply related
* Re: [PATCH] staging: sm750fb: Add suspend checks to copyarea and imageblit
From: Greg Kroah-Hartman @ 2026-05-14 10:44 UTC (permalink / raw)
To: Chhabilal Dangal; +Cc: Sudip Mukherjee, linux-fbdev, devel, linux-kernel
In-Reply-To: <20260514103042.55313-1-yogeshdangal66@gmail.com>
On Thu, May 14, 2026 at 04:15:42PM +0545, Chhabilal Dangal wrote:
> lynxfb_ops_fillrect() already checks info->state before accessing
> the hardware 2D engine, but lynxfb_ops_copyarea() and
> lynxfb_ops_imageblit() do not.
>
> The suspend path calls fb_set_suspend(), which sets the framebuffer
> state to FBINFO_STATE_SUSPENDED. Add matching state checks in the
> remaining accelerated callbacks for consistency with fillrect().
>
> This patch was developed with AI assistance and is compile-tested only.
> ---
> drivers/staging/sm750fb/sm750.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
> index 9f3e3d37e..025ac8fe3 100644
> --- a/drivers/staging/sm750fb/sm750.c
> +++ b/drivers/staging/sm750fb/sm750.c
> @@ -204,6 +204,9 @@ static void lynxfb_ops_copyarea(struct fb_info *info,
> struct sm750_dev *sm750_dev;
> unsigned int base, pitch, bpp;
>
> + if (info->state != FBINFO_STATE_RUNNING)
> + return;
> +
> par = info->par;
> sm750_dev = par->dev;
>
> @@ -239,6 +242,9 @@ static void lynxfb_ops_imageblit(struct fb_info *info,
> struct lynxfb_par *par;
> struct sm750_dev *sm750_dev;
>
> + if (info->state != FBINFO_STATE_RUNNING)
> + return;
> +
> par = info->par;
> sm750_dev = par->dev;
> /*
> --
> 2.54.0
>
Hi,
This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him
a patch that has triggered this response. He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created. Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.
You are receiving this message because of the following common error(s)
as indicated below:
- Your patch does not have a Signed-off-by: line. Please read the
kernel file, Documentation/process/submitting-patches.rst and resend
it after adding that line. Note, the line needs to be in the body of
the email, before the patch, not at the bottom of the patch or in the
email signature.
- This looks like a new version of a previously submitted patch, but you
did not list below the --- line any changes from the previous version.
Please read the section entitled "The canonical patch format" in the
kernel file, Documentation/process/submitting-patches.rst for what
needs to be done here to properly describe this.
If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.
thanks,
greg k-h's patch email bot
^ permalink raw reply
* [PATCH] staging: sm750fb: Add suspend checks to copyarea and imageblit
From: Chhabilal Dangal @ 2026-05-14 10:49 UTC (permalink / raw)
To: Greg Kroah-Hartman, Sudip Mukherjee
Cc: linux-fbdev, devel, linux-kernel, Chhabilal Dangal
lynxfb_ops_fillrect() already checks info->state before accessing
the hardware 2D engine, but lynxfb_ops_copyarea() and
lynxfb_ops_imageblit() do not.
The suspend path calls fb_set_suspend(), which sets the framebuffer
state to FBINFO_STATE_SUSPENDED. Add matching state checks in the
remaining accelerated callbacks for consistency with fillrect().
This patch was developed with AI assistance and is compile-tested only.
Signed-off-by: Chhabilal Dangal <yogeshdangal66@gmail.com>
---
drivers/staging/sm750fb/sm750.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 9f3e3d37e..025ac8fe3 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -204,6 +204,9 @@ static void lynxfb_ops_copyarea(struct fb_info *info,
struct sm750_dev *sm750_dev;
unsigned int base, pitch, bpp;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
par = info->par;
sm750_dev = par->dev;
@@ -239,6 +242,9 @@ static void lynxfb_ops_imageblit(struct fb_info *info,
struct lynxfb_par *par;
struct sm750_dev *sm750_dev;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
par = info->par;
sm750_dev = par->dev;
/*
--
2.54.0
^ permalink raw reply related
* Re: [PATCH] staging: sm750fb: Add suspend checks to copyarea and imageblit
From: Greg Kroah-Hartman @ 2026-05-14 11:44 UTC (permalink / raw)
To: Chhabilal Dangal; +Cc: Sudip Mukherjee, linux-fbdev, devel, linux-kernel
In-Reply-To: <20260514104924.60296-1-yogeshdangal66@gmail.com>
On Thu, May 14, 2026 at 04:34:24PM +0545, Chhabilal Dangal wrote:
> lynxfb_ops_fillrect() already checks info->state before accessing
> the hardware 2D engine, but lynxfb_ops_copyarea() and
> lynxfb_ops_imageblit() do not.
>
> The suspend path calls fb_set_suspend(), which sets the framebuffer
> state to FBINFO_STATE_SUSPENDED. Add matching state checks in the
> remaining accelerated callbacks for consistency with fillrect().
>
> This patch was developed with AI assistance and is compile-tested only.
Please read the documentation for how to properly document LLM
assistance.
also, you aren't sending this to the right lists :(
thanks,
greg k-h
^ permalink raw reply
* [PATCH] staging: sm750fb: Add suspend checks to copyarea and imageblit
From: Chhabilal Dangal @ 2026-05-14 12:01 UTC (permalink / raw)
To: Greg Kroah-Hartman, Sudip Mukherjee
Cc: linux-fbdev, linux-staging, devel, Chhabilal Dangal
lynxfb_ops_fillrect() already checks info->state before accessing
the hardware 2D engine, but lynxfb_ops_copyarea() and
lynxfb_ops_imageblit() do not.
The suspend path calls fb_set_suspend(), which sets the framebuffer
state to FBINFO_STATE_SUSPENDED. Add matching state checks in the
remaining accelerated callbacks for consistency with fillrect().
Assisted-by: Claude Opus 4.6 (Anthropic LLM)
Compile-tested only.
Signed-off-by: Chhabilal Dangal <yogeshdangal66@gmail.com>
---
drivers/staging/sm750fb/sm750.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 9f3e3d37e..025ac8fe3 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -204,6 +204,9 @@ static void lynxfb_ops_copyarea(struct fb_info *info,
struct sm750_dev *sm750_dev;
unsigned int base, pitch, bpp;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
par = info->par;
sm750_dev = par->dev;
@@ -239,6 +242,9 @@ static void lynxfb_ops_imageblit(struct fb_info *info,
struct lynxfb_par *par;
struct sm750_dev *sm750_dev;
+ if (info->state != FBINFO_STATE_RUNNING)
+ return;
+
par = info->par;
sm750_dev = par->dev;
/*
--
2.54.0
^ permalink raw reply related
* Re: [PATCH] staging: sm750fb: Add suspend checks to copyarea and imageblit
From: Dan Carpenter @ 2026-05-14 12:18 UTC (permalink / raw)
To: Chhabilal Dangal
Cc: Greg Kroah-Hartman, Sudip Mukherjee, linux-fbdev, linux-staging,
devel
In-Reply-To: <20260514120102.71615-1-yogeshdangal66@gmail.com>
On Thu, May 14, 2026 at 05:46:02PM +0545, Chhabilal Dangal wrote:
> The suspend path calls fb_set_suspend(), which sets the framebuffer
> state to FBINFO_STATE_SUSPENDED. Add matching state checks in the
> remaining accelerated callbacks for consistency with fillrect().
This is stating obvious but unrelated things as if it means something.
It feels like information but it's a waste of time. fillrect() does
not mirror fb_set_suspend(). This whole paragraph is garbage.
> lynxfb_ops_fillrect() already checks info->state before accessing
> the hardware 2D engine, but lynxfb_ops_copyarea() and
> lynxfb_ops_imageblit() do not.
>
This paragraph is useful because it gives the motivation. But last
time you hadn't checked that the AI was correct. You're just leaving
it up to us to check. Why is your time more valuable than our time
that you can't be bothered to check this stuff?
We need to know:
1) Is the AI correct this time?
2) What is the implication of the bug.
Please do this research on your own, don't just enter my questions into
an AI.
3) Wouldn't it be better to do it at a lower level?
Smatch says that out of the callers only fbcon_bmove_rec(), ypan_up()
and ypan_down() don't check. So check those to see if this is a
real bug.
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_bmove_rec | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | fbcon_redraw_blit | (struct fbcon_bitops)->bmove | PARAM_VALUE | 1 | info->state | 0
drivers/video/fbdev/core/fbcon.c | ypan_up | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
drivers/video/fbdev/core/fbcon.c | ypan_down | (struct fbcon_bitops)->bmove | INTERNAL | -1 | | void(*)(struct vc_data*, struct fb_info*, int, int, int, int, int, int)
>
> Assisted-by: Claude Opus 4.6 (Anthropic LLM)
> Compile-tested only.
Put this under the --- cut off line.
>
> Signed-off-by: Chhabilal Dangal <yogeshdangal66@gmail.com>
> ---
^^^
Here.
No Fixes tag.
Please wait a day between resends.
regards,
dan carpenter
^ permalink raw reply
* Re: [PATCH] staging: sm750fb: Add suspend checks to copyarea and imageblit
From: Greg Kroah-Hartman @ 2026-05-14 12:41 UTC (permalink / raw)
To: Chhabilal Dangal; +Cc: Sudip Mukherjee, linux-fbdev, linux-staging, devel
In-Reply-To: <20260514120102.71615-1-yogeshdangal66@gmail.com>
On Thu, May 14, 2026 at 05:46:02PM +0545, Chhabilal Dangal wrote:
> lynxfb_ops_fillrect() already checks info->state before accessing
> the hardware 2D engine, but lynxfb_ops_copyarea() and
> lynxfb_ops_imageblit() do not.
>
> The suspend path calls fb_set_suspend(), which sets the framebuffer
> state to FBINFO_STATE_SUSPENDED. Add matching state checks in the
> remaining accelerated callbacks for consistency with fillrect().
>
> Assisted-by: Claude Opus 4.6 (Anthropic LLM)
> Compile-tested only.
>
> Signed-off-by: Chhabilal Dangal <yogeshdangal66@gmail.com>
> ---
> drivers/staging/sm750fb/sm750.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
> index 9f3e3d37e..025ac8fe3 100644
> --- a/drivers/staging/sm750fb/sm750.c
> +++ b/drivers/staging/sm750fb/sm750.c
> @@ -204,6 +204,9 @@ static void lynxfb_ops_copyarea(struct fb_info *info,
> struct sm750_dev *sm750_dev;
> unsigned int base, pitch, bpp;
>
> + if (info->state != FBINFO_STATE_RUNNING)
> + return;
> +
> par = info->par;
> sm750_dev = par->dev;
>
> @@ -239,6 +242,9 @@ static void lynxfb_ops_imageblit(struct fb_info *info,
> struct lynxfb_par *par;
> struct sm750_dev *sm750_dev;
>
> + if (info->state != FBINFO_STATE_RUNNING)
> + return;
> +
> par = info->par;
> sm750_dev = par->dev;
> /*
> --
> 2.54.0
>
>
Hi,
This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him
a patch that has triggered this response. He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created. Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.
You are receiving this message because of the following common error(s)
as indicated below:
- This looks like a new version of a previously submitted patch, but you
did not list below the --- line any changes from the previous version.
Please read the section entitled "The canonical patch format" in the
kernel file, Documentation/process/submitting-patches.rst for what
needs to be done here to properly describe this.
If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.
thanks,
greg k-h's patch email bot
^ permalink raw reply
* [PATCH] video: fbdev: sm712: Fix operator precedence in big_swap macro
From: lirongqing @ 2026-05-15 1:02 UTC (permalink / raw)
To: Sudip Mukherjee, Teddy Wang, Helge Deller, Greg Kroah-Hartman,
linux-fbdev, dri-devel, linux-kernel
Cc: Li RongQing
From: Li RongQing <lirongqing@baidu.com>
The big_swap(p) macro was intended to swap bytes within 16-bit halves
of a 32-bit value. However, because the bitwise shift operators (<<, >>)
have higher precedence than the bitwise AND operator (&), the original
code failed to perform any shifting on the masked bits.
For example, 'p & 0xff00ff00 >> 8' was evaluated as 'p &
(0xff00ff00 >> 8)', effectively neutralizing the intended swap.
Fix this by adding parentheses to ensure the bitwise AND is performed
before the shift, correctly implementing the byte swap logic.
Fixes: 1461d66728648 ("staging: sm7xxfb: merge sm712fb with fbdev")
Signed-off-by: Li RongQing <lirongqing@baidu.com>
---
drivers/video/fbdev/sm712.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/sm712.h b/drivers/video/fbdev/sm712.h
index c7ebf03..83fe25f 100644
--- a/drivers/video/fbdev/sm712.h
+++ b/drivers/video/fbdev/sm712.h
@@ -101,7 +101,7 @@ struct modeinit {
#define mmio_addr 0x00800000
#define seqw17() smtc_seqw(0x17, 0x30)
#define big_pixel_depth(p, d) {if (p == 24) {p = 32; d = 32; } }
-#define big_swap(p) ((p & 0xff00ff00 >> 8) | (p & 0x00ff00ff << 8))
+#define big_swap(p) (((p & 0xff00ff00) >> 8) | ((p & 0x00ff00ff) << 8))
#else
#define pal_rgb(r, g, b, val) val
#define big_addr 0
--
2.9.4
^ permalink raw reply related
* Re: [PATCH] fbcon: Use correct type for vc_resize() return value
From: Thomas Zimmermann @ 2026-05-15 7:12 UTC (permalink / raw)
To: Jiacheng Yu, deller, simona
Cc: sravankumarlpu, dri-devel, linux-fbdev, linux-kernel,
liuyongqiang13
In-Reply-To: <20260514091918.1607234-1-yujiacheng3@huawei.com>
Am 14.05.26 um 11:19 schrieb Jiacheng Yu:
> The return value of vc_resize() is int, but fbcon_set_disp() stores it
> in an unsigned long variable. While the !ret check happens to work
> correctly by coincidence (negative values become large positive values),
> the types should match. Use int instead.
>
> Eliminates the following W=3 warning:
>
> drivers/video/fbdev/core/fbcon.c: In function 'fbcon_set_disp':
> drivers/video/fbdev/core/fbcon.c:1494:14: warning: implicit conversion from 'int' to 'unsigned long' [-Wconversion]
>
> Fixes: af0db3c1f898 ("fbdev: Fix vmalloc out-of-bounds write in fast_imageblit")
> Signed-off-by: Jiacheng Yu <yujiacheng3@huawei.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Thanks for the patch.
> ---
> drivers/video/fbdev/core/fbcon.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
> index b0e3e765360d..641687a734d5 100644
> --- a/drivers/video/fbdev/core/fbcon.c
> +++ b/drivers/video/fbdev/core/fbcon.c
> @@ -1440,8 +1440,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
> struct vc_data **default_mode, *vc;
> struct vc_data *svc;
> struct fbcon_par *par = info->fbcon_par;
> - int rows, cols;
> - unsigned long ret = 0;
> + int rows, cols, ret;
>
> p = &fb_display[unit];
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply
* Re: [PATCH 12/14] fbdev: efifb: fix memory leak in efifb_probe()
From: Thomas Zimmermann @ 2026-05-15 7:16 UTC (permalink / raw)
To: Abdun Nihaal, Helge Deller, Javier Martinez Canillas,
Benjamin Herrenschmidt, Andrew Morton, Sebastian Siewior,
Florian Tobias Schandinat, Ondrej Zary, Antonino Daplas,
Paul Mundt, Krzysztof Helt, Tomi Valkeinen, Michal Januszewski,
Heiko Schocher, Peter Jones
Cc: linux-fbdev, dri-devel, linux-kernel, stable
In-Reply-To: <20260514-fbdev-v1-12-b3a2474fa720@cse.iitm.ac.in>
Hi
Am 14.05.26 um 10:24 schrieb Abdun Nihaal:
> Since commit 73ce73c30ba9 ("fbdev: Transfer video= option strings to
> caller; clarify ownership") the string returned from fb_get_options()
> is expected to be freed by the caller, but the string is not freed in
> efifb_probe(). Fix that by freeing the option string after setup.
>
> Fixes: 73ce73c30ba9 ("fbdev: Transfer video= option strings to caller; clarify ownership")
Right, the commit message even mentions the (pre-existing) leak. There
might be other drivers with a similar issue.
> Cc: stable@vger.kernel.org
> Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/video/fbdev/efifb.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
> index 47ebc0107209..ad8dec7807c3 100644
> --- a/drivers/video/fbdev/efifb.c
> +++ b/drivers/video/fbdev/efifb.c
> @@ -377,6 +377,7 @@ static int efifb_probe(struct platform_device *dev)
> if (fb_get_options("efifb", &option))
> return -ENODEV;
> efifb_setup(si, option);
> + kfree(option);
>
> /* We don't get linelength from UGA Draw Protocol, only from
> * EFI Graphics Protocol. So if it's not in DMI, and it's not
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply
* Re: [PATCH 13/14] fbdev: vesafb: fix memory leak in vesafb_probe()
From: Thomas Zimmermann @ 2026-05-15 7:17 UTC (permalink / raw)
To: Abdun Nihaal, Helge Deller, Javier Martinez Canillas,
Benjamin Herrenschmidt, Andrew Morton, Sebastian Siewior,
Florian Tobias Schandinat, Ondrej Zary, Antonino Daplas,
Paul Mundt, Krzysztof Helt, Tomi Valkeinen, Michal Januszewski,
Heiko Schocher, Peter Jones
Cc: linux-fbdev, dri-devel, linux-kernel, stable
In-Reply-To: <20260514-fbdev-v1-13-b3a2474fa720@cse.iitm.ac.in>
Am 14.05.26 um 10:24 schrieb Abdun Nihaal:
> Since commit 73ce73c30ba9 ("fbdev: Transfer video= option strings to
> caller; clarify ownership") the string returned from fb_get_options()
> is expected to be freed by the caller. But the string is not freed in
> vesafb_probe(). Fix that by freeing the option string after setup.
>
> Fixes: 73ce73c30ba9 ("fbdev: Transfer video= option strings to caller; clarify ownership")
> Cc: stable@vger.kernel.org
> Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/video/fbdev/vesafb.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c
> index f84f4db244bf..f1902056bd73 100644
> --- a/drivers/video/fbdev/vesafb.c
> +++ b/drivers/video/fbdev/vesafb.c
> @@ -269,6 +269,7 @@ static int vesafb_probe(struct platform_device *dev)
> /* ignore error return of fb_get_options */
> fb_get_options("vesafb", &option);
> vesafb_setup(option);
> + kfree(option);
>
> if (si->orig_video_isVGA != VIDEO_TYPE_VLFB)
> return -ENODEV;
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply
* Re: [PATCH 03/14] fbdev: metronomefb: fix potential memory leak in metronomefb_probe()
From: Thomas Zimmermann @ 2026-05-15 7:18 UTC (permalink / raw)
To: Abdun Nihaal, Helge Deller, Javier Martinez Canillas,
Benjamin Herrenschmidt, Andrew Morton, Sebastian Siewior,
Florian Tobias Schandinat, Ondrej Zary, Antonino Daplas,
Paul Mundt, Krzysztof Helt, Tomi Valkeinen, Michal Januszewski,
Heiko Schocher, Peter Jones
Cc: linux-fbdev, dri-devel, linux-kernel, stable
In-Reply-To: <20260514-fbdev-v1-3-b3a2474fa720@cse.iitm.ac.in>
Am 14.05.26 um 10:24 schrieb Abdun Nihaal:
> The memory allocated for pagerefs in fb_deferred_io_init() is not freed
> on the error path. Fix it by calling fb_deferred_io_cleanup().
>
> Fixes: 56c134f7f1b5 ("fbdev: Track deferred-I/O pages in pageref struct")
> Cc: stable@vger.kernel.org
> Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/video/fbdev/metronomefb.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/fbdev/metronomefb.c b/drivers/video/fbdev/metronomefb.c
> index 6f0942c6e5f1..83c614963a0a 100644
> --- a/drivers/video/fbdev/metronomefb.c
> +++ b/drivers/video/fbdev/metronomefb.c
> @@ -645,12 +645,14 @@ static int metronomefb_probe(struct platform_device *dev)
> info->flags = FBINFO_VIRTFB;
>
> info->fbdefio = &metronomefb_defio;
> - fb_deferred_io_init(info);
> + retval = fb_deferred_io_init(info);
> + if (retval)
> + goto err_free_irq;
>
> retval = fb_alloc_cmap(&info->cmap, 8, 0);
> if (retval < 0) {
> dev_err(&dev->dev, "Failed to allocate colormap\n");
> - goto err_free_irq;
> + goto err_fbdefio;
> }
>
> /* set cmap */
> @@ -673,6 +675,8 @@ static int metronomefb_probe(struct platform_device *dev)
>
> err_cmap:
> fb_dealloc_cmap(&info->cmap);
> +err_fbdefio:
> + fb_deferred_io_cleanup(info);
> err_free_irq:
> board->cleanup(par);
> err_csum_table:
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply
* Re: [PATCH 1/2] dt-bindings: leds: backlight: add Silergy SY7758
From: Krzysztof Kozlowski @ 2026-05-15 7:37 UTC (permalink / raw)
To: Alexandre Hamamdjian
Cc: Philippe Simons, Lee Jones, Daniel Thompson, Jingoo Han,
Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Helge Deller, dri-devel, linux-leds, devicetree, linux-kernel,
linux-fbdev
In-Reply-To: <20260511-sy7758-v1-1-999a33081304@gmail.com>
On Mon, May 11, 2026 at 12:08:02AM +0700, Alexandre Hamamdjian wrote:
> The Silergy SY7758 is an I2C-controlled multi-channel LED backlight
> driver typically used to drive the edge-lit LED strings of LCD panels
> in handheld and embedded devices. Brightness is programmed as a 12-bit
> linear value through two 8-bit registers.
>
> Document the binding for the new compatible "silergy,sy7758" so it can
> be referenced by board device trees and the matching driver, and add a
> MAINTAINERS entry covering both the binding and the upcoming driver.
>
> Co-developed-by: Philippe Simons <simons.philippe@gmail.com>
> Signed-off-by: Philippe Simons <simons.philippe@gmail.com>
> Signed-off-by: Alexandre Hamamdjian <azkali.limited@gmail.com>
> ---
> .../bindings/leds/backlight/silergy,sy7758.yaml | 47 ++++++++++++++++++++++
This was already sent two weeks ago:
<20260430-topic-sm8650-ayaneo-pocket-s2-sy7758-v2-1-308140640de9@linaro.org>
and that posting looks closer to complete.
Best regards,
Krzysztof
^ permalink raw reply
* Re: [PATCH 02/14] fbdev: broadsheetfb: fix potential memory leak in broadsheetfb_probe()
From: Thomas Zimmermann @ 2026-05-15 7:56 UTC (permalink / raw)
To: Abdun Nihaal, Helge Deller, Javier Martinez Canillas,
Benjamin Herrenschmidt, Andrew Morton, Sebastian Siewior,
Florian Tobias Schandinat, Ondrej Zary, Antonino Daplas,
Paul Mundt, Krzysztof Helt, Tomi Valkeinen, Michal Januszewski,
Heiko Schocher, Peter Jones
Cc: linux-fbdev, dri-devel, linux-kernel, stable
In-Reply-To: <20260514-fbdev-v1-2-b3a2474fa720@cse.iitm.ac.in>
Am 14.05.26 um 10:24 schrieb Abdun Nihaal:
> The memory allocated for pagerefs in fb_deferred_io_init() is not freed
> on the error path. Fix it by calling fb_deferred_io_cleanup().
>
> Fixes: 56c134f7f1b5 ("fbdev: Track deferred-I/O pages in pageref struct")
> Cc: stable@vger.kernel.org
> Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/video/fbdev/broadsheetfb.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/fbdev/broadsheetfb.c b/drivers/video/fbdev/broadsheetfb.c
> index c8ba098a8c42..582f1ee4c9b6 100644
> --- a/drivers/video/fbdev/broadsheetfb.c
> +++ b/drivers/video/fbdev/broadsheetfb.c
> @@ -1072,12 +1072,14 @@ static int broadsheetfb_probe(struct platform_device *dev)
> info->flags = FBINFO_VIRTFB;
>
> info->fbdefio = &broadsheetfb_defio;
> - fb_deferred_io_init(info);
> + retval = fb_deferred_io_init(info);
> + if (retval)
> + goto err_vfree;
>
> retval = fb_alloc_cmap(&info->cmap, 16, 0);
> if (retval < 0) {
> dev_err(&dev->dev, "Failed to allocate colormap\n");
> - goto err_vfree;
> + goto err_fbdefio;
> }
>
> /* set cmap */
> @@ -1121,6 +1123,8 @@ static int broadsheetfb_probe(struct platform_device *dev)
> board->cleanup(par);
> err_cmap:
> fb_dealloc_cmap(&info->cmap);
> +err_fbdefio:
> + fb_deferred_io_cleanup(info);
> err_vfree:
> vfree(videomemory);
> err_fb_rel:
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply
* Re: [PATCH 01/14] fbdev: hecubafb: fix potential memory leak in hecubafb_probe()
From: Thomas Zimmermann @ 2026-05-15 7:57 UTC (permalink / raw)
To: Abdun Nihaal, Helge Deller, Javier Martinez Canillas,
Benjamin Herrenschmidt, Andrew Morton, Sebastian Siewior,
Florian Tobias Schandinat, Ondrej Zary, Antonino Daplas,
Paul Mundt, Krzysztof Helt, Tomi Valkeinen, Michal Januszewski,
Heiko Schocher, Peter Jones
Cc: linux-fbdev, dri-devel, linux-kernel, stable
In-Reply-To: <20260514-fbdev-v1-1-b3a2474fa720@cse.iitm.ac.in>
Am 14.05.26 um 10:24 schrieb Abdun Nihaal:
> The memory allocated for pagerefs in fb_deferred_io_init() is not freed
> on the error path. Fix it by calling fb_deferred_io_cleanup().
>
> Fixes: 56c134f7f1b5 ("fbdev: Track deferred-I/O pages in pageref struct")
> Cc: stable@vger.kernel.org
> Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/video/fbdev/hecubafb.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/video/fbdev/hecubafb.c b/drivers/video/fbdev/hecubafb.c
> index 3547d58a29cf..dd2af980f3d8 100644
> --- a/drivers/video/fbdev/hecubafb.c
> +++ b/drivers/video/fbdev/hecubafb.c
> @@ -192,7 +192,9 @@ static int hecubafb_probe(struct platform_device *dev)
> info->flags = FBINFO_VIRTFB;
>
> info->fbdefio = &hecubafb_defio;
> - fb_deferred_io_init(info);
> + retval = fb_deferred_io_init(info);
> + if (retval)
> + goto err_fbdefio;
>
> retval = register_framebuffer(info);
> if (retval < 0)
> @@ -209,6 +211,8 @@ static int hecubafb_probe(struct platform_device *dev)
>
> return 0;
> err_fbreg:
> + fb_deferred_io_cleanup(info);
> +err_fbdefio:
> framebuffer_release(info);
> err_fballoc:
> vfree(videomemory);
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply
* [PATCH] staging: sm750: rename CamelCase variable in sm750.c
From: Rupesh Majhi @ 2026-05-15 10:38 UTC (permalink / raw)
To: gregkh
Cc: sudipm.mukherjee, teddy.wang, linux-fbdev, linux-staging,
linux-kernel, Rupesh Majhi
Renamed the following CamelCase variables to snake_case to comply
with Linux kernel coding style:
- pvReg -> pv_reg
- setAllEngOff -> set_all_eng_off
Issue found by checkpatch.
Signed-off-by: Rupesh Majhi <zoone.rupert@gmail.com>
---
drivers/staging/sm750fb/sm750.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 996a586a3727..9b30627a19d0 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -755,7 +755,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
* must be set after crtc member initialized
*/
crtc->cursor.offset = crtc->o_screen + crtc->vidmem_size - 1024;
- crtc->cursor.mmio = sm750_dev->pvReg +
+ crtc->cursor.mmio = sm750_dev->pv_reg +
0x800f0 + (int)crtc->channel * 0x140;
crtc->cursor.max_h = 64;
@@ -860,7 +860,7 @@ static void sm750fb_setup(struct sm750_dev *sm750_dev, char *src)
sm750_dev->init_parm.mem_clk = 0;
sm750_dev->init_parm.master_clk = 0;
sm750_dev->init_parm.power_mode = 0;
- sm750_dev->init_parm.setAllEngOff = 0;
+ sm750_dev->init_parm.set_all_eng_off = 0;
sm750_dev->init_parm.reset_memory = 1;
/* defaultly turn g_hwcursor on for both view */
@@ -1059,7 +1059,7 @@ static void lynxfb_pci_remove(struct pci_dev *pdev)
sm750fb_framebuffer_release(sm750_dev);
arch_phys_wc_del(sm750_dev->mtrr.vram);
- iounmap(sm750_dev->pvReg);
+ iounmap(sm750_dev->pv_reg);
iounmap(sm750_dev->vmem);
pci_release_region(pdev, 1);
kfree(g_settings);
--
2.43.0
^ permalink raw reply related
* Re: [PATCH] staging: sm750: rename CamelCase variable in sm750.c
From: Ahmet Sezgin Duran @ 2026-05-15 11:18 UTC (permalink / raw)
To: Rupesh Majhi, gregkh
Cc: sudipm.mukherjee, teddy.wang, linux-fbdev, linux-staging,
linux-kernel
In-Reply-To: <20260515103811.2808620-1-zoone.rupert@gmail.com>
On 5/15/26 1:38 PM, Rupesh Majhi wrote:
> Renamed the following CamelCase variables to snake_case to comply
> with Linux kernel coding style:
> - pvReg -> pv_reg
> - setAllEngOff -> set_all_eng_off
>
> Issue found by checkpatch.
>
> Signed-off-by: Rupesh Majhi <zoone.rupert@gmail.com>
> ---
> drivers/staging/sm750fb/sm750.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
> index 996a586a3727..9b30627a19d0 100644
> --- a/drivers/staging/sm750fb/sm750.c
> +++ b/drivers/staging/sm750fb/sm750.c
> @@ -755,7 +755,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
> * must be set after crtc member initialized
> */
> crtc->cursor.offset = crtc->o_screen + crtc->vidmem_size - 1024;
> - crtc->cursor.mmio = sm750_dev->pvReg +
> + crtc->cursor.mmio = sm750_dev->pv_reg +
> 0x800f0 + (int)crtc->channel * 0x140;
>
> crtc->cursor.max_h = 64;
> @@ -860,7 +860,7 @@ static void sm750fb_setup(struct sm750_dev *sm750_dev, char *src)
> sm750_dev->init_parm.mem_clk = 0;
> sm750_dev->init_parm.master_clk = 0;
> sm750_dev->init_parm.power_mode = 0;
> - sm750_dev->init_parm.setAllEngOff = 0;
> + sm750_dev->init_parm.set_all_eng_off = 0;
> sm750_dev->init_parm.reset_memory = 1;
>
> /* defaultly turn g_hwcursor on for both view */
> @@ -1059,7 +1059,7 @@ static void lynxfb_pci_remove(struct pci_dev *pdev)
> sm750fb_framebuffer_release(sm750_dev);
> arch_phys_wc_del(sm750_dev->mtrr.vram);
>
> - iounmap(sm750_dev->pvReg);
> + iounmap(sm750_dev->pv_reg);
> iounmap(sm750_dev->vmem);
> pci_release_region(pdev, 1);
> kfree(g_settings);
Did you compile this patch?
Regards,
Ahmet Sezgin Duran
^ permalink raw reply
* Re: [PATCH] staging: sm750: rename CamelCase variable in sm750.c
From: M.samet Duman @ 2026-05-15 12:59 UTC (permalink / raw)
To: Ahmet Sezgin Duran
Cc: Rupesh Majhi, gregkh, sudipm.mukherjee, teddy.wang, linux-fbdev,
linux-staging, linux-kernel
In-Reply-To: <03e9e75a-c63c-4a63-88b8-2287daf6c4ad@sezginduran.net>
Not a change that will set the world on fire.
--
Samet
> 2026. 5. 15. 오후 2:46, Ahmet Sezgin Duran <ahmet@sezginduran.net> 작성:
>
> On 5/15/26 1:38 PM, Rupesh Majhi wrote:
>> Renamed the following CamelCase variables to snake_case to comply
>> with Linux kernel coding style:
>> - pvReg -> pv_reg
>> - setAllEngOff -> set_all_eng_off
>> Issue found by checkpatch.
>> Signed-off-by: Rupesh Majhi <zoone.rupert@gmail.com>
>> ---
>> drivers/staging/sm750fb/sm750.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>> diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
>> index 996a586a3727..9b30627a19d0 100644
>> --- a/drivers/staging/sm750fb/sm750.c
>> +++ b/drivers/staging/sm750fb/sm750.c
>> @@ -755,7 +755,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
>> * must be set after crtc member initialized
>> */
>> crtc->cursor.offset = crtc->o_screen + crtc->vidmem_size - 1024;
>> - crtc->cursor.mmio = sm750_dev->pvReg +
>> + crtc->cursor.mmio = sm750_dev->pv_reg +
>> 0x800f0 + (int)crtc->channel * 0x140;
>> crtc->cursor.max_h = 64;
>> @@ -860,7 +860,7 @@ static void sm750fb_setup(struct sm750_dev *sm750_dev, char *src)
>> sm750_dev->init_parm.mem_clk = 0;
>> sm750_dev->init_parm.master_clk = 0;
>> sm750_dev->init_parm.power_mode = 0;
>> - sm750_dev->init_parm.setAllEngOff = 0;
>> + sm750_dev->init_parm.set_all_eng_off = 0;
>> sm750_dev->init_parm.reset_memory = 1;
>> /* defaultly turn g_hwcursor on for both view */
>> @@ -1059,7 +1059,7 @@ static void lynxfb_pci_remove(struct pci_dev *pdev)
>> sm750fb_framebuffer_release(sm750_dev);
>> arch_phys_wc_del(sm750_dev->mtrr.vram);
>> - iounmap(sm750_dev->pvReg);
>> + iounmap(sm750_dev->pv_reg);
>> iounmap(sm750_dev->vmem);
>> pci_release_region(pdev, 1);
>> kfree(g_settings);
>
> Did you compile this patch?
>
> Regards,
> Ahmet Sezgin Duran
>
^ permalink raw reply
* Re: [PATCH] staging: sm750: rename CamelCase variable in sm750.c
From: Greg KH @ 2026-05-15 13:13 UTC (permalink / raw)
To: M.samet Duman
Cc: Ahmet Sezgin Duran, Rupesh Majhi, sudipm.mukherjee, teddy.wang,
linux-fbdev, linux-staging, linux-kernel
In-Reply-To: <5A8D2A45-3C03-4D41-96BB-4F2ECC499813@icloud.com>
On Fri, May 15, 2026 at 03:59:18PM +0300, M.samet Duman wrote:
>
> Not a change that will set the world on fire.
Please only provide useful review comments.
thanks,
greg k-h
^ permalink raw reply
* [PATCH 6.6 394/474] fbdev: defio: Disconnect deferred I/O from the lifetime of struct fb_info
From: Greg Kroah-Hartman @ 2026-05-15 15:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Thomas Zimmermann, Helge Deller,
linux-fbdev, dri-devel, Sasha Levin
In-Reply-To: <20260515154715.053014143@linuxfoundation.org>
6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Zimmermann <tzimmermann@suse.de>
[ Upstream commit 9ded47ad003f09a94b6a710b5c47f4aa5ceb7429 ]
Hold state of deferred I/O in struct fb_deferred_io_state. Allocate an
instance as part of initializing deferred I/O and remove it only after
the final mapping has been closed. If the fb_info and the contained
deferred I/O meanwhile goes away, clear struct fb_deferred_io_state.info
to invalidate the mapping. Any access will then result in a SIGBUS
signal.
Fixes a long-standing problem, where a device hot-unplug happens while
user space still has an active mapping of the graphics memory. The hot-
unplug frees the instance of struct fb_info. Accessing the memory will
operate on undefined state.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 60b59beafba8 ("fbdev: mm: Deferred IO support")
Cc: Helge Deller <deller@gmx.de>
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: stable@vger.kernel.org # v2.6.22+
Signed-off-by: Helge Deller <deller@gmx.de>
[ replaced `kzalloc_obj` with `kzalloc`, and dropped `mutex_destroy(&fbdefio->lock)` ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/video/fbdev/core/fb_defio.c | 179 ++++++++++++++++++++++++++++--------
include/linux/fb.h | 4
2 files changed, 145 insertions(+), 38 deletions(-)
--- a/drivers/video/fbdev/core/fb_defio.c
+++ b/drivers/video/fbdev/core/fb_defio.c
@@ -23,6 +23,75 @@
#include <linux/rmap.h>
#include <linux/pagemap.h>
+/*
+ * struct fb_deferred_io_state
+ */
+
+struct fb_deferred_io_state {
+ struct kref ref;
+
+ struct mutex lock; /* mutex that protects the pageref list */
+ /* fields protected by lock */
+ struct fb_info *info;
+};
+
+static struct fb_deferred_io_state *fb_deferred_io_state_alloc(void)
+{
+ struct fb_deferred_io_state *fbdefio_state;
+
+ fbdefio_state = kzalloc(sizeof(*fbdefio_state), GFP_KERNEL);
+ if (!fbdefio_state)
+ return NULL;
+
+ kref_init(&fbdefio_state->ref);
+ mutex_init(&fbdefio_state->lock);
+
+ return fbdefio_state;
+}
+
+static void fb_deferred_io_state_release(struct fb_deferred_io_state *fbdefio_state)
+{
+ mutex_destroy(&fbdefio_state->lock);
+
+ kfree(fbdefio_state);
+}
+
+static void fb_deferred_io_state_get(struct fb_deferred_io_state *fbdefio_state)
+{
+ kref_get(&fbdefio_state->ref);
+}
+
+static void __fb_deferred_io_state_release(struct kref *ref)
+{
+ struct fb_deferred_io_state *fbdefio_state =
+ container_of(ref, struct fb_deferred_io_state, ref);
+
+ fb_deferred_io_state_release(fbdefio_state);
+}
+
+static void fb_deferred_io_state_put(struct fb_deferred_io_state *fbdefio_state)
+{
+ kref_put(&fbdefio_state->ref, __fb_deferred_io_state_release);
+}
+
+/*
+ * struct vm_operations_struct
+ */
+
+static void fb_deferred_io_vm_open(struct vm_area_struct *vma)
+{
+ struct fb_deferred_io_state *fbdefio_state = vma->vm_private_data;
+
+ fb_deferred_io_state_get(fbdefio_state);
+}
+
+static void fb_deferred_io_vm_close(struct vm_area_struct *vma)
+{
+ struct fb_deferred_io_state *fbdefio_state = vma->vm_private_data;
+
+ fb_deferred_io_state_put(fbdefio_state);
+}
+
static struct page *fb_deferred_io_page(struct fb_info *info, unsigned long offs)
{
void *screen_base = (void __force *) info->screen_base;
@@ -93,17 +162,31 @@ static void fb_deferred_io_pageref_put(s
/* this is to find and return the vmalloc-ed fb pages */
static vm_fault_t fb_deferred_io_fault(struct vm_fault *vmf)
{
+ struct fb_info *info;
unsigned long offset;
struct page *page;
- struct fb_info *info = vmf->vma->vm_private_data;
+ vm_fault_t ret;
+ struct fb_deferred_io_state *fbdefio_state = vmf->vma->vm_private_data;
+
+ mutex_lock(&fbdefio_state->lock);
+
+ info = fbdefio_state->info;
+ if (!info) {
+ ret = VM_FAULT_SIGBUS; /* our device is gone */
+ goto err_mutex_unlock;
+ }
offset = vmf->pgoff << PAGE_SHIFT;
- if (offset >= info->fix.smem_len)
- return VM_FAULT_SIGBUS;
+ if (offset >= info->fix.smem_len) {
+ ret = VM_FAULT_SIGBUS;
+ goto err_mutex_unlock;
+ }
page = fb_deferred_io_page(info, offset);
- if (!page)
- return VM_FAULT_SIGBUS;
+ if (!page) {
+ ret = VM_FAULT_SIGBUS;
+ goto err_mutex_unlock;
+ }
get_page(page);
@@ -115,8 +198,15 @@ static vm_fault_t fb_deferred_io_fault(s
BUG_ON(!page->mapping);
page->index = vmf->pgoff; /* for page_mkclean() */
+ mutex_unlock(&fbdefio_state->lock);
+
vmf->page = page;
+
return 0;
+
+err_mutex_unlock:
+ mutex_unlock(&fbdefio_state->lock);
+ return ret;
}
int fb_deferred_io_fsync(struct file *file, loff_t start, loff_t end, int datasync)
@@ -143,15 +233,24 @@ EXPORT_SYMBOL_GPL(fb_deferred_io_fsync);
* Adds a page to the dirty list. Call this from struct
* vm_operations_struct.page_mkwrite.
*/
-static vm_fault_t fb_deferred_io_track_page(struct fb_info *info, unsigned long offset,
- struct page *page)
+static vm_fault_t fb_deferred_io_track_page(struct fb_deferred_io_state *fbdefio_state,
+ unsigned long offset, struct page *page)
{
- struct fb_deferred_io *fbdefio = info->fbdefio;
+ struct fb_info *info;
+ struct fb_deferred_io *fbdefio;
struct fb_deferred_io_pageref *pageref;
vm_fault_t ret;
/* protect against the workqueue changing the page list */
- mutex_lock(&fbdefio->lock);
+ mutex_lock(&fbdefio_state->lock);
+
+ info = fbdefio_state->info;
+ if (!info) {
+ ret = VM_FAULT_SIGBUS; /* our device is gone */
+ goto err_mutex_unlock;
+ }
+
+ fbdefio = info->fbdefio;
pageref = fb_deferred_io_pageref_get(info, offset, page);
if (WARN_ON_ONCE(!pageref)) {
@@ -169,50 +268,38 @@ static vm_fault_t fb_deferred_io_track_p
*/
lock_page(pageref->page);
- mutex_unlock(&fbdefio->lock);
+ mutex_unlock(&fbdefio_state->lock);
/* come back after delay to process the deferred IO */
schedule_delayed_work(&info->deferred_work, fbdefio->delay);
return VM_FAULT_LOCKED;
err_mutex_unlock:
- mutex_unlock(&fbdefio->lock);
+ mutex_unlock(&fbdefio_state->lock);
return ret;
}
-/*
- * fb_deferred_io_page_mkwrite - Mark a page as written for deferred I/O
- * @fb_info: The fbdev info structure
- * @vmf: The VM fault
- *
- * This is a callback we get when userspace first tries to
- * write to the page. We schedule a workqueue. That workqueue
- * will eventually mkclean the touched pages and execute the
- * deferred framebuffer IO. Then if userspace touches a page
- * again, we repeat the same scheme.
- *
- * Returns:
- * VM_FAULT_LOCKED on success, or a VM_FAULT error otherwise.
- */
-static vm_fault_t fb_deferred_io_page_mkwrite(struct fb_info *info, struct vm_fault *vmf)
+static vm_fault_t fb_deferred_io_page_mkwrite(struct fb_deferred_io_state *fbdefio_state,
+ struct vm_fault *vmf)
{
unsigned long offset = vmf->pgoff << PAGE_SHIFT;
struct page *page = vmf->page;
file_update_time(vmf->vma->vm_file);
- return fb_deferred_io_track_page(info, offset, page);
+ return fb_deferred_io_track_page(fbdefio_state, offset, page);
}
-/* vm_ops->page_mkwrite handler */
static vm_fault_t fb_deferred_io_mkwrite(struct vm_fault *vmf)
{
- struct fb_info *info = vmf->vma->vm_private_data;
+ struct fb_deferred_io_state *fbdefio_state = vmf->vma->vm_private_data;
- return fb_deferred_io_page_mkwrite(info, vmf);
+ return fb_deferred_io_page_mkwrite(fbdefio_state, vmf);
}
static const struct vm_operations_struct fb_deferred_io_vm_ops = {
+ .open = fb_deferred_io_vm_open,
+ .close = fb_deferred_io_vm_close,
.fault = fb_deferred_io_fault,
.page_mkwrite = fb_deferred_io_mkwrite,
};
@@ -227,7 +314,10 @@ int fb_deferred_io_mmap(struct fb_info *
vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
if (!(info->flags & FBINFO_VIRTFB))
vm_flags_set(vma, VM_IO);
- vma->vm_private_data = info;
+ vma->vm_private_data = info->fbdefio_state;
+
+ fb_deferred_io_state_get(info->fbdefio_state); /* released in vma->vm_ops->close() */
+
return 0;
}
EXPORT_SYMBOL_GPL(fb_deferred_io_mmap);
@@ -238,9 +328,10 @@ static void fb_deferred_io_work(struct w
struct fb_info *info = container_of(work, struct fb_info, deferred_work.work);
struct fb_deferred_io_pageref *pageref, *next;
struct fb_deferred_io *fbdefio = info->fbdefio;
+ struct fb_deferred_io_state *fbdefio_state = info->fbdefio_state;
/* here we mkclean the pages, then do all deferred IO */
- mutex_lock(&fbdefio->lock);
+ mutex_lock(&fbdefio_state->lock);
list_for_each_entry(pageref, &fbdefio->pagereflist, list) {
struct page *cur = pageref->page;
lock_page(cur);
@@ -255,12 +346,13 @@ static void fb_deferred_io_work(struct w
list_for_each_entry_safe(pageref, next, &fbdefio->pagereflist, list)
fb_deferred_io_pageref_put(pageref, info);
- mutex_unlock(&fbdefio->lock);
+ mutex_unlock(&fbdefio_state->lock);
}
int fb_deferred_io_init(struct fb_info *info)
{
struct fb_deferred_io *fbdefio = info->fbdefio;
+ struct fb_deferred_io_state *fbdefio_state;
struct fb_deferred_io_pageref *pagerefs;
unsigned long npagerefs, i;
int ret;
@@ -270,7 +362,11 @@ int fb_deferred_io_init(struct fb_info *
if (WARN_ON(!info->fix.smem_len))
return -EINVAL;
- mutex_init(&fbdefio->lock);
+ fbdefio_state = fb_deferred_io_state_alloc();
+ if (!fbdefio_state)
+ return -ENOMEM;
+ fbdefio_state->info = info;
+
INIT_DELAYED_WORK(&info->deferred_work, fb_deferred_io_work);
INIT_LIST_HEAD(&fbdefio->pagereflist);
if (fbdefio->delay == 0) /* set a default of 1 s */
@@ -289,10 +385,12 @@ int fb_deferred_io_init(struct fb_info *
info->npagerefs = npagerefs;
info->pagerefs = pagerefs;
+ info->fbdefio_state = fbdefio_state;
+
return 0;
err:
- mutex_destroy(&fbdefio->lock);
+ fb_deferred_io_state_release(fbdefio_state);
return ret;
}
EXPORT_SYMBOL_GPL(fb_deferred_io_init);
@@ -333,11 +431,18 @@ EXPORT_SYMBOL_GPL(fb_deferred_io_release
void fb_deferred_io_cleanup(struct fb_info *info)
{
- struct fb_deferred_io *fbdefio = info->fbdefio;
+ struct fb_deferred_io_state *fbdefio_state = info->fbdefio_state;
fb_deferred_io_lastclose(info);
+ info->fbdefio_state = NULL;
+
+ mutex_lock(&fbdefio_state->lock);
+ fbdefio_state->info = NULL;
+ mutex_unlock(&fbdefio_state->lock);
+
+ fb_deferred_io_state_put(fbdefio_state);
+
kvfree(info->pagerefs);
- mutex_destroy(&fbdefio->lock);
}
EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -214,11 +214,12 @@ struct fb_deferred_io {
unsigned long delay;
bool sort_pagereflist; /* sort pagelist by offset */
int open_count; /* number of opened files; protected by fb_info lock */
- struct mutex lock; /* mutex that protects the pageref list */
struct list_head pagereflist; /* list of pagerefs for touched pages */
/* callback */
void (*deferred_io)(struct fb_info *info, struct list_head *pagelist);
};
+
+struct fb_deferred_io_state;
#endif
/*
@@ -476,6 +477,7 @@ struct fb_info {
unsigned long npagerefs;
struct fb_deferred_io_pageref *pagerefs;
struct fb_deferred_io *fbdefio;
+ struct fb_deferred_io_state *fbdefio_state;
#endif
const struct fb_ops *fbops;
^ permalink raw reply
* [PATCH 6.6 395/474] firmware: google: framebuffer: Do not unregister platform device
From: Greg Kroah-Hartman @ 2026-05-15 15:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Thomas Zimmermann, Tzung-Bi Shih,
Julius Werner, Javier Martinez Canillas, Hans de Goede,
linux-fbdev, Sasha Levin
In-Reply-To: <20260515154715.053014143@linuxfoundation.org>
6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Zimmermann <tzimmermann@suse.de>
[ Upstream commit 5cd28bd28c8ce426b56ce4230dbd17537181d5ad ]
The native driver takes over the framebuffer aperture by removing the
system- framebuffer platform device. Afterwards the pointer in drvdata
is dangling. Remove the entire logic around drvdata and let the kernel's
aperture helpers handle this. The platform device depends on the native
hardware device instead of the coreboot device anyway.
When commit 851b4c14532d ("firmware: coreboot: Add coreboot framebuffer
driver") added the coreboot framebuffer code, the kernel did not support
device-based aperture management. Instead native driviers only removed
the conflicting fbdev device. At that point, unregistering the framebuffer
device most likely worked correctly. It was definitely broken after
commit d9702b2a2171 ("fbdev/simplefb: Do not use struct
fb_info.apertures"). So take this commit for the Fixes tag. Earlier
releases might work depending on the native hardware driver.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: d9702b2a2171 ("fbdev/simplefb: Do not use struct fb_info.apertures")
Acked-by: Tzung-Bi Shih <tzungbi@kernel.org>
Acked-by: Julius Werner <jwerner@chromium.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: Hans de Goede <hansg@kernel.org>
Cc: linux-fbdev@vger.kernel.org
Cc: <stable@vger.kernel.org> # v6.3+
Link: https://patch.msgid.link/20260217155836.96267-2-tzimmermann@suse.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/firmware/google/framebuffer-coreboot.c | 10 ----------
1 file changed, 10 deletions(-)
--- a/drivers/firmware/google/framebuffer-coreboot.c
+++ b/drivers/firmware/google/framebuffer-coreboot.c
@@ -64,22 +64,12 @@ static int framebuffer_probe(struct core
sizeof(pdata));
if (IS_ERR(pdev))
pr_warn("coreboot: could not register framebuffer\n");
- else
- dev_set_drvdata(&dev->dev, pdev);
return PTR_ERR_OR_ZERO(pdev);
}
-static void framebuffer_remove(struct coreboot_device *dev)
-{
- struct platform_device *pdev = dev_get_drvdata(&dev->dev);
-
- platform_device_unregister(pdev);
-}
-
static struct coreboot_driver framebuffer_driver = {
.probe = framebuffer_probe,
- .remove = framebuffer_remove,
.drv = {
.name = "framebuffer",
},
^ permalink raw reply
* Re: [PATCH v2 1/2] dt-bindings: leds: backlight: document the SY7758 6-channel High Efficiency LED Driver
From: Daniel Thompson @ 2026-05-15 16:16 UTC (permalink / raw)
To: Neil Armstrong
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev, KancyJoe,
Krzysztof Kozlowski
In-Reply-To: <20260430-topic-sm8650-ayaneo-pocket-s2-sy7758-v2-1-308140640de9@linaro.org>
On Thu, Apr 30, 2026 at 11:47:15AM +0200, Neil Armstrong wrote:
> Document the Silergy SY7758 6-channel High Efficiency LED Driver
> used for backlight brightness control.
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Daniel Thompson (RISCstar) <danielt@kernel.org>
Daniel.
^ permalink raw reply
* Re: [PATCH v2 2/2] backlight: Add SY7758 6-channel High Efficiency LED Driver support
From: Daniel Thompson @ 2026-05-15 16:28 UTC (permalink / raw)
To: Neil Armstrong
Cc: Lee Jones, Jingoo Han, Pavel Machek, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Helge Deller, dri-devel,
linux-leds, devicetree, linux-kernel, linux-fbdev, KancyJoe
In-Reply-To: <20260430-topic-sm8650-ayaneo-pocket-s2-sy7758-v2-2-308140640de9@linaro.org>
On Thu, Apr 30, 2026 at 11:47:16AM +0200, Neil Armstrong wrote:
> From: KancyJoe <kancy2333@outlook.com>
>
> Implement support for the Silergy SY7758 6-channel High Efficiency LED
> Driver used for backlight brightness control in the Ayaneo Pocket S2
> dual-DSI panel.
>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> Signed-off-by: KancyJoe <kancy2333@outlook.com>
> ---
> drivers/video/backlight/Kconfig | 8 +
> drivers/video/backlight/Makefile | 1 +
> drivers/video/backlight/sy7758.c | 311 +++++++++++++++++++++++++++++++++++++++
> 3 files changed, 320 insertions(+)
> <snip>
> diff --git a/drivers/video/backlight/sy7758.c b/drivers/video/backlight/sy7758.c
> new file mode 100644
> index 000000000000..9b2d3bbb4ded
> --- /dev/null
> +++ b/drivers/video/backlight/sy7758.c
> @@ -0,0 +1,311 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Silergy SY7758 6-channel High Efficiency LED Driver
> + *
> + * Copyright (C) 2025 Kancy Joe <kancy2333@outlook.com>
> + * Copyright (C) 2026 Linaro Limited
> + * Author: Neil Armstrong <neil.armstrong@linaro.org>
I'm a bit confused by this comment. The git author and the
MODULE_AUTHOR() is Kancy Joe. What does this comment signify?
> + */
> <snip>
> +/* OTP memory */
> +#define REG_OTP_CFG98 0x98
> +#define REG_OTP_CFG9E 0x9E
> +#define REG_OTP_CFG0 0xA0
> +#define REG_OTP_CFG1 0xA1
> +#define REG_OTP_CFG2 0xA2
> +#define REG_OTP_CFG3 0xA3
> +#define REG_OTP_CFG4 0xA4
> +#define REG_OTP_CFG5 0xA5
> +#define REG_OTP_CFG6 0xA6
> +#define REG_OTP_CFG7 0xA7
> +#define REG_OTP_CFG9 0xA9
> +#define REG_OTP_CFGA 0xAA
> +#define REG_OTP_CFGE 0xAE
There seems to be a lot of unused macros here, especially
combined with the unused bitfields that tell us how to interpret
the values.
Do we need them?
> <snip>
> +static int sy7758_probe(struct i2c_client *client)
> +{
> + struct backlight_properties props = { };
> + struct device *dev = &client->dev;
> + struct sy7758 *sydev;
> + unsigned int dev_id;
> + int ret;
> +
> + sydev = devm_kzalloc(dev, sizeof(*sydev), GFP_KERNEL);
> + if (!sydev)
> + return -ENOMEM;
> +
> + i2c_set_clientdata(client, sydev);
> +
> + /* Initialize regmap */
> + sydev->client = client;
> + sydev->regmap = devm_regmap_init_i2c(client, &sy7758_regmap_config);
> + if (IS_ERR(sydev->regmap))
> + return dev_err_probe(dev, PTR_ERR(sydev->regmap),
> + "failed to init regmap\n");
> +
> + /* Get and enable regulators */
> + ret = devm_regulator_get_enable(dev, "vddio");
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to get regulator\n");
> +
> + usleep_range(100, 200);
Any reason not to use fsleep() here?
> + /* Get enable GPIO and set to high */
> + sydev->gpio = devm_gpiod_get(dev, "enable", GPIOD_OUT_HIGH);
> + if (IS_ERR(sydev->gpio))
> + return dev_err_probe(dev, PTR_ERR(sydev->gpio),
> + "failed to get enable GPIO\n");
> +
> + /* Let some time for HW to settle */
> + usleep_range(10000, 11000);
And here?
> +
> + /* try read and check device id */
> + ret = regmap_read(sydev->regmap, REG_DEV_ID, &dev_id);
> + if (ret < 0)
> + return dev_err_probe(dev, ret, "failed to read device id\n");
> + if (dev_id != 0x63) {
> + dev_err(dev, "unexpected device id: 0x%02x\n", dev_id);
> + return -ENODEV;
> + }
> +
> + /* Initialize and set default brightness */
> + ret = sy7758_init(sydev);
> + if (ret)
> + return ret;
> +
> + props.type = BACKLIGHT_RAW;
> + props.max_brightness = MAX_BRIGHTNESS;
> + props.brightness = DEFAULT_BRIGHTNESS;
> + props.scale = BACKLIGHT_SCALE_LINEAR;
> +
> + sydev->bl = devm_backlight_device_register(dev, "sy7758-backlight",
> + dev, sydev, &sy7758_backlight_ops,
> + &props);
> + if (IS_ERR(sydev->bl))
> + return dev_err_probe(dev, PTR_ERR(sydev->bl),
> + "failed to register backlight device\n");
> +
> + return backlight_update_status(sydev->bl);
> +}
Daniel.
^ permalink raw reply
* Re: [PATCH] staging: sm750: rename CamelCase variable in sm750.c
From: Ahmet Sezgin Duran @ 2026-05-15 17:19 UTC (permalink / raw)
To: Rupert Zoone, Greg KH
Cc: M.samet Duman, sudipm.mukherjee, teddy.wang, linux-fbdev,
linux-staging, linux-kernel
In-Reply-To: <CABpb+S7EcSUnmnCn_aRURnVON39Jyrxe3oktnPphyOFzpaTU0g@mail.gmail.com>
On 5/15/26 7:37 PM, Rupert Zoone wrote:
> Hi Ahmet,
> Yes, I compiled the patch successfully without errors and warnings.
> rupesh@yantra:~/patches/staging$ grep -n "pv_reg\|set_all_eng_off"
> drivers/staging/sm750fb/sm750.c | head -10
> 758: crtc->cursor.mmio = sm750_dev->pv_reg +
> 863: sm750_dev->init_parm.set_all_eng_off = 0;
> 1062: iounmap(sm750_dev->pv_reg);
>
I asked if you compiled it, you wrote the grep results of variable names.
You might have forgotten to enable the sm750fb module. Make sure that
you enable it, then please, actually compile the changes, using `make`
or whatever actual command you use in order to compile.
Spoiler alert: No, it does not compile.
Regards,
Ahmet Sezgin Duran
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox