--- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -1637,7 +1637,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) { @@ -1690,7 +1690,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; @@ -2265,7 +2265,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; @@ -2294,7 +2294,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; @@ -2527,7 +2527,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; @@ -2662,7 +2662,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 (!hdr) return -ENOBUFS; @@ -3631,7 +3631,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) @@ -3677,7 +3677,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; @@ -4285,7 +4285,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) @@ -4334,7 +4334,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; @@ -4598,7 +4598,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; @@ -4957,7 +4957,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; @@ -5762,7 +5762,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; @@ -5999,7 +5999,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; @@ -6697,7 +6697,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; @@ -6779,7 +6779,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); } @@ -7147,7 +7147,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 (!hdr) { err = -ENOBUFS; @@ -7365,7 +7365,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])); } @@ -7446,7 +7446,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 (!hdr) { err = -ENOBUFS; @@ -7560,7 +7560,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; @@ -7867,7 +7867,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; @@ -8296,7 +8296,7 @@ static int nl80211_get_coalesce(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_GET_COALESCE); if (!hdr) goto nla_put_failure; @@ -8549,7 +8549,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; } @@ -8579,7 +8579,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 (!hdr) { err = -ENOBUFS; @@ -8622,13 +8622,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); @@ -8695,7 +8695,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; @@ -8770,7 +8770,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; } @@ -11172,12 +11172,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;