From patchwork Mon Dec 14 12:51:51 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Klauser X-Patchwork-Id: 556434 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id B359C14031E for ; Mon, 14 Dec 2015 23:51:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932445AbbLNMvy (ORCPT ); Mon, 14 Dec 2015 07:51:54 -0500 Received: from mail.zhinst.com ([212.126.164.98]:60140 "EHLO mail.zhinst.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932262AbbLNMvx (ORCPT ); Mon, 14 Dec 2015 07:51:53 -0500 Received: from ziws06.zhinst.com ([10.42.0.7]) by mail.zhinst.com (Kerio Connect 8.5.3); Mon, 14 Dec 2015 13:51:51 +0100 From: Tobias Klauser To: Florian Fainelli Cc: "David S. Miller" , netdev@vger.kernel.org Subject: [PATCH] net: phy: mdio-mux: Check return value of mdiobus_alloc() Date: Mon, 14 Dec 2015 13:51:51 +0100 Message-Id: <1450097511-13010-1-git-send-email-tklauser@distanz.ch> X-Mailer: git-send-email 2.6.3.368.gf34be46.dirty Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org mdiobus_alloc() might return NULL, but its return value is not checked in mdio_mux_init(). This could potentially lead to a NULL pointer dereference. Fix it by checking the return value Fixes: 0ca2997d1452 ("netdev/of/phy: Add MDIO bus multiplexer support.") Signed-off-by: Tobias Klauser --- drivers/net/phy/mdio-mux.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/mdio-mux.c b/drivers/net/phy/mdio-mux.c index 908e8d486342..7f8e7662e28c 100644 --- a/drivers/net/phy/mdio-mux.c +++ b/drivers/net/phy/mdio-mux.c @@ -149,9 +149,14 @@ int mdio_mux_init(struct device *dev, } cb->bus_number = v; cb->parent = pb; + cb->mii_bus = mdiobus_alloc(); + if (!cb->mii_bus) { + ret_val = -ENOMEM; + of_node_put(child_bus_node); + break; + } cb->mii_bus->priv = cb; - cb->mii_bus->irq = cb->phy_irq; cb->mii_bus->name = "mdio_mux"; snprintf(cb->mii_bus->id, MII_BUS_ID_SIZE, "%x.%x",