Re: [PATCH][next] soc: fsl: dpio: fix dereference of pointer p before null check
On Fri, Feb 21, 2020 at 11:11:43PM +, Colin King wrote: > --- > drivers/soc/fsl/dpio/qbman-portal.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/soc/fsl/dpio/qbman-portal.c > b/drivers/soc/fsl/dpio/qbman-portal.c > index 740ee0d19582..d1f49caa5b13 100644 > --- a/drivers/soc/fsl/dpio/qbman-portal.c > +++ b/drivers/soc/fsl/dpio/qbman-portal.c > @@ -249,10 +249,11 @@ struct qbman_swp *qbman_swp_init(const struct > qbman_swp_desc *d) > u32 mask_size; > u32 eqcr_pi; > > - spin_lock_init(>access_spinlock); > - > if (!p) > return NULL; > + > + spin_lock_init(>access_spinlock); Allocations in the declaration blog are not super common in the kernel, but they're more bug prone. Generally, it's not beautiful to call a function which can fail in the allocation block. regards, dan carpenter
RE: [PATCH][next] soc: fsl: dpio: fix dereference of pointer p before null check
> -Original Message- > From: Colin King > Sent: Friday, February 21, 2020 5:12 PM > To: Roy Pledge ; Leo Li ; Youri > Querry ; linuxppc-dev@lists.ozlabs.org; linux- > arm-ker...@lists.infradead.org > Cc: kernel-janit...@vger.kernel.org; linux-ker...@vger.kernel.org > Subject: [PATCH][next] soc: fsl: dpio: fix dereference of pointer p before > null > check > > From: Colin Ian King > > Pointer p is currently being dereferenced before it is null checked on a > memory allocation failure check. Fix this by checking if p is null before > dereferencing it. > > Addresses-Coverity: ("Dereference before null check") > Fixes: 3b2abda7d28c ("soc: fsl: dpio: Replace QMAN array mode with ring > mode enqueue") > Signed-off-by: Colin Ian King Applied for next. Thanks. > --- > drivers/soc/fsl/dpio/qbman-portal.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/soc/fsl/dpio/qbman-portal.c > b/drivers/soc/fsl/dpio/qbman-portal.c > index 740ee0d19582..d1f49caa5b13 100644 > --- a/drivers/soc/fsl/dpio/qbman-portal.c > +++ b/drivers/soc/fsl/dpio/qbman-portal.c > @@ -249,10 +249,11 @@ struct qbman_swp *qbman_swp_init(const struct > qbman_swp_desc *d) > u32 mask_size; > u32 eqcr_pi; > > - spin_lock_init(>access_spinlock); > - > if (!p) > return NULL; > + > + spin_lock_init(>access_spinlock); > + > p->desc = d; > p->mc.valid_bit = QB_VALID_BIT; > p->sdq = 0; > -- > 2.25.0