Skip to content

Commit

Permalink
net: phy: qcom: at803x: fix kernel panic with at8031_probe
Browse files Browse the repository at this point in the history
commit 6a4aee2 upstream.

On reworking and splitting the at803x driver, in splitting function of
at803x PHYs it was added a NULL dereference bug where priv is referenced
before it's actually allocated and then is tried to write to for the
is_1000basex and is_fiber variables in the case of at8031, writing on
the wrong address.

Fix this by correctly setting priv local variable only after
at803x_probe is called and actually allocates priv in the phydev struct.

Reported-by: William Wortel <wwortel@dorpstraat.com>
Cc: <stable@vger.kernel.org>
Fixes: 25d2ba9 ("net: phy: at803x: move specific at8031 probe mode check to dedicated probe")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20240325190621.2665-1-ansuelsmth@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Ansuel authored and gregkh committed Apr 3, 2024
1 parent 2ed966a commit a8a296a
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/net/phy/at803x.c
Expand Up @@ -1503,7 +1503,7 @@ static int at8031_parse_dt(struct phy_device *phydev)

static int at8031_probe(struct phy_device *phydev)
{
struct at803x_priv *priv = phydev->priv;
struct at803x_priv *priv;
int mode_cfg;
int ccr;
int ret;
Expand All @@ -1512,6 +1512,8 @@ static int at8031_probe(struct phy_device *phydev)
if (ret)
return ret;

priv = phydev->priv;

/* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
* options.
*/
Expand Down

0 comments on commit a8a296a

Please sign in to comment.