diff --git a/net/wireless/scan.c b/net/wireless/scan.c index a8339ed52404..f1a4cf080bf5 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c @@ -1915,7 +1915,9 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev, * drop this information. */ - f = rcu_access_pointer(new->pub.beacon_ies); + f = rcu_replace_pointer(new->pub.beacon_ies, + (const void *)NULL, + lockdep_is_held(&rdev->bss_lock)); kfree_rcu((struct cfg80211_bss_ies *)f, rcu_head); return false; } @@ -2013,9 +2015,9 @@ __cfg80211_bss_update(struct cfg80211_registered_device *rdev, &hidden->hidden_list); hidden->refcount++; - ies = (void *)rcu_access_pointer(new->pub.beacon_ies); - rcu_assign_pointer(new->pub.beacon_ies, - hidden->pub.beacon_ies); + ies = (void *)rcu_replace_pointer(new->pub.beacon_ies, + hidden->pub.beacon_ies, + lockdep_is_held(&rdev->bss_lock)); if (ies) kfree_rcu(ies, rcu_head); }