Message ID | 54c30a69-71cf-4582-9086-50eb0d39f273@web.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [RESEND] drm/msm/dpu: Delete a variable initialisation before a null pointer check in two functions | expand |
On Sun, Mar 02, 2025 at 09:56:00PM +0100, Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Tue, 11 Apr 2023 18:24:24 +0200 > > The address of a data structure member was determined before > a corresponding null pointer check in the implementation of > the functions “dpu_hw_pp_enable_te” and “dpu_hw_pp_get_vsync_info”. > > Thus avoid the risk for undefined behaviour by removing extra > initialisations for the variable “c” (also because it was already > reassigned with the same value behind this pointer check). > > This issue was detected by using the Coccinelle software. Please don't send resends and/or new iterations in response to your previous patchsets. Otherwise they have a pretty high chance to be ignored by the maintainers. Use a fresh git-send-email command to send new patchset. > > Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support") > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c > index 0fcad9760b6f..870ab3ebbc94 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c > @@ -176,7 +176,7 @@ static int dpu_hw_pp_enable_te(struct dpu_hw_pingpong *pp, bool enable) > static int dpu_hw_pp_connect_external_te(struct dpu_hw_pingpong *pp, > bool enable_external_te) > { > - struct dpu_hw_blk_reg_map *c = &pp->hw; > + struct dpu_hw_blk_reg_map *c; > u32 cfg; > int orig; > > @@ -221,7 +221,7 @@ static int dpu_hw_pp_get_vsync_info(struct dpu_hw_pingpong *pp, > > static u32 dpu_hw_pp_get_line_count(struct dpu_hw_pingpong *pp) > { > - struct dpu_hw_blk_reg_map *c = &pp->hw; > + struct dpu_hw_blk_reg_map *c; > u32 height, init; > u32 line = 0xFFFF; > > -- > 2.40.0 >
On Mon, Mar 03, 2025 at 01:01:40AM +0200, Dmitry Baryshkov wrote: > On Sun, Mar 02, 2025 at 09:56:00PM +0100, Markus Elfring wrote: > > From: Markus Elfring <elfring@users.sourceforge.net> > > Date: Tue, 11 Apr 2023 18:24:24 +0200 > > > > The address of a data structure member was determined before > > a corresponding null pointer check in the implementation of > > the functions “dpu_hw_pp_enable_te” and “dpu_hw_pp_get_vsync_info”. > > > > Thus avoid the risk for undefined behaviour by removing extra > > initialisations for the variable “c” (also because it was already > > reassigned with the same value behind this pointer check). There is no undefined behavior here. > > > > This issue was detected by using the Coccinelle software. > > Please don't send resends and/or new iterations in response to your > previous patchsets. Otherwise they have a pretty high chance to be > ignored by the maintainers. Use a fresh git-send-email command to send > new patchset. > > > > > Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support") Remove the Fixes tag. This patch is fine as a clean up. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> regards, dan carpenter
>>> The address of a data structure member was determined before >>> a corresponding null pointer check in the implementation of >>> the functions “dpu_hw_pp_enable_te” and “dpu_hw_pp_get_vsync_info”. >>> >>> Thus avoid the risk for undefined behaviour by removing extra >>> initialisations for the variable “c” (also because it was already >>> reassigned with the same value behind this pointer check). > > There is no undefined behavior here. Will any software development concerns evolve further also according to undesirable null pointer dereferences? https://wiki.sei.cmu.edu/confluence/display/c/EXP34-C.+Do+not+dereference+null+pointers Regards, Markus
On Mon, Mar 03, 2025 at 09:15:14AM +0100, Markus Elfring wrote: > >>> The address of a data structure member was determined before > >>> a corresponding null pointer check in the implementation of > >>> the functions “dpu_hw_pp_enable_te” and “dpu_hw_pp_get_vsync_info”. > >>> > >>> Thus avoid the risk for undefined behaviour by removing extra > >>> initialisations for the variable “c” (also because it was already > >>> reassigned with the same value behind this pointer check). > > > > There is no undefined behavior here. > Will any software development concerns evolve further also according to > undesirable null pointer dereferences? > https://wiki.sei.cmu.edu/confluence/display/c/EXP34-C.+Do+not+dereference+null+pointers > It's not a NULL pointer dereference. It's just pointer math. It was a common way to implement offsetof() before we had a builtin for that. samples/bpf/test_lru_dist.c # define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER) regards, dan carpenter
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c index 0fcad9760b6f..870ab3ebbc94 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.c @@ -176,7 +176,7 @@ static int dpu_hw_pp_enable_te(struct dpu_hw_pingpong *pp, bool enable) static int dpu_hw_pp_connect_external_te(struct dpu_hw_pingpong *pp, bool enable_external_te) { - struct dpu_hw_blk_reg_map *c = &pp->hw; + struct dpu_hw_blk_reg_map *c; u32 cfg; int orig; @@ -221,7 +221,7 @@ static int dpu_hw_pp_get_vsync_info(struct dpu_hw_pingpong *pp, static u32 dpu_hw_pp_get_line_count(struct dpu_hw_pingpong *pp) { - struct dpu_hw_blk_reg_map *c = &pp->hw; + struct dpu_hw_blk_reg_map *c; u32 height, init; u32 line = 0xFFFF;