* [PATCH v4 0/2] staging: fbtft: cleanup fbtft_framebuffer_alloc()
@ 2025-07-01 9:40 Abdun Nihaal
2025-07-01 9:40 ` [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()" Abdun Nihaal
2025-07-01 9:40 ` [PATCH v4 2/2] staging: fbtft: cleanup error handling in fbtft_framebuffer_alloc() Abdun Nihaal
0 siblings, 2 replies; 7+ messages in thread
From: Abdun Nihaal @ 2025-07-01 9:40 UTC (permalink / raw)
To: andy
Cc: Abdun Nihaal, dan.carpenter, gregkh, lorenzo.stoakes, tzimmermann,
riyandhiman14, willy, notro, thomas.petazzoni, dri-devel,
linux-fbdev, linux-staging, linux-kernel
Cleanup error handling in fbtft_framebuffer_alloc()
This patchset includes the revert commit for the v1 patch, and the
cleanup patch that is not yet applied.
I have not included the v3 patch ("staging: fbtft: fix potential memory
leak in fbtft_framebuffer_alloc()") in this patchset, as it has been
already applied on staging-testing
v4:
- Add a revert patch to remove v1 patch
- Not included the patch that is already applied on staging-testing
- Added Reviewed-by tags
v3:
- Remove a redundant check before calling kfree
v2:
- Change the earlier patch to also handle the error code returned by
fb_deferred_io_init() and update Fixes tag to point to the commit that
introduced the memory allocation (which leads to leak).
- Add second patch to make the error handling order symmetric to
fbtft_framebuffer_release() and also remove managed allocation for
txbuf as suggested by Andy and Dan.
Link to v3: https://lore.kernel.org/linux-staging/cover.1751207100.git.abdun.nihaal@gmail.com/
Link to v2: https://lore.kernel.org/linux-staging/cover.1751086324.git.abdun.nihaal@gmail.com/T/#md111471ddd69e6ddb0a6b98e565551ffbd791a34
Link to v1: https://lore.kernel.org/all/20250626172412.18355-1-abdun.nihaal@gmail.com/
Abdun Nihaal (2):
Revert "staging: fbtft: fix potential memory leak in
fbtft_framebuffer_alloc()"
staging: fbtft: cleanup error handling in fbtft_framebuffer_alloc()
drivers/staging/fbtft/fbtft-core.c | 32 +++++++++++++++---------------
1 file changed, 16 insertions(+), 16 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"
2025-07-01 9:40 [PATCH v4 0/2] staging: fbtft: cleanup fbtft_framebuffer_alloc() Abdun Nihaal
@ 2025-07-01 9:40 ` Abdun Nihaal
2025-07-01 13:48 ` Andy Shevchenko
2025-07-01 14:13 ` Dan Carpenter
2025-07-01 9:40 ` [PATCH v4 2/2] staging: fbtft: cleanup error handling in fbtft_framebuffer_alloc() Abdun Nihaal
1 sibling, 2 replies; 7+ messages in thread
From: Abdun Nihaal @ 2025-07-01 9:40 UTC (permalink / raw)
To: andy
Cc: Abdun Nihaal, dan.carpenter, gregkh, lorenzo.stoakes, tzimmermann,
riyandhiman14, willy, notro, thomas.petazzoni, dri-devel,
linux-fbdev, linux-staging, linux-kernel
This reverts commit eb2cb7dab60f ("staging: fbtft: fix potential memory
leak in fbtft_framebuffer_alloc()").
An updated patch has been added as commit 505bffe21233 ("staging:
fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"),
and so reverting the old patch.
Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
---
Newly added in v4.
drivers/staging/fbtft/fbtft-core.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
index d920164e7710..8538b6bab6a5 100644
--- a/drivers/staging/fbtft/fbtft-core.c
+++ b/drivers/staging/fbtft/fbtft-core.c
@@ -695,7 +695,6 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
cleanup_deferred:
fb_deferred_io_cleanup(info);
release_framebuf:
- fb_deferred_io_cleanup(info);
framebuffer_release(info);
alloc_fail:
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/2] staging: fbtft: cleanup error handling in fbtft_framebuffer_alloc()
2025-07-01 9:40 [PATCH v4 0/2] staging: fbtft: cleanup fbtft_framebuffer_alloc() Abdun Nihaal
2025-07-01 9:40 ` [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()" Abdun Nihaal
@ 2025-07-01 9:40 ` Abdun Nihaal
1 sibling, 0 replies; 7+ messages in thread
From: Abdun Nihaal @ 2025-07-01 9:40 UTC (permalink / raw)
To: andy
Cc: Abdun Nihaal, dan.carpenter, gregkh, lorenzo.stoakes, tzimmermann,
riyandhiman14, willy, notro, thomas.petazzoni, dri-devel,
linux-fbdev, linux-staging, linux-kernel, Andy Shevchenko,
Andy Shevchenko
The error handling in fbtft_framebuffer_alloc() mixes managed allocation
and plain allocation, and performs error handling in an order different
from the order in fbtft_framebuffer_release().
Fix them by moving vmem allocation closer to where it is used, and using
plain kzalloc() for txbuf allocation.
Suggested-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Suggested-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
---
v3->v4:
- Added Reviewed-by tags
v2->v3:
- Remove the if check before kfree of txbuf.buf, because it is zero
initialized on allocation, and kfree is NULL aware.
Newly added in v2
drivers/staging/fbtft/fbtft-core.c | 31 +++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
index 8538b6bab6a5..9e7b84071174 100644
--- a/drivers/staging/fbtft/fbtft-core.c
+++ b/drivers/staging/fbtft/fbtft-core.c
@@ -568,18 +568,13 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
height = display->height;
}
- vmem_size = display->width * display->height * bpp / 8;
- vmem = vzalloc(vmem_size);
- if (!vmem)
- goto alloc_fail;
-
fbdefio = devm_kzalloc(dev, sizeof(struct fb_deferred_io), GFP_KERNEL);
if (!fbdefio)
- goto alloc_fail;
+ return NULL;
buf = devm_kzalloc(dev, 128, GFP_KERNEL);
if (!buf)
- goto alloc_fail;
+ return NULL;
if (display->gamma_num && display->gamma_len) {
gamma_curves = devm_kcalloc(dev,
@@ -588,12 +583,17 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
sizeof(gamma_curves[0]),
GFP_KERNEL);
if (!gamma_curves)
- goto alloc_fail;
+ return NULL;
}
info = framebuffer_alloc(sizeof(struct fbtft_par), dev);
if (!info)
- goto alloc_fail;
+ return NULL;
+
+ vmem_size = display->width * display->height * bpp / 8;
+ vmem = vzalloc(vmem_size);
+ if (!vmem)
+ goto release_framebuf;
info->screen_buffer = vmem;
info->fbops = &fbtft_ops;
@@ -613,7 +613,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
info->fix.accel = FB_ACCEL_NONE;
info->fix.smem_len = vmem_size;
if (fb_deferred_io_init(info))
- goto release_framebuf;
+ goto release_screen_buffer;
info->var.rotate = pdata->rotate;
info->var.xres = width;
@@ -668,7 +668,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
#endif
if (txbuflen > 0) {
- txbuf = devm_kzalloc(par->info->device, txbuflen, GFP_KERNEL);
+ txbuf = kzalloc(txbuflen, GFP_KERNEL);
if (!txbuf)
goto cleanup_deferred;
par->txbuf.buf = txbuf;
@@ -694,12 +694,10 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
cleanup_deferred:
fb_deferred_io_cleanup(info);
+release_screen_buffer:
+ vfree(info->screen_buffer);
release_framebuf:
framebuffer_release(info);
-
-alloc_fail:
- vfree(vmem);
-
return NULL;
}
EXPORT_SYMBOL(fbtft_framebuffer_alloc);
@@ -712,6 +710,9 @@ EXPORT_SYMBOL(fbtft_framebuffer_alloc);
*/
void fbtft_framebuffer_release(struct fb_info *info)
{
+ struct fbtft_par *par = info->par;
+
+ kfree(par->txbuf.buf);
fb_deferred_io_cleanup(info);
vfree(info->screen_buffer);
framebuffer_release(info);
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"
2025-07-01 9:40 ` [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()" Abdun Nihaal
@ 2025-07-01 13:48 ` Andy Shevchenko
2025-07-01 14:16 ` Dan Carpenter
2025-07-01 14:13 ` Dan Carpenter
1 sibling, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2025-07-01 13:48 UTC (permalink / raw)
To: Abdun Nihaal
Cc: andy, dan.carpenter, gregkh, lorenzo.stoakes, tzimmermann,
riyandhiman14, willy, notro, thomas.petazzoni, dri-devel,
linux-fbdev, linux-staging, linux-kernel
On Tue, Jul 01, 2025 at 03:10:22PM +0530, Abdun Nihaal wrote:
> This reverts commit eb2cb7dab60f ("staging: fbtft: fix potential memory
> leak in fbtft_framebuffer_alloc()").
>
> An updated patch has been added as commit 505bffe21233 ("staging:
> fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"),
> and so reverting the old patch.
Revert has its automatic line, please do not remove it.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"
2025-07-01 9:40 ` [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()" Abdun Nihaal
2025-07-01 13:48 ` Andy Shevchenko
@ 2025-07-01 14:13 ` Dan Carpenter
1 sibling, 0 replies; 7+ messages in thread
From: Dan Carpenter @ 2025-07-01 14:13 UTC (permalink / raw)
To: Abdun Nihaal
Cc: andy, gregkh, lorenzo.stoakes, tzimmermann, riyandhiman14, willy,
notro, thomas.petazzoni, dri-devel, linux-fbdev, linux-staging,
linux-kernel
On Tue, Jul 01, 2025 at 03:10:22PM +0530, Abdun Nihaal wrote:
> This reverts commit eb2cb7dab60f ("staging: fbtft: fix potential memory
> leak in fbtft_framebuffer_alloc()").
>
> An updated patch has been added as commit 505bffe21233 ("staging:
> fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"),
> and so reverting the old patch.
>
> Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
> ---
This is the wrong approach. The original patch was fine. Just
write the next patches on top of that.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"
2025-07-01 13:48 ` Andy Shevchenko
@ 2025-07-01 14:16 ` Dan Carpenter
2025-07-01 14:19 ` Greg KH
0 siblings, 1 reply; 7+ messages in thread
From: Dan Carpenter @ 2025-07-01 14:16 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Abdun Nihaal, andy, gregkh, lorenzo.stoakes, tzimmermann,
riyandhiman14, willy, notro, thomas.petazzoni, dri-devel,
linux-fbdev, linux-staging, linux-kernel
On Tue, Jul 01, 2025 at 04:48:45PM +0300, Andy Shevchenko wrote:
> On Tue, Jul 01, 2025 at 03:10:22PM +0530, Abdun Nihaal wrote:
> > This reverts commit eb2cb7dab60f ("staging: fbtft: fix potential memory
> > leak in fbtft_framebuffer_alloc()").
> >
> > An updated patch has been added as commit 505bffe21233 ("staging:
> > fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"),
> > and so reverting the old patch.
>
> Revert has its automatic line, please do not remove it.
Why?
I hate the revert format. It is from when git was invented in 2005.
It sets you up for failure. These days we have so many other things
that we want in patches.
1) The subsystem prefix in the subject
2) The 12 character hashes
3) A proper commit message
4) A Fixes tag
The automated revert commit messages don't have any of that. It's
always better to hand write them.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"
2025-07-01 14:16 ` Dan Carpenter
@ 2025-07-01 14:19 ` Greg KH
0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2025-07-01 14:19 UTC (permalink / raw)
To: Dan Carpenter
Cc: Andy Shevchenko, Abdun Nihaal, andy, lorenzo.stoakes, tzimmermann,
riyandhiman14, willy, notro, thomas.petazzoni, dri-devel,
linux-fbdev, linux-staging, linux-kernel
On Tue, Jul 01, 2025 at 05:16:07PM +0300, Dan Carpenter wrote:
> On Tue, Jul 01, 2025 at 04:48:45PM +0300, Andy Shevchenko wrote:
> > On Tue, Jul 01, 2025 at 03:10:22PM +0530, Abdun Nihaal wrote:
> > > This reverts commit eb2cb7dab60f ("staging: fbtft: fix potential memory
> > > leak in fbtft_framebuffer_alloc()").
> > >
> > > An updated patch has been added as commit 505bffe21233 ("staging:
> > > fbtft: fix potential memory leak in fbtft_framebuffer_alloc()"),
> > > and so reverting the old patch.
> >
> > Revert has its automatic line, please do not remove it.
>
> Why?
>
> I hate the revert format. It is from when git was invented in 2005.
> It sets you up for failure. These days we have so many other things
> that we want in patches.
>
> 1) The subsystem prefix in the subject
> 2) The 12 character hashes
> 3) A proper commit message
> 4) A Fixes tag
>
> The automated revert commit messages don't have any of that. It's
> always better to hand write them.
There are tools out there that expect the "traditional" format, so it's
good to keep them if at all possible.
But I agree, for this one it doesn't make sense, just do a fixup patch
on top of the current tree. It's just a staging driver, not a big deal :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-07-01 14:19 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-01 9:40 [PATCH v4 0/2] staging: fbtft: cleanup fbtft_framebuffer_alloc() Abdun Nihaal
2025-07-01 9:40 ` [PATCH v4 1/2] Revert "staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()" Abdun Nihaal
2025-07-01 13:48 ` Andy Shevchenko
2025-07-01 14:16 ` Dan Carpenter
2025-07-01 14:19 ` Greg KH
2025-07-01 14:13 ` Dan Carpenter
2025-07-01 9:40 ` [PATCH v4 2/2] staging: fbtft: cleanup error handling in fbtft_framebuffer_alloc() Abdun Nihaal
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).