Re: [PATCH 1/2] fbdev: Move two variable assignments in fb_alloc_cmap_gfp()
>> Move the assignment for the local variables “size” and “flags” >> because the computed values were only used in a single if branch. > > Please do not move such variables without real need. Is there a need to explain desirable effects better? > It makes backporting (of this and maybe follow-up patches) much more > complicated I suggest to reconsider such development concerns a bit more. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/drivers/video/fbdev/core/fbcmap.c?h=v6.4-rc3 > and the compiler will optimize it anyway. How much do expectations fit to supported and documented software optimisations? Regards, Markus
Re: [PATCH 1/2] fbdev: Move two variable assignments in fb_alloc_cmap_gfp()
On 5/23/23 22:15, Markus Elfring wrote: From: Markus Elfring Date: Tue, 23 May 2023 21:30:29 +0200 Move the assignment for the local variables “size” and “flags” because the computed values were only used in a single if branch. Please do not move such variables without real need. It makes backporting (of this and maybe follow-up patches) much more complicated and the compiler will optimize it anyway. Thanks! Helge Signed-off-by: Markus Elfring --- drivers/video/fbdev/core/fbcmap.c | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/video/fbdev/core/fbcmap.c b/drivers/video/fbdev/core/fbcmap.c index ff09e57f3c38..5c1075ed28ab 100644 --- a/drivers/video/fbdev/core/fbcmap.c +++ b/drivers/video/fbdev/core/fbcmap.c @@ -91,16 +91,17 @@ static const struct fb_cmap default_16_colors = { int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags) { - int size = len * sizeof(u16); int ret = -ENOMEM; - flags |= __GFP_NOWARN; - if (cmap->len != len) { + int size; + fb_dealloc_cmap(cmap); if (!len) return 0; + size = len * sizeof(u16); + flags |= __GFP_NOWARN; cmap->red = kzalloc(size, flags); if (!cmap->red) goto fail; -- 2.40.1
[PATCH 1/2] fbdev: Move two variable assignments in fb_alloc_cmap_gfp()
From: Markus Elfring Date: Tue, 23 May 2023 21:30:29 +0200 Move the assignment for the local variables “size” and “flags” because the computed values were only used in a single if branch. Signed-off-by: Markus Elfring --- drivers/video/fbdev/core/fbcmap.c | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/video/fbdev/core/fbcmap.c b/drivers/video/fbdev/core/fbcmap.c index ff09e57f3c38..5c1075ed28ab 100644 --- a/drivers/video/fbdev/core/fbcmap.c +++ b/drivers/video/fbdev/core/fbcmap.c @@ -91,16 +91,17 @@ static const struct fb_cmap default_16_colors = { int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags) { - int size = len * sizeof(u16); int ret = -ENOMEM; - flags |= __GFP_NOWARN; - if (cmap->len != len) { + int size; + fb_dealloc_cmap(cmap); if (!len) return 0; + size = len * sizeof(u16); + flags |= __GFP_NOWARN; cmap->red = kzalloc(size, flags); if (!cmap->red) goto fail; -- 2.40.1