--- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -1593,7 +1593,7 @@ static int nl80211_dump_wiphy(struct sk_ /* attempt to fit multiple wiphy data chunks into the skb */ do { ret = nl80211_send_wiphy(dev, skb, - NETLINK_CB(cb->skb).portid, + NETLINK_CB_PORTID(cb->skb), cb->nlh->nlmsg_seq, NLM_F_MULTI, state); if (ret < 0) { @@ -1646,7 +1646,7 @@ static int nl80211_get_wiphy(struct sk_b if (!msg) return -ENOMEM; - if (nl80211_send_wiphy(dev, msg, info->snd_portid, info->snd_seq, 0, + if (nl80211_send_wiphy(dev, msg, genl_info_snd_portid(info), info->snd_seq, 0, &state) < 0) { nlmsg_free(msg); return -ENOBUFS; @@ -2221,7 +2221,7 @@ static int nl80211_dump_interface(struct if_idx++; continue; } - if (nl80211_send_iface(skb, NETLINK_CB(cb->skb).portid, + if (nl80211_send_iface(skb, NETLINK_CB_PORTID(cb->skb), cb->nlh->nlmsg_seq, NLM_F_MULTI, rdev, wdev) < 0) { goto out; @@ -2250,7 +2250,7 @@ static int nl80211_get_interface(struct if (!msg) return -ENOMEM; - if (nl80211_send_iface(msg, info->snd_portid, info->snd_seq, 0, + if (nl80211_send_iface(msg, genl_info_snd_portid(info), info->snd_seq, 0, dev, wdev) < 0) { nlmsg_free(msg); return -ENOBUFS; @@ -2483,7 +2483,7 @@ static int nl80211_new_interface(struct break; } - if (nl80211_send_iface(msg, info->snd_portid, info->snd_seq, 0, + if (nl80211_send_iface(msg, genl_info_snd_portid(info), info->snd_seq, 0, rdev, wdev) < 0) { nlmsg_free(msg); return -ENOBUFS; @@ -2618,7 +2618,7 @@ static int nl80211_get_key(struct sk_buf if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_NEW_KEY); if (IS_ERR(hdr)) return PTR_ERR(hdr); @@ -3587,7 +3587,7 @@ static int nl80211_dump_station(struct s goto out_err; if (nl80211_send_station(skb, - NETLINK_CB(cb->skb).portid, + NETLINK_CB_PORTID(cb->skb), cb->nlh->nlmsg_seq, NLM_F_MULTI, dev, wdev->netdev, mac_addr, &sinfo) < 0) @@ -3633,7 +3633,7 @@ static int nl80211_get_station(struct sk if (!msg) return -ENOMEM; - if (nl80211_send_station(msg, info->snd_portid, info->snd_seq, 0, + if (nl80211_send_station(msg, genl_info_snd_portid(info), info->snd_seq, 0, rdev, dev, mac_addr, &sinfo) < 0) { nlmsg_free(msg); return -ENOBUFS; @@ -4241,7 +4241,7 @@ static int nl80211_dump_mpath(struct sk_ if (err) goto out_err; - if (nl80211_send_mpath(skb, NETLINK_CB(cb->skb).portid, + if (nl80211_send_mpath(skb, NETLINK_CB_PORTID(cb->skb), cb->nlh->nlmsg_seq, NLM_F_MULTI, wdev->netdev, dst, next_hop, &pinfo) < 0) @@ -4290,7 +4290,7 @@ static int nl80211_get_mpath(struct sk_b if (!msg) return -ENOMEM; - if (nl80211_send_mpath(msg, info->snd_portid, info->snd_seq, 0, + if (nl80211_send_mpath(msg, genl_info_snd_portid(info), info->snd_seq, 0, dev, dst, next_hop, &pinfo) < 0) { nlmsg_free(msg); return -ENOBUFS; @@ -4554,7 +4554,7 @@ static int nl80211_get_mesh_config(struc msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_GET_MESH_CONFIG); if (!hdr) goto out; @@ -4913,7 +4913,7 @@ static int nl80211_get_reg(struct sk_buf if (!msg) return -ENOBUFS; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_GET_REG); if (!hdr) goto put_failure; @@ -5592,7 +5592,7 @@ static int nl80211_send_bss(struct sk_bu ASSERT_WDEV_LOCK(wdev); - hdr = nl80211hdr_put(msg, NETLINK_CB(cb->skb).portid, seq, flags, + hdr = nl80211hdr_put(msg, NETLINK_CB_PORTID(cb->skb), seq, flags, NL80211_CMD_NEW_SCAN_RESULTS); if (!hdr) return -1; @@ -5828,7 +5828,7 @@ static int nl80211_dump_survey(struct sk } if (nl80211_send_survey(skb, - NETLINK_CB(cb->skb).portid, + NETLINK_CB_PORTID(cb->skb), cb->nlh->nlmsg_seq, NLM_F_MULTI, wdev->netdev, &survey) < 0) goto out; @@ -6500,7 +6500,7 @@ static int nl80211_testmode_dump(struct } while (1) { - void *hdr = nl80211hdr_put(skb, NETLINK_CB(cb->skb).portid, + void *hdr = nl80211hdr_put(skb, NETLINK_CB_PORTID(cb->skb), cb->nlh->nlmsg_seq, NLM_F_MULTI, NL80211_CMD_TESTMODE); struct nlattr *tmdata; @@ -6579,7 +6579,7 @@ struct sk_buff *cfg80211_testmode_alloc_ return NULL; return __cfg80211_testmode_alloc_skb(rdev, approxlen, - rdev->testmode_info->snd_portid, + genl_info_snd_portid(rdev->testmode_info), rdev->testmode_info->snd_seq, GFP_KERNEL); } @@ -6947,7 +6947,7 @@ static int nl80211_remain_on_channel(str if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_REMAIN_ON_CHANNEL); if (IS_ERR(hdr)) { @@ -7166,7 +7166,7 @@ static int nl80211_register_mgmt(struct if (!rdev->ops->mgmt_tx) return -EOPNOTSUPP; - return cfg80211_mlme_register_mgmt(wdev, info->snd_portid, frame_type, + return cfg80211_mlme_register_mgmt(wdev, genl_info_snd_portid(info), frame_type, nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH])); } @@ -7247,7 +7247,7 @@ static int nl80211_tx_mgmt(struct sk_buf if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_FRAME); if (IS_ERR(hdr)) { @@ -7362,7 +7362,7 @@ static int nl80211_get_power_save(struct if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_GET_POWER_SAVE); if (!hdr) { err = -ENOBUFS; @@ -7673,7 +7673,7 @@ static int nl80211_get_wowlan(struct sk_ if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_GET_WOWLAN); if (!hdr) goto nla_put_failure; @@ -8098,7 +8098,7 @@ static int nl80211_register_unexpected_f if (wdev->ap_unexpected_nlportid) return -EBUSY; - wdev->ap_unexpected_nlportid = info->snd_portid; + wdev->ap_unexpected_nlportid = genl_info_snd_portid(info); return 0; } @@ -8128,7 +8128,7 @@ static int nl80211_probe_client(struct s if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_PROBE_CLIENT); if (IS_ERR(hdr)) { @@ -8172,13 +8172,13 @@ static int nl80211_register_beacons(stru /* First, check if already registered. */ spin_lock_bh(&rdev->beacon_registrations_lock); list_for_each_entry(reg, &rdev->beacon_registrations, list) { - if (reg->nlportid == info->snd_portid) { + if (reg->nlportid == genl_info_snd_portid(info)) { rv = -EALREADY; goto out_err; } } /* Add it to the list */ - nreg->nlportid = info->snd_portid; + nreg->nlportid = genl_info_snd_portid(info); list_add(&nreg->list, &rdev->beacon_registrations); spin_unlock_bh(&rdev->beacon_registrations_lock); @@ -8245,7 +8245,7 @@ static int nl80211_get_protocol_features if (!msg) return -ENOMEM; - hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, + hdr = nl80211hdr_put(msg, genl_info_snd_portid(info), info->snd_seq, 0, NL80211_CMD_GET_PROTOCOL_FEATURES); if (!hdr) goto nla_put_failure; @@ -8320,7 +8320,7 @@ static int nl80211_crit_protocol_start(s ret = rdev_crit_proto_start(rdev, wdev, proto, duration); if (!ret) - rdev->crit_proto_nlportid = info->snd_portid; + rdev->crit_proto_nlportid = genl_info_snd_portid(info); return ret; } @@ -10696,12 +10696,12 @@ static int nl80211_netlink_notify(struct list_for_each_entry_rcu(rdev, &cfg80211_rdev_list, list) { list_for_each_entry_rcu(wdev, &rdev->wdev_list, list) - cfg80211_mlme_unregister_socket(wdev, notify->portid); + cfg80211_mlme_unregister_socket(wdev, netlink_notify_portid(notify)); spin_lock_bh(&rdev->beacon_registrations_lock); list_for_each_entry_safe(reg, tmp, &rdev->beacon_registrations, list) { - if (reg->nlportid == notify->portid) { + if (reg->nlportid == netlink_notify_portid(notify)) { list_del(®->list); kfree(reg); break;