Message ID | 20230720123950.543082-1-harshit.m.mogalapalli@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [next] drm/loongson: Fix error handling in lsdc_pixel_pll_setup() | expand |
Hi, On 2023/7/20 20:39, Harshit Mogalapalli wrote: > There are two problems in lsdc_pixel_pll_setup() > 1. If kzalloc() fails then call iounmap() to release the resources. > 2. Both kzalloc and ioremap doesnot return error pointers on failure, so > using IS_ERR_OR_NULL() checks is a bit confusing and not very right, > fix this by changing those to NULL checks instead. > > Fixes: f39db26c5428 ("drm: Add kms driver for loongson display controller") > Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com> Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn> > --- > This is found with static analysis with smacth and only compile tested. > --- > drivers/gpu/drm/loongson/lsdc_pixpll.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/loongson/lsdc_pixpll.c b/drivers/gpu/drm/loongson/lsdc_pixpll.c > index 04c15b4697e2..2609a2256da4 100644 > --- a/drivers/gpu/drm/loongson/lsdc_pixpll.c > +++ b/drivers/gpu/drm/loongson/lsdc_pixpll.c > @@ -120,12 +120,14 @@ static int lsdc_pixel_pll_setup(struct lsdc_pixpll * const this) > struct lsdc_pixpll_parms *pparms; > > this->mmio = ioremap(this->reg_base, this->reg_size); > - if (IS_ERR_OR_NULL(this->mmio)) > + if (!this->mmio) > return -ENOMEM; > > pparms = kzalloc(sizeof(*pparms), GFP_KERNEL); > - if (IS_ERR_OR_NULL(pparms)) > + if (!pparms) { > + iounmap(this->mmio); > return -ENOMEM; > + } > > pparms->ref_clock = LSDC_PLL_REF_CLK_KHZ; >
diff --git a/drivers/gpu/drm/loongson/lsdc_pixpll.c b/drivers/gpu/drm/loongson/lsdc_pixpll.c index 04c15b4697e2..2609a2256da4 100644 --- a/drivers/gpu/drm/loongson/lsdc_pixpll.c +++ b/drivers/gpu/drm/loongson/lsdc_pixpll.c @@ -120,12 +120,14 @@ static int lsdc_pixel_pll_setup(struct lsdc_pixpll * const this) struct lsdc_pixpll_parms *pparms; this->mmio = ioremap(this->reg_base, this->reg_size); - if (IS_ERR_OR_NULL(this->mmio)) + if (!this->mmio) return -ENOMEM; pparms = kzalloc(sizeof(*pparms), GFP_KERNEL); - if (IS_ERR_OR_NULL(pparms)) + if (!pparms) { + iounmap(this->mmio); return -ENOMEM; + } pparms->ref_clock = LSDC_PLL_REF_CLK_KHZ;
There are two problems in lsdc_pixel_pll_setup() 1. If kzalloc() fails then call iounmap() to release the resources. 2. Both kzalloc and ioremap doesnot return error pointers on failure, so using IS_ERR_OR_NULL() checks is a bit confusing and not very right, fix this by changing those to NULL checks instead. Fixes: f39db26c5428 ("drm: Add kms driver for loongson display controller") Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com> --- This is found with static analysis with smacth and only compile tested. --- drivers/gpu/drm/loongson/lsdc_pixpll.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)