| From 81b038e921124f308587fd56559ed066e0da2a16 Mon Sep 17 00:00:00 2001 |
| From: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> |
| Date: Mon, 3 Feb 2020 10:56:50 +0000 |
| Subject: [PATCH] cfg80211: check wiphy driver existence for drvinfo report |
| |
| commit bfb7bac3a8f47100ebe7961bd14e924c96e21ca7 upstream. |
| |
| When preparing ethtool drvinfo, check if wiphy driver is defined |
| before dereferencing it. Driver may not exist, e.g. if wiphy is |
| attached to a virtual platform device. |
| |
| Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> |
| Link: https://lore.kernel.org/r/20200203105644.28875-1-sergey.matyukevich.os@quantenna.com |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/net/wireless/ethtool.c b/net/wireless/ethtool.c |
| index a9c0f368db5d..24e18405cdb4 100644 |
| --- a/net/wireless/ethtool.c |
| +++ b/net/wireless/ethtool.c |
| @@ -7,9 +7,13 @@ |
| void cfg80211_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) |
| { |
| struct wireless_dev *wdev = dev->ieee80211_ptr; |
| + struct device *pdev = wiphy_dev(wdev->wiphy); |
| |
| - strlcpy(info->driver, wiphy_dev(wdev->wiphy)->driver->name, |
| - sizeof(info->driver)); |
| + if (pdev->driver) |
| + strlcpy(info->driver, pdev->driver->name, |
| + sizeof(info->driver)); |
| + else |
| + strlcpy(info->driver, "N/A", sizeof(info->driver)); |
| |
| strlcpy(info->version, init_utsname()->release, sizeof(info->version)); |
| |
| -- |
| 2.7.4 |
| |