From patchwork Wed Jul 6 00:28:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masashi Honma X-Patchwork-Id: 9215271 X-Patchwork-Delegate: johannes@sipsolutions.net Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 76C5F60572 for ; Wed, 6 Jul 2016 00:30:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 65371284FB for ; Wed, 6 Jul 2016 00:30:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 46D7B284FF; Wed, 6 Jul 2016 00:30:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 162AC284FB for ; Wed, 6 Jul 2016 00:30:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752307AbcGFA3h (ORCPT ); Tue, 5 Jul 2016 20:29:37 -0400 Received: from mail-pa0-f66.google.com ([209.85.220.66]:34266 "EHLO mail-pa0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752206AbcGFA3c (ORCPT ); Tue, 5 Jul 2016 20:29:32 -0400 Received: by mail-pa0-f66.google.com with SMTP id us13so19561894pab.1; Tue, 05 Jul 2016 17:29:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=inehz4fP8F78XgBPcc2i/qA3D+CU24PlU3XibWS+htg=; b=RAxcKw/KzooBnGa8FvTj6mRWIb+nzvmQ7IPe4ELNREmBd5OQsI0uhL1x1w6F8vGacJ 3pjAhCbntbSJhI0cTf6B/TqdDRE5TBHoyMxFZuJE/MIhO4iyGwjAxsbXQLSTMNFqsBpW gyN7PtwIqMCCpli7MMdMRiDsIfuXyQNd+QpW0iw6Qp72dXBKQE7PnyB1+b69D+KRpZv3 QTyzYuNG/AAj35YzNFY8yzVqmzP4GXXoa4ACtKNBlueEBrRY5x4MMpFuw9wl7rUIX1ED OT8PVcq42FUXHfDA1Ksmfx8rpQ24w54aB0DK2KQy/wp9QuoTweirTsYSRmRF/QyDIuWQ v0Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=inehz4fP8F78XgBPcc2i/qA3D+CU24PlU3XibWS+htg=; b=hOO0hnEb7wxvWCdYUtFWlbbYs9YFa+joj4K8BGK+DUKN9I0seu+8PEC15IiBq6FVcp 3a4QyQ000kCVR70TlvDzjpGNxulHTsHD2QumgLCIbWUdQ6LeiQ4wjX8Ixm/OXxYNoSG0 LcjFK7ko4DLP+dLw80pXN+5tCjs/RhDloAgkgA9TP20zfHKbDjLXjRDjjh4Dr74RmENb 1zmo4ASjiUxLj50knzC7BUvKZLFN0v4tRfUWqopLUGsXF/h6VByqi7+d6kb2s1Yyf9+s 7RgnaiTBoXyguNKwvzqLP9dX2REpVDO+tqXRX06poWybtg9wbk6Onqwe0ELPT7larYsA XOWA== X-Gm-Message-State: ALyK8tIiDzqULdSS6uZghMtR1kPcXXPaaWsB2Caatydy9zSp0gtfmbwcQucWTFaPD36iEQ== X-Received: by 10.66.167.103 with SMTP id zn7mr36895146pab.149.1467764970937; Tue, 05 Jul 2016 17:29:30 -0700 (PDT) Received: from localhost.localdomain (p0347f3.kngwnt01.ap.so-net.ne.jp. [121.3.71.243]) by smtp.gmail.com with ESMTPSA id d65sm7612283pfa.45.2016.07.05.17.29.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 05 Jul 2016 17:29:30 -0700 (PDT) From: Masashi Honma To: netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, linux-wireless@vger.kernel.org, linux-rdma@vger.kernel.org, linux-audit@redhat.com, cluster-devel@redhat.com Cc: davem@davemloft.net, johannes@sipsolutions.net, pablo@netfilter.org, kaber@trash.net, kadlec@blackhole.kfki.hu, dledford@redhat.com, sean.hefty@intel.com, hal.rosenstock@gmail.com, paul@paul-moore.com, eparis@redhat.com, zbr@ioremap.net, pshelar@nicira.com, ccaulfie@redhat.com, teigland@redhat.com, bsingharora@gmail.com, Masashi Honma Subject: [RFC 7/7] genetlink: Add allocation flag to genlmsg_reply() Date: Wed, 6 Jul 2016 09:28:36 +0900 Message-Id: <1467764916-4983-8-git-send-email-masashi.honma@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1467764916-4983-1-git-send-email-masashi.honma@gmail.com> References: <1467764916-4983-1-git-send-email-masashi.honma@gmail.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add allocation flag to genlmsg_reply() and remove netlink_unicast() temporal functionality for stepwise modification. Signed-off-by: Masashi Honma --- drivers/block/drbd/drbd_nl.c | 2 +- drivers/net/wireless/mac80211_hwsim.c | 2 +- include/net/genetlink.h | 7 +++++-- kernel/taskstats.c | 2 +- net/core/devlink.c | 12 ++++++------ net/ieee802154/ieee802154.h | 3 ++- net/ieee802154/netlink.c | 5 +++-- net/ieee802154/nl-mac.c | 4 ++-- net/ieee802154/nl-phy.c | 6 +++--- net/ieee802154/nl802154.c | 4 ++-- net/ipv4/fou.c | 2 +- net/ipv4/tcp_metrics.c | 2 +- net/ipv6/ila/ila_xlat.c | 2 +- net/irda/irnetlink.c | 2 +- net/netfilter/ipvs/ip_vs_ctl.c | 2 +- net/netlabel/netlabel_cipso_v4.c | 2 +- net/netlabel/netlabel_mgmt.c | 4 ++-- net/netlabel/netlabel_unlabeled.c | 2 +- net/netlink/af_netlink.c | 2 +- net/netlink/genetlink.c | 2 +- net/nfc/netlink.c | 6 +++--- net/openvswitch/datapath.c | 6 +++--- net/tipc/bearer.c | 4 ++-- net/tipc/node.c | 2 +- net/wireless/nl80211.c | 34 +++++++++++++++++----------------- 25 files changed, 63 insertions(+), 58 deletions(-) diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c index 0bac9c8..3162608 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c @@ -100,7 +100,7 @@ static char *drbd_m_holder = "Hands off! this is DRBD's meta data device."; static void drbd_adm_send_reply(struct sk_buff *skb, struct genl_info *info) { genlmsg_end(skb, genlmsg_data(nlmsg_data(nlmsg_hdr(skb)))); - if (genlmsg_reply(skb, info)) + if (genlmsg_reply(skb, info, GFP_KERNEL)) pr_err("error sending genl reply\n"); } diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 5c7bf77..5319cd1 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -3160,7 +3160,7 @@ static int hwsim_get_radio_nl(struct sk_buff *msg, struct genl_info *info) goto out_err; } - genlmsg_reply(skb, info); + genlmsg_reply(skb, info, GFP_KERNEL); break; } diff --git a/include/net/genetlink.h b/include/net/genetlink.h index 5f0f2ff..99c9c39 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h @@ -343,10 +343,13 @@ static inline int genlmsg_unicast(struct net *net, struct sk_buff *skb, * genlmsg_reply - reply to a request * @skb: netlink message to be sent back * @info: receiver information + * @flags: allocation flags */ -static inline int genlmsg_reply(struct sk_buff *skb, struct genl_info *info) +static inline int genlmsg_reply(struct sk_buff *skb, struct genl_info *info, + gfp_t flags) { - return genlmsg_unicast(genl_info_net(info), skb, info->snd_portid, 0); + return genlmsg_unicast(genl_info_net(info), skb, info->snd_portid, + flags); } /** diff --git a/kernel/taskstats.c b/kernel/taskstats.c index ecfcaff..894d0da 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c @@ -114,7 +114,7 @@ static int send_reply(struct sk_buff *skb, struct genl_info *info) genlmsg_end(skb, reply); - return genlmsg_reply(skb, info); + return genlmsg_reply(skb, info, GFP_KERNEL); } /* diff --git a/net/core/devlink.c b/net/core/devlink.c index 933e8d4..61a1c8a 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -501,7 +501,7 @@ static int devlink_nl_cmd_get_doit(struct sk_buff *skb, struct genl_info *info) return err; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int devlink_nl_cmd_get_dumpit(struct sk_buff *msg, @@ -554,7 +554,7 @@ static int devlink_nl_cmd_port_get_doit(struct sk_buff *skb, return err; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int devlink_nl_cmd_port_get_dumpit(struct sk_buff *msg, @@ -736,7 +736,7 @@ static int devlink_nl_cmd_sb_get_doit(struct sk_buff *skb, return err; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int devlink_nl_cmd_sb_get_dumpit(struct sk_buff *msg, @@ -843,7 +843,7 @@ static int devlink_nl_cmd_sb_pool_get_doit(struct sk_buff *skb, return err; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int __sb_pool_get_dumpit(struct sk_buff *msg, int start, int *p_idx, @@ -1030,7 +1030,7 @@ static int devlink_nl_cmd_sb_port_pool_get_doit(struct sk_buff *skb, return err; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int __sb_port_pool_get_dumpit(struct sk_buff *msg, int start, int *p_idx, @@ -1233,7 +1233,7 @@ static int devlink_nl_cmd_sb_tc_pool_bind_get_doit(struct sk_buff *skb, return err; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int __sb_tc_pool_bind_get_dumpit(struct sk_buff *msg, diff --git a/net/ieee802154/ieee802154.h b/net/ieee802154/ieee802154.h index a5d7515..76f81be 100644 --- a/net/ieee802154/ieee802154.h +++ b/net/ieee802154/ieee802154.h @@ -40,7 +40,8 @@ struct sk_buff *ieee802154_nl_create(int flags, u8 req); int ieee802154_nl_mcast(struct sk_buff *msg, unsigned int group); struct sk_buff *ieee802154_nl_new_reply(struct genl_info *info, int flags, u8 req); -int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info); +int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info, + gfp_t flags); extern struct genl_family nl802154_family; diff --git a/net/ieee802154/netlink.c b/net/ieee802154/netlink.c index c8133c0..9a8779b 100644 --- a/net/ieee802154/netlink.c +++ b/net/ieee802154/netlink.c @@ -87,14 +87,15 @@ struct sk_buff *ieee802154_nl_new_reply(struct genl_info *info, return msg; } -int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info) +int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info, + gfp_t flags) { struct nlmsghdr *nlh = nlmsg_hdr(msg); void *hdr = genlmsg_data(nlmsg_data(nlh)); genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, flags); } static const struct genl_ops ieee8021154_ops[] = { diff --git a/net/ieee802154/nl-mac.c b/net/ieee802154/nl-mac.c index d3cbb32..17b5797 100644 --- a/net/ieee802154/nl-mac.c +++ b/net/ieee802154/nl-mac.c @@ -435,7 +435,7 @@ int ieee802154_list_iface(struct sk_buff *skb, struct genl_info *info) dev_put(dev); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); out_free: nlmsg_free(msg); out_dev: @@ -692,7 +692,7 @@ int ieee802154_llsec_getparams(struct sk_buff *skb, struct genl_info *info) dev_put(dev); - return ieee802154_nl_reply(msg, info); + return ieee802154_nl_reply(msg, info, GFP_KERNEL); out_free: nlmsg_free(msg); out_dev: diff --git a/net/ieee802154/nl-phy.c b/net/ieee802154/nl-phy.c index 77d7301..4862fbe 100644 --- a/net/ieee802154/nl-phy.c +++ b/net/ieee802154/nl-phy.c @@ -110,7 +110,7 @@ int ieee802154_list_phy(struct sk_buff *skb, struct genl_info *info) wpan_phy_put(phy); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); out_free: nlmsg_free(msg); out_dev: @@ -255,7 +255,7 @@ int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info) wpan_phy_put(phy); - return ieee802154_nl_reply(msg, info); + return ieee802154_nl_reply(msg, info, GFP_ATOMIC); dev_unregister: rtnl_lock(); /* del_iface must be called with RTNL lock */ @@ -336,7 +336,7 @@ int ieee802154_del_iface(struct sk_buff *skb, struct genl_info *info) goto nla_put_failure; wpan_phy_put(phy); - return ieee802154_nl_reply(msg, info); + return ieee802154_nl_reply(msg, info, GFP_ATOMIC); nla_put_failure: nlmsg_free(msg); diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c index 116187b..8d58da3 100644 --- a/net/ieee802154/nl802154.c +++ b/net/ieee802154/nl802154.c @@ -681,7 +681,7 @@ static int nl802154_get_wpan_phy(struct sk_buff *skb, struct genl_info *info) return -ENOBUFS; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static inline u64 wpan_dev_id(struct wpan_dev *wpan_dev) @@ -918,7 +918,7 @@ static int nl802154_get_interface(struct sk_buff *skb, struct genl_info *info) return -ENOBUFS; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int nl802154_new_interface(struct sk_buff *skb, struct genl_info *info) diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c index 321d57f..2bf8342 100644 --- a/net/ipv4/fou.c +++ b/net/ipv4/fou.c @@ -780,7 +780,7 @@ static int fou_nl_cmd_get_port(struct sk_buff *skb, struct genl_info *info) if (ret < 0) goto out_free; - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); out_free: nlmsg_free(msg); diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c index b617826..cb624c1 100644 --- a/net/ipv4/tcp_metrics.c +++ b/net/ipv4/tcp_metrics.c @@ -1024,7 +1024,7 @@ static int tcp_metrics_nl_cmd_get(struct sk_buff *skb, struct genl_info *info) goto out_free; genlmsg_end(msg, reply); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: ret = -EMSGSIZE; diff --git a/net/ipv6/ila/ila_xlat.c b/net/ipv6/ila/ila_xlat.c index e6eca5f..2e008bf3 100644 --- a/net/ipv6/ila/ila_xlat.c +++ b/net/ipv6/ila/ila_xlat.c @@ -467,7 +467,7 @@ static int ila_nl_cmd_get_mapping(struct sk_buff *skb, struct genl_info *info) if (ret < 0) goto out_free; - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); out_free: nlmsg_free(msg); diff --git a/net/irda/irnetlink.c b/net/irda/irnetlink.c index e15c40e..ffa5b5c 100644 --- a/net/irda/irnetlink.c +++ b/net/irda/irnetlink.c @@ -116,7 +116,7 @@ static int irda_nl_get_mode(struct sk_buff *skb, struct genl_info *info) genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); err_out: nlmsg_free(msg); diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index c3c809b..cccf673 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c @@ -3760,7 +3760,7 @@ static int ip_vs_genl_get_cmd(struct sk_buff *skb, struct genl_info *info) } genlmsg_end(msg, reply); - ret = genlmsg_reply(msg, info); + ret = genlmsg_reply(msg, info, GFP_KERNEL); goto out; nla_put_failure: diff --git a/net/netlabel/netlabel_cipso_v4.c b/net/netlabel/netlabel_cipso_v4.c index 7fd1104..c2b6fb5 100644 --- a/net/netlabel/netlabel_cipso_v4.c +++ b/net/netlabel/netlabel_cipso_v4.c @@ -590,7 +590,7 @@ list_start: rcu_read_unlock(); genlmsg_end(ans_skb, data); - return genlmsg_reply(ans_skb, info); + return genlmsg_reply(ans_skb, info, GFP_KERNEL); list_retry: /* XXX - this limit is a guesstimate */ diff --git a/net/netlabel/netlabel_mgmt.c b/net/netlabel/netlabel_mgmt.c index 13f777f..23099ee 100644 --- a/net/netlabel/netlabel_mgmt.c +++ b/net/netlabel/netlabel_mgmt.c @@ -577,7 +577,7 @@ static int netlbl_mgmt_listdef(struct sk_buff *skb, struct genl_info *info) goto listdef_failure; genlmsg_end(ans_skb, data); - return genlmsg_reply(ans_skb, info); + return genlmsg_reply(ans_skb, info, GFP_KERNEL); listdef_failure_lock: rcu_read_unlock(); @@ -688,7 +688,7 @@ static int netlbl_mgmt_version(struct sk_buff *skb, struct genl_info *info) goto version_failure; genlmsg_end(ans_skb, data); - return genlmsg_reply(ans_skb, info); + return genlmsg_reply(ans_skb, info, GFP_KERNEL); version_failure: kfree_skb(ans_skb); diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c index 9eaa9a1..bbe1337 100644 --- a/net/netlabel/netlabel_unlabeled.c +++ b/net/netlabel/netlabel_unlabeled.c @@ -874,7 +874,7 @@ static int netlbl_unlabel_list(struct sk_buff *skb, struct genl_info *info) goto list_failure; genlmsg_end(ans_skb, data); - return genlmsg_reply(ans_skb, info); + return genlmsg_reply(ans_skb, info, GFP_KERNEL); list_failure: kfree_skb(ans_skb); diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index acc1ee6..980cc86 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1227,7 +1227,7 @@ int netlink_unicast(struct sock *ssk, struct sk_buff *skb, u32 portid, int err; long timeo; - skb = netlink_trim(skb, allocation ? allocation : gfp_any()); + skb = netlink_trim(skb, allocation); timeo = sock_sndtimeo(ssk, nonblock); retry: diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index a09132a..1552380 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c @@ -933,7 +933,7 @@ static int ctrl_getfamily(struct sk_buff *skb, struct genl_info *info) if (IS_ERR(msg)) return PTR_ERR(msg); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int genl_ctrl_event(int event, struct genl_family *family, diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c index ea023b3..052a5d1 100644 --- a/net/nfc/netlink.c +++ b/net/nfc/netlink.c @@ -772,7 +772,7 @@ static int nfc_genl_get_device(struct sk_buff *skb, struct genl_info *info) nfc_put_device(dev); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); out_free: nlmsg_free(msg); @@ -1056,7 +1056,7 @@ exit: return rc; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int nfc_genl_llc_set_params(struct sk_buff *skb, struct genl_info *info) @@ -1653,7 +1653,7 @@ int nfc_vendor_cmd_reply(struct sk_buff *skb) } genlmsg_end(skb, hdr); - return genlmsg_reply(skb, dev->cur_cmd_info); + return genlmsg_reply(skb, dev->cur_cmd_info, gfp_any()); } EXPORT_SYMBOL(nfc_vendor_cmd_reply); diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index 374e0ec..44a3cbc 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c @@ -1274,7 +1274,7 @@ static int ovs_flow_cmd_get(struct sk_buff *skb, struct genl_info *info) } ovs_unlock(); - return genlmsg_reply(reply, info); + return genlmsg_reply(reply, info, GFP_KERNEL); unlock: ovs_unlock(); return err; @@ -1760,7 +1760,7 @@ static int ovs_dp_cmd_get(struct sk_buff *skb, struct genl_info *info) BUG_ON(err < 0); ovs_unlock(); - return genlmsg_reply(reply, info); + return genlmsg_reply(reply, info, GFP_KERNEL); err_unlock_free: ovs_unlock(); @@ -2163,7 +2163,7 @@ static int ovs_vport_cmd_get(struct sk_buff *skb, struct genl_info *info) BUG_ON(err < 0); rcu_read_unlock(); - return genlmsg_reply(reply, info); + return genlmsg_reply(reply, info, GFP_KERNEL); exit_unlock_free: rcu_read_unlock(); diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 8584cc4..f00d355 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c @@ -763,7 +763,7 @@ int tipc_nl_bearer_get(struct sk_buff *skb, struct genl_info *info) goto err_out; rtnl_unlock(); - return genlmsg_reply(rep, info); + return genlmsg_reply(rep, info, GFP_KERNEL); err_out: rtnl_unlock(); nlmsg_free(rep); @@ -1022,7 +1022,7 @@ int tipc_nl_media_get(struct sk_buff *skb, struct genl_info *info) goto err_out; rtnl_unlock(); - return genlmsg_reply(rep, info); + return genlmsg_reply(rep, info, GFP_KERNEL); err_out: rtnl_unlock(); nlmsg_free(rep); diff --git a/net/tipc/node.c b/net/tipc/node.c index a3fc0a3..a86f21c 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -1774,7 +1774,7 @@ int tipc_nl_node_get_link(struct sk_buff *skb, struct genl_info *info) } } - return genlmsg_reply(msg.skb, info); + return genlmsg_reply(msg.skb, info, GFP_KERNEL); } int tipc_nl_node_reset_link_stats(struct sk_buff *skb, struct genl_info *info) diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index e608937..d8e1984 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -1948,7 +1948,7 @@ static int nl80211_get_wiphy(struct sk_buff *skb, struct genl_info *info) return -ENOBUFS; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static const struct nla_policy txq_params_policy[NL80211_TXQ_ATTR_MAX + 1] = { @@ -2574,7 +2574,7 @@ static int nl80211_get_interface(struct sk_buff *skb, struct genl_info *info) return -ENOBUFS; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static const struct nla_policy mntr_flags_policy[NL80211_MNTR_FLAG_MAX + 1] = { @@ -2833,7 +2833,7 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info) } out: - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int nl80211_del_interface(struct sk_buff *skb, struct genl_info *info) @@ -3007,7 +3007,7 @@ static int nl80211_get_key(struct sk_buff *skb, struct genl_info *info) goto nla_put_failure; genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: err = -ENOBUFS; @@ -4050,7 +4050,7 @@ static int nl80211_get_station(struct sk_buff *skb, struct genl_info *info) return -ENOBUFS; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } int cfg80211_check_station_change(struct wiphy *wiphy, @@ -4852,7 +4852,7 @@ static int nl80211_get_mpath(struct sk_buff *skb, struct genl_info *info) return -ENOBUFS; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int nl80211_set_mpath(struct sk_buff *skb, struct genl_info *info) @@ -4957,7 +4957,7 @@ static int nl80211_get_mpp(struct sk_buff *skb, struct genl_info *info) return -ENOBUFS; } - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } static int nl80211_dump_mpp(struct sk_buff *skb, @@ -5234,7 +5234,7 @@ static int nl80211_get_mesh_config(struct sk_buff *skb, goto nla_put_failure; nla_nest_end(msg, pinfoattr); genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: genlmsg_cancel(msg, hdr); @@ -5672,7 +5672,7 @@ static int nl80211_get_reg_do(struct sk_buff *skb, struct genl_info *info) rcu_read_unlock(); genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure_rcu: rcu_read_unlock(); @@ -8485,7 +8485,7 @@ static int nl80211_remain_on_channel(struct sk_buff *skb, genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: err = -ENOBUFS; @@ -8897,7 +8897,7 @@ static int nl80211_tx_mgmt(struct sk_buff *skb, struct genl_info *info) goto nla_put_failure; genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); } return 0; @@ -9007,7 +9007,7 @@ static int nl80211_get_power_save(struct sk_buff *skb, struct genl_info *info) goto nla_put_failure; genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: err = -ENOBUFS; @@ -9428,7 +9428,7 @@ static int nl80211_get_wowlan(struct sk_buff *skb, struct genl_info *info) } genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: nlmsg_free(msg); @@ -9892,7 +9892,7 @@ static int nl80211_get_coalesce(struct sk_buff *skb, struct genl_info *info) goto nla_put_failure; genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: nlmsg_free(msg); @@ -10185,7 +10185,7 @@ static int nl80211_probe_client(struct sk_buff *skb, genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: err = -ENOBUFS; @@ -10292,7 +10292,7 @@ static int nl80211_get_protocol_features(struct sk_buff *skb, goto nla_put_failure; genlmsg_end(msg, hdr); - return genlmsg_reply(msg, info); + return genlmsg_reply(msg, info, GFP_KERNEL); nla_put_failure: kfree_skb(msg); @@ -10672,7 +10672,7 @@ int cfg80211_vendor_cmd_reply(struct sk_buff *skb) nla_nest_end(skb, data); genlmsg_end(skb, hdr); - return genlmsg_reply(skb, rdev->cur_cmd_info); + return genlmsg_reply(skb, rdev->cur_cmd_info, gfp_any()); } EXPORT_SYMBOL_GPL(cfg80211_vendor_cmd_reply);