| The patch: |
| |
| commit 15e473046cb6e5d18a4d0057e61d76315230382b |
| Author: Eric W. Biederman <ebiederm@xmission.com> |
| Date: Fri Sep 7 20:12:54 2012 +0000 |
| |
| netlink: Rename pid to portid to avoid confusion |
| |
| It is a frequent mistake to confuse the netlink port identifier with a |
| process identifier. Try to reduce this confusion by renaming fields |
| that hold port identifiers portid instead of pid. |
| |
| I have carefully avoided changing the structures exported to |
| userspace to avoid changing the userspace API. |
| |
| I have successfully built an allyesconfig kernel with this change. |
| |
| Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> |
| Acked-by: Stephen Hemminger <shemminger@vyatta.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| |
| Changed the struct members: |
| |
| struct netlink_notify->pid to |
| struct netlink_notify->portid |
| |
| struct genl_info->snd_pid to |
| struct genl_info->snd_portid |
| |
| To help backport this and not have to #ifdef around it against |
| kernel versions compat has introduced two helpers for us to |
| simply do the backport with two macro helpers: |
| |
| genl_info_snd_portid() |
| netlink_notify_portid() |
| |
| This takes care of the work for us requiring only one |
| single line change. If we get another patch thrown into |
| this file then I suspect we can extract SMPL out of it |
| and use it to backport further collateral evolutions like |
| this one should other drivers / subsystem need this change. |
| |
| --- a/drivers/net/wireless/mac80211_hwsim.c |
| +++ b/drivers/net/wireless/mac80211_hwsim.c |
| @@ -2019,10 +2019,10 @@ static int hwsim_register_received_nl(st |
| if (info == NULL) |
| goto out; |
| |
| - wmediumd_portid = info->snd_portid; |
| + wmediumd_portid = genl_info_snd_portid(info); |
| |
| printk(KERN_DEBUG "mac80211_hwsim: received a REGISTER, " |
| - "switching to wmediumd mode with pid %d\n", info->snd_portid); |
| + "switching to wmediumd mode with pid %d\n", genl_info_snd_portid(info)); |
| |
| return 0; |
| out: |
| @@ -2059,7 +2059,7 @@ static int mac80211_hwsim_netlink_notify |
| if (state != NETLINK_URELEASE) |
| return NOTIFY_DONE; |
| |
| - if (notify->portid == wmediumd_portid) { |
| + if (netlink_notify_portid(notify) == wmediumd_portid) { |
| printk(KERN_INFO "mac80211_hwsim: wmediumd released netlink" |
| " socket, switching to perfect channel medium\n"); |
| wmediumd_portid = 0; |
| --- 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, |
| split, &cb->args[1], |
| @@ -1642,7 +1642,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, |
| false, NULL, NULL, NULL) < 0) { |
| nlmsg_free(msg); |
| return -ENOBUFS; |
| @@ -2222,7 +2222,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) { |
| mutex_unlock(&rdev->devlist_mtx); |
| @@ -2253,7 +2253,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; |
| @@ -2478,7 +2478,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; |
| @@ -2613,7 +2613,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); |
| @@ -3549,7 +3549,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, netdev, mac_addr, |
| &sinfo) < 0) |
| @@ -3595,7 +3595,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; |
| @@ -4195,7 +4195,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, |
| netdev, dst, next_hop, |
| &pinfo) < 0) |
| @@ -4244,7 +4244,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; |
| @@ -4508,7 +4508,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; |
| @@ -4858,7 +4858,7 @@ static int nl80211_get_reg(struct sk_buf |
| goto out; |
| } |
| |
| - 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; |
| @@ -5558,7 +5558,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; |
| @@ -5789,7 +5789,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, |
| netdev, |
| &survey) < 0) |
| @@ -6448,7 +6448,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; |
| @@ -6527,7 +6527,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); |
| } |
| @@ -6887,7 +6887,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)) { |
| @@ -7106,7 +7106,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])); |
| } |
| @@ -7176,7 +7176,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)) { |
| @@ -7291,7 +7291,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; |
| @@ -7583,7 +7583,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; |
| @@ -8007,7 +8007,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; |
| } |
| |
| @@ -8037,7 +8037,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)) { |
| @@ -8081,13 +8081,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); |
| @@ -8160,7 +8160,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; |
| @@ -10565,12 +10565,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; |