Message ID | 20200525113816.fc4da3ec3d4b.Ica63a110679819eaa9fb3bc1b7437d96b1fd187d@changeid (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
Series | cfg80211: fix debugfs rename crash | expand |
On Mon, May 25, 2020 at 11:38:17AM +0200, Johannes Berg wrote: > From: Johannes Berg <johannes.berg@intel.com> > > Removing the "if (IS_ERR(dir)) dir = NULL;" check only works > if we adjust the remaining code to not rely on it being NULL. > Check IS_ERR_OR_NULL() before attempting to dereference it. > > I'm not actually entirely sure this fixes the syzbot crash as > the kernel config indicates that they do have DEBUG_FS in the > kernel, but this is what I found when looking there. > > Cc: stable@vger.kernel.org > Fixes: d82574a8e5a4 ("cfg80211: no need to check return value of debugfs_create functions") > Reported-by: syzbot+fd5332e429401bf42d18@syzkaller.appspotmail.com > Signed-off-by: Johannes Berg <johannes.berg@intel.com> > --- > net/wireless/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/wireless/core.c b/net/wireless/core.c > index 341402b4f178..ce024440fa51 100644 > --- a/net/wireless/core.c > +++ b/net/wireless/core.c > @@ -142,7 +142,7 @@ int cfg80211_dev_rename(struct cfg80211_registered_device *rdev, > if (result) > return result; > > - if (rdev->wiphy.debugfsdir) > + if (!IS_ERR_OR_NULL(rdev->wiphy.debugfsdir)) > debugfs_rename(rdev->wiphy.debugfsdir->d_parent, > rdev->wiphy.debugfsdir, > rdev->wiphy.debugfsdir->d_parent, newname); I missed that d_parent was being accessed, sorry about that. This looks good to me: Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
diff --git a/net/wireless/core.c b/net/wireless/core.c index 341402b4f178..ce024440fa51 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -142,7 +142,7 @@ int cfg80211_dev_rename(struct cfg80211_registered_device *rdev, if (result) return result; - if (rdev->wiphy.debugfsdir) + if (!IS_ERR_OR_NULL(rdev->wiphy.debugfsdir)) debugfs_rename(rdev->wiphy.debugfsdir->d_parent, rdev->wiphy.debugfsdir, rdev->wiphy.debugfsdir->d_parent, newname);