if (err)
                return err;
 
+       wdev_lock(dev->ieee80211_ptr);
        if (add)
-               return rdev_add_link_station(rdev, dev, ¶ms);
-       return rdev_mod_link_station(rdev, dev, ¶ms);
+               err = rdev_add_link_station(rdev, dev, ¶ms);
+       else
+               err = rdev_mod_link_station(rdev, dev, ¶ms);
+       wdev_unlock(dev->ieee80211_ptr);
+
+       return err;
 }
 
 static int
        struct link_station_del_parameters params = {};
        struct cfg80211_registered_device *rdev = info->user_ptr[0];
        struct net_device *dev = info->user_ptr[1];
+       int ret;
 
        if (!rdev->ops->del_link_station)
                return -EOPNOTSUPP;
        params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]);
        params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]);
 
-       return rdev_del_link_station(rdev, dev, ¶ms);
+       wdev_lock(dev->ieee80211_ptr);
+       ret = rdev_del_link_station(rdev, dev, ¶ms);
+       wdev_unlock(dev->ieee80211_ptr);
+
+       return ret;
 }
 
 #define NL80211_FLAG_NEED_WIPHY                0x01