diff mbox series

dpaa2-mac: Fix potential null pointer dereference

Message ID 20200927133119.586083-1-alex.dewar90@gmail.com
State Changes Requested
Delegated to: David Miller
Headers show
Series dpaa2-mac: Fix potential null pointer dereference | expand

Commit Message

Alex Dewar Sept. 27, 2020, 1:31 p.m. UTC
In dpaa2_pcs_destroy, variable pcs is dereference before it is
null-checked. Fix this.

Addresses-Coverity: CID 1497159: Null pointer dereferences (REVERSE_INULL)
Signed-off-by: Alex Dewar <alex.dewar90@gmail.com>
---
 drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Ioana Ciornei Sept. 27, 2020, 1:59 p.m. UTC | #1
On Sun, Sep 27, 2020 at 02:31:20PM +0100, Alex Dewar wrote:
> In dpaa2_pcs_destroy, variable pcs is dereference before it is
> null-checked. Fix this.
> 
> Addresses-Coverity: CID 1497159: Null pointer dereferences (REVERSE_INULL)
> Signed-off-by: Alex Dewar <alex.dewar90@gmail.com>
> ---
>  drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
> index 6ff64dd1cf27..09bf4fec1172 100644
> --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
> +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
> @@ -291,11 +291,10 @@ static int dpaa2_pcs_create(struct dpaa2_mac *mac,
>  static void dpaa2_pcs_destroy(struct dpaa2_mac *mac)
>  {
>  	struct lynx_pcs *pcs = mac->pcs;
> -	struct device *dev = &pcs->mdio->dev;
>  
>  	if (pcs) {
>  		lynx_pcs_destroy(pcs);
> -		put_device(dev);
> +		put_device(&pcs->mdio->dev);
>  		mac->pcs = NULL;
>  	}
>  }

This would introduce another problem because you would access an already
freed pcs. Maybe just move the declaration and initialization of dev
inside the if statement.

Thanks, Ioana
diff mbox series

Patch

diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
index 6ff64dd1cf27..09bf4fec1172 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
@@ -291,11 +291,10 @@  static int dpaa2_pcs_create(struct dpaa2_mac *mac,
 static void dpaa2_pcs_destroy(struct dpaa2_mac *mac)
 {
 	struct lynx_pcs *pcs = mac->pcs;
-	struct device *dev = &pcs->mdio->dev;
 
 	if (pcs) {
 		lynx_pcs_destroy(pcs);
-		put_device(dev);
+		put_device(&pcs->mdio->dev);
 		mac->pcs = NULL;
 	}
 }