struct wireless_dev *wdev;
u8 mac_addr[ETH_ALEN];
int sta_idx = cb->args[2];
+ bool sinfo_alloc = false;
int err, i;
err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
err = -ENOMEM;
goto out_err;
}
+ sinfo_alloc = true;
}
err = rdev_dump_station(rdev, wdev->netdev, sta_idx,
if (sinfo.valid_links)
cfg80211_sta_set_mld_sinfo(&sinfo);
+ /* reset the sinfo_alloc flag as nl80211_send_station()
+ * always releases sinfo
+ */
+ sinfo_alloc = false;
+
if (nl80211_send_station(skb, NL80211_CMD_NEW_STATION,
NETLINK_CB(cb->skb).portid,
cb->nlh->nlmsg_seq, NLM_F_MULTI,
cb->args[2] = sta_idx;
err = skb->len;
out_err:
- cfg80211_sinfo_release_content(&sinfo);
+ if (sinfo_alloc)
+ cfg80211_sinfo_release_content(&sinfo);
wiphy_unlock(&rdev->wiphy);
return err;