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;