aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2023-05-29 19:27:15 +0200
committerPetr Štetiar <ynezz@true.cz>2023-06-12 22:10:18 +0200
commit03455e79d7a4a0da5399618851168dfadebf416e (patch)
tree383a6141b19cbc651c1d78def2b20c59d86a9939 /package/kernel
parentc6531042da2afc6b9601c05a4dc8bacde4780bc2 (diff)
downloadupstream-03455e79d7a4a0da5399618851168dfadebf416e.tar.gz
upstream-03455e79d7a4a0da5399618851168dfadebf416e.tar.bz2
upstream-03455e79d7a4a0da5399618851168dfadebf416e.zip
qca-nss-dp: fix oops in nss_dp_probe
Currently kernel crashes when of_phy_connect has issues: Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000308 ... pc : phy_attached_print+0x28/0x1b0 lr : phy_attached_info+0x14/0x20 ... Call trace: phy_attached_print+0x28/0x1b0 phy_attached_info+0x14/0x20 nss_dp_adjust_link+0x544/0x6c4 [qca_nss_dp] of_phy_connect returns either pointer or NULL, so can't be checked with IS_ERR macro. Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit 38c7cf0e69aeefdec44d513307732e4daf7d9794)
Diffstat (limited to 'package/kernel')
-rw-r--r--package/kernel/qca-nss-dp/patches/0013-nss_dp_main-Use-a-phy-handle-property-to-connect-to-.patch5
1 files changed, 3 insertions, 2 deletions
diff --git a/package/kernel/qca-nss-dp/patches/0013-nss_dp_main-Use-a-phy-handle-property-to-connect-to-.patch b/package/kernel/qca-nss-dp/patches/0013-nss_dp_main-Use-a-phy-handle-property-to-connect-to-.patch
index ba9b8ef262..276c87adfc 100644
--- a/package/kernel/qca-nss-dp/patches/0013-nss_dp_main-Use-a-phy-handle-property-to-connect-to-.patch
+++ b/package/kernel/qca-nss-dp/patches/0013-nss_dp_main-Use-a-phy-handle-property-to-connect-to-.patch
@@ -155,11 +155,12 @@ Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
- dp_priv->phydev = phy_connect(netdev, phy_id,
- &nss_dp_adjust_link,
- dp_priv->phy_mii_type);
+- if (IS_ERR(dp_priv->phydev)) {
+- netdev_dbg(netdev, "failed to connect to phy device\n");
+ dp_priv->phydev = of_phy_connect(netdev, dp_priv->phy_node,
+ &nss_dp_adjust_link, 0,
+ dp_priv->phy_mii_type);
- if (IS_ERR(dp_priv->phydev)) {
-- netdev_dbg(netdev, "failed to connect to phy device\n");
++ if (!(dp_priv->phydev)) {
+ dev_err(&pdev->dev, "Could not attach to PHY\n");
goto phy_setup_fail;
}