netlink: make nla_nest_start() add NLA_F_NESTED flag

Even if the NLA_F_NESTED flag was introduced more than 11 years ago, most
netlink based interfaces (including recently added ones) are still not
setting it in kernel generated messages. Without the flag, message parsers
not aware of attribute semantics (e.g. wireshark dissector or libmnl's
mnl_nlmsg_fprintf()) cannot recognize nested attributes and won't display
the structure of their contents.

Unfortunately we cannot just add the flag everywhere as there may be
userspace applications which check nlattr::nla_type directly rather than
through a helper masking out the flags. Therefore the patch renames
nla_nest_start() to nla_nest_start_noflag() and introduces nla_nest_start()
as a wrapper adding NLA_F_NESTED. The calls which add NLA_F_NESTED manually
are rewritten to use nla_nest_start().

Except for changes in include/net/netlink.h, the patch was generated using
this semantic patch:

@@ expression E1, E2; @@
-nla_nest_start(E1, E2)
+nla_nest_start_noflag(E1, E2)

@@ expression E1, E2; @@
-nla_nest_start_noflag(E1, E2 | NLA_F_NESTED)
+nla_nest_start(E1, E2)

Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Acked-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Michal Kubecek 2019-04-26 11:13:06 +02:00 committed by David S. Miller
parent c7881b4a97
commit ae0be8de9a
111 changed files with 539 additions and 466 deletions

View File

@ -114,7 +114,7 @@ static int drbd_msg_put_info(struct sk_buff *skb, const char *info)
if (!info || !info[0]) if (!info || !info[0])
return 0; return 0;
nla = nla_nest_start(skb, DRBD_NLA_CFG_REPLY); nla = nla_nest_start_noflag(skb, DRBD_NLA_CFG_REPLY);
if (!nla) if (!nla)
return err; return err;
@ -135,7 +135,7 @@ static int drbd_msg_sprintf_info(struct sk_buff *skb, const char *fmt, ...)
int err = -EMSGSIZE; int err = -EMSGSIZE;
int len; int len;
nla = nla_nest_start(skb, DRBD_NLA_CFG_REPLY); nla = nla_nest_start_noflag(skb, DRBD_NLA_CFG_REPLY);
if (!nla) if (!nla)
return err; return err;
@ -3269,7 +3269,7 @@ static int nla_put_drbd_cfg_context(struct sk_buff *skb,
struct drbd_device *device) struct drbd_device *device)
{ {
struct nlattr *nla; struct nlattr *nla;
nla = nla_nest_start(skb, DRBD_NLA_CFG_CONTEXT); nla = nla_nest_start_noflag(skb, DRBD_NLA_CFG_CONTEXT);
if (!nla) if (!nla)
goto nla_put_failure; goto nla_put_failure;
if (device && if (device &&
@ -3837,7 +3837,7 @@ static int nla_put_status_info(struct sk_buff *skb, struct drbd_device *device,
if (err) if (err)
goto nla_put_failure; goto nla_put_failure;
nla = nla_nest_start(skb, DRBD_NLA_STATE_INFO); nla = nla_nest_start_noflag(skb, DRBD_NLA_STATE_INFO);
if (!nla) if (!nla)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u32(skb, T_sib_reason, sib ? sib->sib_reason : SIB_GET_STATUS_REPLY) || if (nla_put_u32(skb, T_sib_reason, sib ? sib->sib_reason : SIB_GET_STATUS_REPLY) ||

View File

@ -2047,7 +2047,7 @@ static int populate_nbd_status(struct nbd_device *nbd, struct sk_buff *reply)
*/ */
if (refcount_read(&nbd->config_refs)) if (refcount_read(&nbd->config_refs))
connected = 1; connected = 1;
dev_opt = nla_nest_start(reply, NBD_DEVICE_ITEM); dev_opt = nla_nest_start_noflag(reply, NBD_DEVICE_ITEM);
if (!dev_opt) if (!dev_opt)
return -EMSGSIZE; return -EMSGSIZE;
ret = nla_put_u32(reply, NBD_DEVICE_INDEX, nbd->index); ret = nla_put_u32(reply, NBD_DEVICE_INDEX, nbd->index);
@ -2095,7 +2095,7 @@ static int nbd_genl_status(struct sk_buff *skb, struct genl_info *info)
goto out; goto out;
} }
dev_list = nla_nest_start(reply, NBD_ATTR_DEVICE_LIST); dev_list = nla_nest_start_noflag(reply, NBD_ATTR_DEVICE_LIST);
if (index == -1) { if (index == -1) {
ret = idr_for_each(&nbd_index_idr, &status_cb, reply); ret = idr_for_each(&nbd_index_idr, &status_cb, reply);
if (ret) { if (ret) {

View File

@ -292,7 +292,8 @@ static int fill_res_info_entry(struct sk_buff *msg,
{ {
struct nlattr *entry_attr; struct nlattr *entry_attr;
entry_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY); entry_attr = nla_nest_start_noflag(msg,
RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY);
if (!entry_attr) if (!entry_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -327,7 +328,7 @@ static int fill_res_info(struct sk_buff *msg, struct ib_device *device)
if (fill_nldev_handle(msg, device)) if (fill_nldev_handle(msg, device))
return -EMSGSIZE; return -EMSGSIZE;
table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_RES_SUMMARY); table_attr = nla_nest_start_noflag(msg, RDMA_NLDEV_ATTR_RES_SUMMARY);
if (!table_attr) if (!table_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -1108,7 +1109,7 @@ static int res_get_common_dumpit(struct sk_buff *skb,
goto err; goto err;
} }
table_attr = nla_nest_start(skb, fe->nldev_attr); table_attr = nla_nest_start_noflag(skb, fe->nldev_attr);
if (!table_attr) { if (!table_attr) {
ret = -EMSGSIZE; ret = -EMSGSIZE;
goto err; goto err;
@ -1134,7 +1135,7 @@ static int res_get_common_dumpit(struct sk_buff *skb,
filled = true; filled = true;
entry_attr = nla_nest_start(skb, fe->entry); entry_attr = nla_nest_start_noflag(skb, fe->entry);
if (!entry_attr) { if (!entry_attr) {
ret = -EMSGSIZE; ret = -EMSGSIZE;
rdma_restrack_put(res); rdma_restrack_put(res);

View File

@ -149,7 +149,7 @@ static int fill_res_qp_entry(struct sk_buff *msg,
if (qhp->ucontext) if (qhp->ucontext)
return 0; return 0;
table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_DRIVER); table_attr = nla_nest_start_noflag(msg, RDMA_NLDEV_ATTR_DRIVER);
if (!table_attr) if (!table_attr)
goto err; goto err;
@ -216,7 +216,7 @@ static int fill_res_ep_entry(struct sk_buff *msg,
if (!uep) if (!uep)
return 0; return 0;
table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_DRIVER); table_attr = nla_nest_start_noflag(msg, RDMA_NLDEV_ATTR_DRIVER);
if (!table_attr) if (!table_attr)
goto err_free_uep; goto err_free_uep;
@ -387,7 +387,7 @@ static int fill_res_cq_entry(struct sk_buff *msg,
if (ibcq->uobject) if (ibcq->uobject)
return 0; return 0;
table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_DRIVER); table_attr = nla_nest_start_noflag(msg, RDMA_NLDEV_ATTR_DRIVER);
if (!table_attr) if (!table_attr)
goto err; goto err;
@ -447,7 +447,7 @@ static int fill_res_mr_entry(struct sk_buff *msg,
if (!stag) if (!stag)
return 0; return 0;
table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_DRIVER); table_attr = nla_nest_start_noflag(msg, RDMA_NLDEV_ATTR_DRIVER);
if (!table_attr) if (!table_attr)
goto err; goto err;

View File

@ -546,7 +546,7 @@ static int bond_fill_info(struct sk_buff *skb,
if (nla_put_u32(skb, IFLA_BOND_ARP_INTERVAL, bond->params.arp_interval)) if (nla_put_u32(skb, IFLA_BOND_ARP_INTERVAL, bond->params.arp_interval))
goto nla_put_failure; goto nla_put_failure;
targets = nla_nest_start(skb, IFLA_BOND_ARP_IP_TARGET); targets = nla_nest_start_noflag(skb, IFLA_BOND_ARP_IP_TARGET);
if (!targets) if (!targets)
goto nla_put_failure; goto nla_put_failure;
@ -644,7 +644,7 @@ static int bond_fill_info(struct sk_buff *skb,
if (!bond_3ad_get_active_agg_info(bond, &info)) { if (!bond_3ad_get_active_agg_info(bond, &info)) {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, IFLA_BOND_AD_INFO); nest = nla_nest_start_noflag(skb, IFLA_BOND_AD_INFO);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
@ -711,7 +711,7 @@ static int bond_fill_linkxstats(struct sk_buff *skb,
return -EINVAL; return -EINVAL;
} }
nest = nla_nest_start(skb, LINK_XSTATS_TYPE_BOND); nest = nla_nest_start_noflag(skb, LINK_XSTATS_TYPE_BOND);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;
if (BOND_MODE(bond) == BOND_MODE_8023AD) { if (BOND_MODE(bond) == BOND_MODE_8023AD) {
@ -722,7 +722,7 @@ static int bond_fill_linkxstats(struct sk_buff *skb,
else else
stats = &BOND_AD_INFO(bond).stats; stats = &BOND_AD_INFO(bond).stats;
nest2 = nla_nest_start(skb, BOND_XSTATS_3AD); nest2 = nla_nest_start_noflag(skb, BOND_XSTATS_3AD);
if (!nest2) { if (!nest2) {
nla_nest_end(skb, nest); nla_nest_end(skb, nest);
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -227,14 +227,16 @@ static int append_radio_msg(struct sk_buff *skb, struct hwsim_phy *phy)
return 0; return 0;
} }
nl_edges = nla_nest_start(skb, MAC802154_HWSIM_ATTR_RADIO_EDGES); nl_edges = nla_nest_start_noflag(skb,
MAC802154_HWSIM_ATTR_RADIO_EDGES);
if (!nl_edges) { if (!nl_edges) {
rcu_read_unlock(); rcu_read_unlock();
return -ENOBUFS; return -ENOBUFS;
} }
list_for_each_entry_rcu(e, &phy->edges, list) { list_for_each_entry_rcu(e, &phy->edges, list) {
nl_edge = nla_nest_start(skb, MAC802154_HWSIM_ATTR_RADIO_EDGE); nl_edge = nla_nest_start_noflag(skb,
MAC802154_HWSIM_ATTR_RADIO_EDGE);
if (!nl_edge) { if (!nl_edge) {
rcu_read_unlock(); rcu_read_unlock();
nla_nest_cancel(skb, nl_edges); nla_nest_cancel(skb, nl_edges);

View File

@ -2365,7 +2365,8 @@ copy_secy_stats(struct sk_buff *skb, struct pcpu_secy_stats __percpu *pstats)
static int nla_put_secy(struct macsec_secy *secy, struct sk_buff *skb) static int nla_put_secy(struct macsec_secy *secy, struct sk_buff *skb)
{ {
struct macsec_tx_sc *tx_sc = &secy->tx_sc; struct macsec_tx_sc *tx_sc = &secy->tx_sc;
struct nlattr *secy_nest = nla_nest_start(skb, MACSEC_ATTR_SECY); struct nlattr *secy_nest = nla_nest_start_noflag(skb,
MACSEC_ATTR_SECY);
u64 csid; u64 csid;
if (!secy_nest) if (!secy_nest)
@ -2435,7 +2436,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
if (nla_put_secy(secy, skb)) if (nla_put_secy(secy, skb))
goto nla_put_failure; goto nla_put_failure;
attr = nla_nest_start(skb, MACSEC_ATTR_TXSC_STATS); attr = nla_nest_start_noflag(skb, MACSEC_ATTR_TXSC_STATS);
if (!attr) if (!attr)
goto nla_put_failure; goto nla_put_failure;
if (copy_tx_sc_stats(skb, tx_sc->stats)) { if (copy_tx_sc_stats(skb, tx_sc->stats)) {
@ -2444,7 +2445,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
} }
nla_nest_end(skb, attr); nla_nest_end(skb, attr);
attr = nla_nest_start(skb, MACSEC_ATTR_SECY_STATS); attr = nla_nest_start_noflag(skb, MACSEC_ATTR_SECY_STATS);
if (!attr) if (!attr)
goto nla_put_failure; goto nla_put_failure;
if (copy_secy_stats(skb, macsec_priv(dev)->stats)) { if (copy_secy_stats(skb, macsec_priv(dev)->stats)) {
@ -2453,7 +2454,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
} }
nla_nest_end(skb, attr); nla_nest_end(skb, attr);
txsa_list = nla_nest_start(skb, MACSEC_ATTR_TXSA_LIST); txsa_list = nla_nest_start_noflag(skb, MACSEC_ATTR_TXSA_LIST);
if (!txsa_list) if (!txsa_list)
goto nla_put_failure; goto nla_put_failure;
for (i = 0, j = 1; i < MACSEC_NUM_AN; i++) { for (i = 0, j = 1; i < MACSEC_NUM_AN; i++) {
@ -2463,7 +2464,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
if (!tx_sa) if (!tx_sa)
continue; continue;
txsa_nest = nla_nest_start(skb, j++); txsa_nest = nla_nest_start_noflag(skb, j++);
if (!txsa_nest) { if (!txsa_nest) {
nla_nest_cancel(skb, txsa_list); nla_nest_cancel(skb, txsa_list);
goto nla_put_failure; goto nla_put_failure;
@ -2478,7 +2479,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
goto nla_put_failure; goto nla_put_failure;
} }
attr = nla_nest_start(skb, MACSEC_SA_ATTR_STATS); attr = nla_nest_start_noflag(skb, MACSEC_SA_ATTR_STATS);
if (!attr) { if (!attr) {
nla_nest_cancel(skb, txsa_nest); nla_nest_cancel(skb, txsa_nest);
nla_nest_cancel(skb, txsa_list); nla_nest_cancel(skb, txsa_list);
@ -2496,7 +2497,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
} }
nla_nest_end(skb, txsa_list); nla_nest_end(skb, txsa_list);
rxsc_list = nla_nest_start(skb, MACSEC_ATTR_RXSC_LIST); rxsc_list = nla_nest_start_noflag(skb, MACSEC_ATTR_RXSC_LIST);
if (!rxsc_list) if (!rxsc_list)
goto nla_put_failure; goto nla_put_failure;
@ -2504,7 +2505,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
for_each_rxsc_rtnl(secy, rx_sc) { for_each_rxsc_rtnl(secy, rx_sc) {
int k; int k;
struct nlattr *rxsa_list; struct nlattr *rxsa_list;
struct nlattr *rxsc_nest = nla_nest_start(skb, j++); struct nlattr *rxsc_nest = nla_nest_start_noflag(skb, j++);
if (!rxsc_nest) { if (!rxsc_nest) {
nla_nest_cancel(skb, rxsc_list); nla_nest_cancel(skb, rxsc_list);
@ -2519,7 +2520,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
goto nla_put_failure; goto nla_put_failure;
} }
attr = nla_nest_start(skb, MACSEC_RXSC_ATTR_STATS); attr = nla_nest_start_noflag(skb, MACSEC_RXSC_ATTR_STATS);
if (!attr) { if (!attr) {
nla_nest_cancel(skb, rxsc_nest); nla_nest_cancel(skb, rxsc_nest);
nla_nest_cancel(skb, rxsc_list); nla_nest_cancel(skb, rxsc_list);
@ -2533,7 +2534,8 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
} }
nla_nest_end(skb, attr); nla_nest_end(skb, attr);
rxsa_list = nla_nest_start(skb, MACSEC_RXSC_ATTR_SA_LIST); rxsa_list = nla_nest_start_noflag(skb,
MACSEC_RXSC_ATTR_SA_LIST);
if (!rxsa_list) { if (!rxsa_list) {
nla_nest_cancel(skb, rxsc_nest); nla_nest_cancel(skb, rxsc_nest);
nla_nest_cancel(skb, rxsc_list); nla_nest_cancel(skb, rxsc_list);
@ -2547,7 +2549,7 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
if (!rx_sa) if (!rx_sa)
continue; continue;
rxsa_nest = nla_nest_start(skb, k++); rxsa_nest = nla_nest_start_noflag(skb, k++);
if (!rxsa_nest) { if (!rxsa_nest) {
nla_nest_cancel(skb, rxsa_list); nla_nest_cancel(skb, rxsa_list);
nla_nest_cancel(skb, rxsc_nest); nla_nest_cancel(skb, rxsc_nest);
@ -2555,7 +2557,8 @@ dump_secy(struct macsec_secy *secy, struct net_device *dev,
goto nla_put_failure; goto nla_put_failure;
} }
attr = nla_nest_start(skb, MACSEC_SA_ATTR_STATS); attr = nla_nest_start_noflag(skb,
MACSEC_SA_ATTR_STATS);
if (!attr) { if (!attr) {
nla_nest_cancel(skb, rxsa_list); nla_nest_cancel(skb, rxsa_list);
nla_nest_cancel(skb, rxsc_nest); nla_nest_cancel(skb, rxsc_nest);

View File

@ -1624,7 +1624,7 @@ static int macvlan_fill_info(struct sk_buff *skb,
if (nla_put_u32(skb, IFLA_MACVLAN_MACADDR_COUNT, vlan->macaddr_count)) if (nla_put_u32(skb, IFLA_MACVLAN_MACADDR_COUNT, vlan->macaddr_count))
goto nla_put_failure; goto nla_put_failure;
if (vlan->macaddr_count > 0) { if (vlan->macaddr_count > 0) {
nest = nla_nest_start(skb, IFLA_MACVLAN_MACADDR_DATA); nest = nla_nest_start_noflag(skb, IFLA_MACVLAN_MACADDR_DATA);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -2290,7 +2290,7 @@ static int team_nl_fill_one_option_get(struct sk_buff *skb, struct team *team,
if (err) if (err)
return err; return err;
option_item = nla_nest_start(skb, TEAM_ATTR_ITEM_OPTION); option_item = nla_nest_start_noflag(skb, TEAM_ATTR_ITEM_OPTION);
if (!option_item) if (!option_item)
return -EMSGSIZE; return -EMSGSIZE;
@ -2404,7 +2404,7 @@ start_again:
if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex)) if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex))
goto nla_put_failure; goto nla_put_failure;
option_list = nla_nest_start(skb, TEAM_ATTR_LIST_OPTION); option_list = nla_nest_start_noflag(skb, TEAM_ATTR_LIST_OPTION);
if (!option_list) if (!option_list)
goto nla_put_failure; goto nla_put_failure;
@ -2626,7 +2626,7 @@ static int team_nl_fill_one_port_get(struct sk_buff *skb,
{ {
struct nlattr *port_item; struct nlattr *port_item;
port_item = nla_nest_start(skb, TEAM_ATTR_ITEM_PORT); port_item = nla_nest_start_noflag(skb, TEAM_ATTR_ITEM_PORT);
if (!port_item) if (!port_item)
goto nest_cancel; goto nest_cancel;
if (nla_put_u32(skb, TEAM_ATTR_PORT_IFINDEX, port->dev->ifindex)) if (nla_put_u32(skb, TEAM_ATTR_PORT_IFINDEX, port->dev->ifindex))
@ -2681,7 +2681,7 @@ start_again:
if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex)) if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex))
goto nla_put_failure; goto nla_put_failure;
port_list = nla_nest_start(skb, TEAM_ATTR_LIST_PORT); port_list = nla_nest_start_noflag(skb, TEAM_ATTR_LIST_PORT);
if (!port_list) if (!port_list)
goto nla_put_failure; goto nla_put_failure;

View File

@ -2679,13 +2679,13 @@ static int wil_rf_sector_get_cfg(struct wiphy *wiphy,
QCA_ATTR_PAD)) QCA_ATTR_PAD))
goto nla_put_failure; goto nla_put_failure;
nl_cfgs = nla_nest_start(msg, QCA_ATTR_DMG_RF_SECTOR_CFG); nl_cfgs = nla_nest_start_noflag(msg, QCA_ATTR_DMG_RF_SECTOR_CFG);
if (!nl_cfgs) if (!nl_cfgs)
goto nla_put_failure; goto nla_put_failure;
for (i = 0; i < WMI_MAX_RF_MODULES_NUM; i++) { for (i = 0; i < WMI_MAX_RF_MODULES_NUM; i++) {
if (!(rf_modules_vec & BIT(i))) if (!(rf_modules_vec & BIT(i)))
continue; continue;
nl_cfg = nla_nest_start(msg, i); nl_cfg = nla_nest_start_noflag(msg, i);
if (!nl_cfg) if (!nl_cfg)
goto nla_put_failure; goto nla_put_failure;
si = &reply.evt.sectors_info[i]; si = &reply.evt.sectors_info[i];

View File

@ -401,7 +401,7 @@ ip_set_get_h16(const struct nlattr *attr)
return ntohs(nla_get_be16(attr)); return ntohs(nla_get_be16(attr));
} }
#define ipset_nest_start(skb, attr) nla_nest_start(skb, attr | NLA_F_NESTED) #define ipset_nest_start(skb, attr) nla_nest_start(skb, attr)
#define ipset_nest_end(skb, start) nla_nest_end(skb, start) #define ipset_nest_end(skb, start) nla_nest_end(skb, start)
static inline int nla_put_ipaddr4(struct sk_buff *skb, int type, __be32 ipaddr) static inline int nla_put_ipaddr4(struct sk_buff *skb, int type, __be32 ipaddr)

View File

@ -1415,13 +1415,18 @@ static inline void *nla_memdup(const struct nlattr *src, gfp_t gfp)
} }
/** /**
* nla_nest_start - Start a new level of nested attributes * nla_nest_start_noflag - Start a new level of nested attributes
* @skb: socket buffer to add attributes to * @skb: socket buffer to add attributes to
* @attrtype: attribute type of container * @attrtype: attribute type of container
* *
* Returns the container attribute * This function exists for backward compatibility to use in APIs which never
* marked their nest attributes with NLA_F_NESTED flag. New APIs should use
* nla_nest_start() which sets the flag.
*
* Returns the container attribute or NULL on error
*/ */
static inline struct nlattr *nla_nest_start(struct sk_buff *skb, int attrtype) static inline struct nlattr *nla_nest_start_noflag(struct sk_buff *skb,
int attrtype)
{ {
struct nlattr *start = (struct nlattr *)skb_tail_pointer(skb); struct nlattr *start = (struct nlattr *)skb_tail_pointer(skb);
@ -1431,6 +1436,21 @@ static inline struct nlattr *nla_nest_start(struct sk_buff *skb, int attrtype)
return start; return start;
} }
/**
* nla_nest_start - Start a new level of nested attributes, with NLA_F_NESTED
* @skb: socket buffer to add attributes to
* @attrtype: attribute type of container
*
* Unlike nla_nest_start_noflag(), mark the nest attribute with NLA_F_NESTED
* flag. This is the preferred function to use in new code.
*
* Returns the container attribute or NULL on error
*/
static inline struct nlattr *nla_nest_start(struct sk_buff *skb, int attrtype)
{
return nla_nest_start_noflag(skb, attrtype | NLA_F_NESTED);
}
/** /**
* nla_nest_end - Finalize nesting of attributes * nla_nest_end - Finalize nesting of attributes
* @skb: socket buffer the attributes are stored in * @skb: socket buffer the attributes are stored in

View File

@ -375,7 +375,7 @@ static struct taskstats *mk_reply(struct sk_buff *skb, int type, u32 pid)
? TASKSTATS_TYPE_AGGR_PID ? TASKSTATS_TYPE_AGGR_PID
: TASKSTATS_TYPE_AGGR_TGID; : TASKSTATS_TYPE_AGGR_TGID;
na = nla_nest_start(skb, aggr); na = nla_nest_start_noflag(skb, aggr);
if (!na) if (!na)
goto err; goto err;

View File

@ -227,7 +227,7 @@ static int vlan_fill_info(struct sk_buff *skb, const struct net_device *dev)
goto nla_put_failure; goto nla_put_failure;
} }
if (vlan->nr_ingress_mappings) { if (vlan->nr_ingress_mappings) {
nest = nla_nest_start(skb, IFLA_VLAN_INGRESS_QOS); nest = nla_nest_start_noflag(skb, IFLA_VLAN_INGRESS_QOS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -245,7 +245,7 @@ static int vlan_fill_info(struct sk_buff *skb, const struct net_device *dev)
} }
if (vlan->nr_egress_mappings) { if (vlan->nr_egress_mappings) {
nest = nla_nest_start(skb, IFLA_VLAN_EGRESS_QOS); nest = nla_nest_start_noflag(skb, IFLA_VLAN_EGRESS_QOS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -26,14 +26,14 @@ static int br_rports_fill_info(struct sk_buff *skb, struct netlink_callback *cb,
if (!br->multicast_router || hlist_empty(&br->router_list)) if (!br->multicast_router || hlist_empty(&br->router_list))
return 0; return 0;
nest = nla_nest_start(skb, MDBA_ROUTER); nest = nla_nest_start_noflag(skb, MDBA_ROUTER);
if (nest == NULL) if (nest == NULL)
return -EMSGSIZE; return -EMSGSIZE;
hlist_for_each_entry_rcu(p, &br->router_list, rlist) { hlist_for_each_entry_rcu(p, &br->router_list, rlist) {
if (!p) if (!p)
continue; continue;
port_nest = nla_nest_start(skb, MDBA_ROUTER_PORT); port_nest = nla_nest_start_noflag(skb, MDBA_ROUTER_PORT);
if (!port_nest) if (!port_nest)
goto fail; goto fail;
if (nla_put_nohdr(skb, sizeof(u32), &p->dev->ifindex) || if (nla_put_nohdr(skb, sizeof(u32), &p->dev->ifindex) ||
@ -86,7 +86,7 @@ static int br_mdb_fill_info(struct sk_buff *skb, struct netlink_callback *cb,
if (!br_opt_get(br, BROPT_MULTICAST_ENABLED)) if (!br_opt_get(br, BROPT_MULTICAST_ENABLED))
return 0; return 0;
nest = nla_nest_start(skb, MDBA_MDB); nest = nla_nest_start_noflag(skb, MDBA_MDB);
if (nest == NULL) if (nest == NULL)
return -EMSGSIZE; return -EMSGSIZE;
@ -98,7 +98,7 @@ static int br_mdb_fill_info(struct sk_buff *skb, struct netlink_callback *cb,
if (idx < s_idx) if (idx < s_idx)
goto skip; goto skip;
nest2 = nla_nest_start(skb, MDBA_MDB_ENTRY); nest2 = nla_nest_start_noflag(skb, MDBA_MDB_ENTRY);
if (!nest2) { if (!nest2) {
err = -EMSGSIZE; err = -EMSGSIZE;
break; break;
@ -124,7 +124,8 @@ static int br_mdb_fill_info(struct sk_buff *skb, struct netlink_callback *cb,
e.addr.u.ip6 = p->addr.u.ip6; e.addr.u.ip6 = p->addr.u.ip6;
#endif #endif
e.addr.proto = p->addr.proto; e.addr.proto = p->addr.proto;
nest_ent = nla_nest_start(skb, MDBA_MDB_ENTRY_INFO); nest_ent = nla_nest_start_noflag(skb,
MDBA_MDB_ENTRY_INFO);
if (!nest_ent) { if (!nest_ent) {
nla_nest_cancel(skb, nest2); nla_nest_cancel(skb, nest2);
err = -EMSGSIZE; err = -EMSGSIZE;
@ -248,10 +249,10 @@ static int nlmsg_populate_mdb_fill(struct sk_buff *skb,
memset(bpm, 0, sizeof(*bpm)); memset(bpm, 0, sizeof(*bpm));
bpm->family = AF_BRIDGE; bpm->family = AF_BRIDGE;
bpm->ifindex = dev->ifindex; bpm->ifindex = dev->ifindex;
nest = nla_nest_start(skb, MDBA_MDB); nest = nla_nest_start_noflag(skb, MDBA_MDB);
if (nest == NULL) if (nest == NULL)
goto cancel; goto cancel;
nest2 = nla_nest_start(skb, MDBA_MDB_ENTRY); nest2 = nla_nest_start_noflag(skb, MDBA_MDB_ENTRY);
if (nest2 == NULL) if (nest2 == NULL)
goto end; goto end;
@ -444,7 +445,7 @@ static int nlmsg_populate_rtr_fill(struct sk_buff *skb,
memset(bpm, 0, sizeof(*bpm)); memset(bpm, 0, sizeof(*bpm));
bpm->family = AF_BRIDGE; bpm->family = AF_BRIDGE;
bpm->ifindex = dev->ifindex; bpm->ifindex = dev->ifindex;
nest = nla_nest_start(skb, MDBA_ROUTER); nest = nla_nest_start_noflag(skb, MDBA_ROUTER);
if (!nest) if (!nest)
goto cancel; goto cancel;

View File

@ -414,7 +414,7 @@ static int br_fill_ifinfo(struct sk_buff *skb,
if (event == RTM_NEWLINK && port) { if (event == RTM_NEWLINK && port) {
struct nlattr *nest struct nlattr *nest
= nla_nest_start(skb, IFLA_PROTINFO | NLA_F_NESTED); = nla_nest_start(skb, IFLA_PROTINFO);
if (nest == NULL || br_port_fill_attrs(skb, port) < 0) if (nest == NULL || br_port_fill_attrs(skb, port) < 0)
goto nla_put_failure; goto nla_put_failure;
@ -439,7 +439,7 @@ static int br_fill_ifinfo(struct sk_buff *skb,
rcu_read_unlock(); rcu_read_unlock();
goto done; goto done;
} }
af = nla_nest_start(skb, IFLA_AF_SPEC); af = nla_nest_start_noflag(skb, IFLA_AF_SPEC);
if (!af) { if (!af) {
rcu_read_unlock(); rcu_read_unlock();
goto nla_put_failure; goto nla_put_failure;
@ -1569,7 +1569,7 @@ static int br_fill_linkxstats(struct sk_buff *skb,
return -EINVAL; return -EINVAL;
} }
nest = nla_nest_start(skb, LINK_XSTATS_TYPE_BRIDGE); nest = nla_nest_start_noflag(skb, LINK_XSTATS_TYPE_BRIDGE);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -97,7 +97,7 @@ static int br_fill_vlan_tinfo(struct sk_buff *skb, u16 vid,
__be32 tid = tunnel_id_to_key32(tunnel_id); __be32 tid = tunnel_id_to_key32(tunnel_id);
struct nlattr *tmap; struct nlattr *tmap;
tmap = nla_nest_start(skb, IFLA_BRIDGE_VLAN_TUNNEL_INFO); tmap = nla_nest_start_noflag(skb, IFLA_BRIDGE_VLAN_TUNNEL_INFO);
if (!tmap) if (!tmap)
return -EMSGSIZE; return -EMSGSIZE;
if (nla_put_u32(skb, IFLA_BRIDGE_VLAN_TUNNEL_ID, if (nla_put_u32(skb, IFLA_BRIDGE_VLAN_TUNNEL_ID,

View File

@ -1671,7 +1671,7 @@ int devlink_dpipe_match_put(struct sk_buff *skb,
struct devlink_dpipe_field *field = &header->fields[match->field_id]; struct devlink_dpipe_field *field = &header->fields[match->field_id];
struct nlattr *match_attr; struct nlattr *match_attr;
match_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_MATCH); match_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_DPIPE_MATCH);
if (!match_attr) if (!match_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -1696,7 +1696,8 @@ static int devlink_dpipe_matches_put(struct devlink_dpipe_table *table,
{ {
struct nlattr *matches_attr; struct nlattr *matches_attr;
matches_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_TABLE_MATCHES); matches_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_TABLE_MATCHES);
if (!matches_attr) if (!matches_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -1718,7 +1719,7 @@ int devlink_dpipe_action_put(struct sk_buff *skb,
struct devlink_dpipe_field *field = &header->fields[action->field_id]; struct devlink_dpipe_field *field = &header->fields[action->field_id];
struct nlattr *action_attr; struct nlattr *action_attr;
action_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_ACTION); action_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_DPIPE_ACTION);
if (!action_attr) if (!action_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -1743,7 +1744,8 @@ static int devlink_dpipe_actions_put(struct devlink_dpipe_table *table,
{ {
struct nlattr *actions_attr; struct nlattr *actions_attr;
actions_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_TABLE_ACTIONS); actions_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS);
if (!actions_attr) if (!actions_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -1765,7 +1767,7 @@ static int devlink_dpipe_table_put(struct sk_buff *skb,
u64 table_size; u64 table_size;
table_size = table->table_ops->size_get(table->priv); table_size = table->table_ops->size_get(table->priv);
table_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_TABLE); table_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_DPIPE_TABLE);
if (!table_attr) if (!table_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -1845,7 +1847,7 @@ start_again:
if (devlink_nl_put_handle(skb, devlink)) if (devlink_nl_put_handle(skb, devlink))
goto nla_put_failure; goto nla_put_failure;
tables_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_TABLES); tables_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_DPIPE_TABLES);
if (!tables_attr) if (!tables_attr)
goto nla_put_failure; goto nla_put_failure;
@ -1946,8 +1948,8 @@ static int devlink_dpipe_action_values_put(struct sk_buff *skb,
int err; int err;
for (i = 0; i < values_count; i++) { for (i = 0; i < values_count; i++) {
action_attr = nla_nest_start(skb, action_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_ACTION_VALUE); DEVLINK_ATTR_DPIPE_ACTION_VALUE);
if (!action_attr) if (!action_attr)
return -EMSGSIZE; return -EMSGSIZE;
err = devlink_dpipe_action_value_put(skb, &values[i]); err = devlink_dpipe_action_value_put(skb, &values[i]);
@ -1983,8 +1985,8 @@ static int devlink_dpipe_match_values_put(struct sk_buff *skb,
int err; int err;
for (i = 0; i < values_count; i++) { for (i = 0; i < values_count; i++) {
match_attr = nla_nest_start(skb, match_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_MATCH_VALUE); DEVLINK_ATTR_DPIPE_MATCH_VALUE);
if (!match_attr) if (!match_attr)
return -EMSGSIZE; return -EMSGSIZE;
err = devlink_dpipe_match_value_put(skb, &values[i]); err = devlink_dpipe_match_value_put(skb, &values[i]);
@ -2005,7 +2007,7 @@ static int devlink_dpipe_entry_put(struct sk_buff *skb,
struct nlattr *entry_attr, *matches_attr, *actions_attr; struct nlattr *entry_attr, *matches_attr, *actions_attr;
int err; int err;
entry_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_ENTRY); entry_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_DPIPE_ENTRY);
if (!entry_attr) if (!entry_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -2017,8 +2019,8 @@ static int devlink_dpipe_entry_put(struct sk_buff *skb,
entry->counter, DEVLINK_ATTR_PAD)) entry->counter, DEVLINK_ATTR_PAD))
goto nla_put_failure; goto nla_put_failure;
matches_attr = nla_nest_start(skb, matches_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES); DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES);
if (!matches_attr) if (!matches_attr)
goto nla_put_failure; goto nla_put_failure;
@ -2030,8 +2032,8 @@ static int devlink_dpipe_entry_put(struct sk_buff *skb,
} }
nla_nest_end(skb, matches_attr); nla_nest_end(skb, matches_attr);
actions_attr = nla_nest_start(skb, actions_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES); DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES);
if (!actions_attr) if (!actions_attr)
goto nla_put_failure; goto nla_put_failure;
@ -2088,8 +2090,8 @@ int devlink_dpipe_entry_ctx_prepare(struct devlink_dpipe_dump_ctx *dump_ctx)
devlink = dump_ctx->info->user_ptr[0]; devlink = dump_ctx->info->user_ptr[0];
if (devlink_nl_put_handle(dump_ctx->skb, devlink)) if (devlink_nl_put_handle(dump_ctx->skb, devlink))
goto nla_put_failure; goto nla_put_failure;
dump_ctx->nest = nla_nest_start(dump_ctx->skb, dump_ctx->nest = nla_nest_start_noflag(dump_ctx->skb,
DEVLINK_ATTR_DPIPE_ENTRIES); DEVLINK_ATTR_DPIPE_ENTRIES);
if (!dump_ctx->nest) if (!dump_ctx->nest)
goto nla_put_failure; goto nla_put_failure;
return 0; return 0;
@ -2199,7 +2201,8 @@ static int devlink_dpipe_fields_put(struct sk_buff *skb,
for (i = 0; i < header->fields_count; i++) { for (i = 0; i < header->fields_count; i++) {
field = &header->fields[i]; field = &header->fields[i];
field_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_FIELD); field_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_FIELD);
if (!field_attr) if (!field_attr)
return -EMSGSIZE; return -EMSGSIZE;
if (nla_put_string(skb, DEVLINK_ATTR_DPIPE_FIELD_NAME, field->name) || if (nla_put_string(skb, DEVLINK_ATTR_DPIPE_FIELD_NAME, field->name) ||
@ -2222,7 +2225,7 @@ static int devlink_dpipe_header_put(struct sk_buff *skb,
struct nlattr *fields_attr, *header_attr; struct nlattr *fields_attr, *header_attr;
int err; int err;
header_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_HEADER); header_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_DPIPE_HEADER);
if (!header_attr) if (!header_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -2231,7 +2234,8 @@ static int devlink_dpipe_header_put(struct sk_buff *skb,
nla_put_u8(skb, DEVLINK_ATTR_DPIPE_HEADER_GLOBAL, header->global)) nla_put_u8(skb, DEVLINK_ATTR_DPIPE_HEADER_GLOBAL, header->global))
goto nla_put_failure; goto nla_put_failure;
fields_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_HEADER_FIELDS); fields_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_DPIPE_HEADER_FIELDS);
if (!fields_attr) if (!fields_attr)
goto nla_put_failure; goto nla_put_failure;
@ -2278,7 +2282,7 @@ start_again:
if (devlink_nl_put_handle(skb, devlink)) if (devlink_nl_put_handle(skb, devlink))
goto nla_put_failure; goto nla_put_failure;
headers_attr = nla_nest_start(skb, DEVLINK_ATTR_DPIPE_HEADERS); headers_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_DPIPE_HEADERS);
if (!headers_attr) if (!headers_attr)
goto nla_put_failure; goto nla_put_failure;
@ -2502,7 +2506,7 @@ static int devlink_resource_put(struct devlink *devlink, struct sk_buff *skb,
struct nlattr *child_resource_attr; struct nlattr *child_resource_attr;
struct nlattr *resource_attr; struct nlattr *resource_attr;
resource_attr = nla_nest_start(skb, DEVLINK_ATTR_RESOURCE); resource_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_RESOURCE);
if (!resource_attr) if (!resource_attr)
return -EMSGSIZE; return -EMSGSIZE;
@ -2526,7 +2530,8 @@ static int devlink_resource_put(struct devlink *devlink, struct sk_buff *skb,
resource->size_valid)) resource->size_valid))
goto nla_put_failure; goto nla_put_failure;
child_resource_attr = nla_nest_start(skb, DEVLINK_ATTR_RESOURCE_LIST); child_resource_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_RESOURCE_LIST);
if (!child_resource_attr) if (!child_resource_attr)
goto nla_put_failure; goto nla_put_failure;
@ -2577,7 +2582,8 @@ start_again:
if (devlink_nl_put_handle(skb, devlink)) if (devlink_nl_put_handle(skb, devlink))
goto nla_put_failure; goto nla_put_failure;
resources_attr = nla_nest_start(skb, DEVLINK_ATTR_RESOURCE_LIST); resources_attr = nla_nest_start_noflag(skb,
DEVLINK_ATTR_RESOURCE_LIST);
if (!resources_attr) if (!resources_attr)
goto nla_put_failure; goto nla_put_failure;
@ -2831,7 +2837,8 @@ devlink_nl_param_value_fill_one(struct sk_buff *msg,
{ {
struct nlattr *param_value_attr; struct nlattr *param_value_attr;
param_value_attr = nla_nest_start(msg, DEVLINK_ATTR_PARAM_VALUE); param_value_attr = nla_nest_start_noflag(msg,
DEVLINK_ATTR_PARAM_VALUE);
if (!param_value_attr) if (!param_value_attr)
goto nla_put_failure; goto nla_put_failure;
@ -2922,7 +2929,7 @@ static int devlink_nl_param_fill(struct sk_buff *msg, struct devlink *devlink,
if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, port_index)) if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, port_index))
goto genlmsg_cancel; goto genlmsg_cancel;
param_attr = nla_nest_start(msg, DEVLINK_ATTR_PARAM); param_attr = nla_nest_start_noflag(msg, DEVLINK_ATTR_PARAM);
if (!param_attr) if (!param_attr)
goto genlmsg_cancel; goto genlmsg_cancel;
if (nla_put_string(msg, DEVLINK_ATTR_PARAM_NAME, param->name)) if (nla_put_string(msg, DEVLINK_ATTR_PARAM_NAME, param->name))
@ -2936,7 +2943,8 @@ static int devlink_nl_param_fill(struct sk_buff *msg, struct devlink *devlink,
if (nla_put_u8(msg, DEVLINK_ATTR_PARAM_TYPE, nla_type)) if (nla_put_u8(msg, DEVLINK_ATTR_PARAM_TYPE, nla_type))
goto param_nest_cancel; goto param_nest_cancel;
param_values_list = nla_nest_start(msg, DEVLINK_ATTR_PARAM_VALUES_LIST); param_values_list = nla_nest_start_noflag(msg,
DEVLINK_ATTR_PARAM_VALUES_LIST);
if (!param_values_list) if (!param_values_list)
goto param_nest_cancel; goto param_nest_cancel;
@ -3336,7 +3344,7 @@ static int devlink_nl_region_snapshot_id_put(struct sk_buff *msg,
struct nlattr *snap_attr; struct nlattr *snap_attr;
int err; int err;
snap_attr = nla_nest_start(msg, DEVLINK_ATTR_REGION_SNAPSHOT); snap_attr = nla_nest_start_noflag(msg, DEVLINK_ATTR_REGION_SNAPSHOT);
if (!snap_attr) if (!snap_attr)
return -EINVAL; return -EINVAL;
@ -3360,7 +3368,8 @@ static int devlink_nl_region_snapshots_id_put(struct sk_buff *msg,
struct nlattr *snapshots_attr; struct nlattr *snapshots_attr;
int err; int err;
snapshots_attr = nla_nest_start(msg, DEVLINK_ATTR_REGION_SNAPSHOTS); snapshots_attr = nla_nest_start_noflag(msg,
DEVLINK_ATTR_REGION_SNAPSHOTS);
if (!snapshots_attr) if (!snapshots_attr)
return -EINVAL; return -EINVAL;
@ -3576,7 +3585,7 @@ static int devlink_nl_cmd_region_read_chunk_fill(struct sk_buff *msg,
struct nlattr *chunk_attr; struct nlattr *chunk_attr;
int err; int err;
chunk_attr = nla_nest_start(msg, DEVLINK_ATTR_REGION_CHUNK); chunk_attr = nla_nest_start_noflag(msg, DEVLINK_ATTR_REGION_CHUNK);
if (!chunk_attr) if (!chunk_attr)
return -EINVAL; return -EINVAL;
@ -3709,7 +3718,7 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,
if (err) if (err)
goto nla_put_failure; goto nla_put_failure;
chunks_attr = nla_nest_start(skb, DEVLINK_ATTR_REGION_CHUNKS); chunks_attr = nla_nest_start_noflag(skb, DEVLINK_ATTR_REGION_CHUNKS);
if (!chunks_attr) { if (!chunks_attr) {
err = -EMSGSIZE; err = -EMSGSIZE;
goto nla_put_failure; goto nla_put_failure;
@ -3785,7 +3794,7 @@ static int devlink_info_version_put(struct devlink_info_req *req, int attr,
struct nlattr *nest; struct nlattr *nest;
int err; int err;
nest = nla_nest_start(req->msg, attr); nest = nla_nest_start_noflag(req->msg, attr);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -4313,7 +4322,7 @@ devlink_fmsg_prepare_skb(struct devlink_fmsg *fmsg, struct sk_buff *skb,
int i = 0; int i = 0;
int err; int err;
fmsg_nlattr = nla_nest_start(skb, DEVLINK_ATTR_FMSG); fmsg_nlattr = nla_nest_start_noflag(skb, DEVLINK_ATTR_FMSG);
if (!fmsg_nlattr) if (!fmsg_nlattr)
return -EMSGSIZE; return -EMSGSIZE;
@ -4665,7 +4674,8 @@ devlink_nl_health_reporter_fill(struct sk_buff *msg,
if (devlink_nl_put_handle(msg, devlink)) if (devlink_nl_put_handle(msg, devlink))
goto genlmsg_cancel; goto genlmsg_cancel;
reporter_attr = nla_nest_start(msg, DEVLINK_ATTR_HEALTH_REPORTER); reporter_attr = nla_nest_start_noflag(msg,
DEVLINK_ATTR_HEALTH_REPORTER);
if (!reporter_attr) if (!reporter_attr)
goto genlmsg_cancel; goto genlmsg_cancel;
if (nla_put_string(msg, DEVLINK_ATTR_HEALTH_REPORTER_NAME, if (nla_put_string(msg, DEVLINK_ATTR_HEALTH_REPORTER_NAME,

View File

@ -453,7 +453,7 @@ static int bpf_fill_lwt_prog(struct sk_buff *skb, int attr,
if (!prog->prog) if (!prog->prog)
return 0; return 0;
nest = nla_nest_start(skb, attr); nest = nla_nest_start_noflag(skb, attr);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -237,7 +237,7 @@ int lwtunnel_fill_encap(struct sk_buff *skb, struct lwtunnel_state *lwtstate,
lwtstate->type > LWTUNNEL_ENCAP_MAX) lwtstate->type > LWTUNNEL_ENCAP_MAX)
return 0; return 0;
nest = nla_nest_start(skb, encap_attr); nest = nla_nest_start_noflag(skb, encap_attr);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -1979,7 +1979,7 @@ static int neightbl_fill_parms(struct sk_buff *skb, struct neigh_parms *parms)
{ {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, NDTA_PARMS); nest = nla_nest_start_noflag(skb, NDTA_PARMS);
if (nest == NULL) if (nest == NULL)
return -ENOBUFS; return -ENOBUFS;

View File

@ -634,7 +634,7 @@ static int rtnl_link_slave_info_fill(struct sk_buff *skb,
if (nla_put_string(skb, IFLA_INFO_SLAVE_KIND, ops->kind) < 0) if (nla_put_string(skb, IFLA_INFO_SLAVE_KIND, ops->kind) < 0)
return -EMSGSIZE; return -EMSGSIZE;
if (ops->fill_slave_info) { if (ops->fill_slave_info) {
slave_data = nla_nest_start(skb, IFLA_INFO_SLAVE_DATA); slave_data = nla_nest_start_noflag(skb, IFLA_INFO_SLAVE_DATA);
if (!slave_data) if (!slave_data)
return -EMSGSIZE; return -EMSGSIZE;
err = ops->fill_slave_info(skb, master_dev, dev); err = ops->fill_slave_info(skb, master_dev, dev);
@ -666,7 +666,7 @@ static int rtnl_link_info_fill(struct sk_buff *skb,
return err; return err;
} }
if (ops->fill_info) { if (ops->fill_info) {
data = nla_nest_start(skb, IFLA_INFO_DATA); data = nla_nest_start_noflag(skb, IFLA_INFO_DATA);
if (data == NULL) if (data == NULL)
return -EMSGSIZE; return -EMSGSIZE;
err = ops->fill_info(skb, dev); err = ops->fill_info(skb, dev);
@ -686,7 +686,7 @@ static int rtnl_link_fill(struct sk_buff *skb, const struct net_device *dev)
struct nlattr *linkinfo; struct nlattr *linkinfo;
int err = -EMSGSIZE; int err = -EMSGSIZE;
linkinfo = nla_nest_start(skb, IFLA_LINKINFO); linkinfo = nla_nest_start_noflag(skb, IFLA_LINKINFO);
if (linkinfo == NULL) if (linkinfo == NULL)
goto out; goto out;
@ -755,7 +755,7 @@ int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics)
struct nlattr *mx; struct nlattr *mx;
int i, valid = 0; int i, valid = 0;
mx = nla_nest_start(skb, RTA_METRICS); mx = nla_nest_start_noflag(skb, RTA_METRICS);
if (mx == NULL) if (mx == NULL)
return -ENOBUFS; return -ENOBUFS;
@ -1036,12 +1036,12 @@ static int rtnl_vf_ports_fill(struct sk_buff *skb, struct net_device *dev)
int vf; int vf;
int err; int err;
vf_ports = nla_nest_start(skb, IFLA_VF_PORTS); vf_ports = nla_nest_start_noflag(skb, IFLA_VF_PORTS);
if (!vf_ports) if (!vf_ports)
return -EMSGSIZE; return -EMSGSIZE;
for (vf = 0; vf < dev_num_vf(dev->dev.parent); vf++) { for (vf = 0; vf < dev_num_vf(dev->dev.parent); vf++) {
vf_port = nla_nest_start(skb, IFLA_VF_PORT); vf_port = nla_nest_start_noflag(skb, IFLA_VF_PORT);
if (!vf_port) if (!vf_port)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u32(skb, IFLA_PORT_VF, vf)) if (nla_put_u32(skb, IFLA_PORT_VF, vf))
@ -1070,7 +1070,7 @@ static int rtnl_port_self_fill(struct sk_buff *skb, struct net_device *dev)
struct nlattr *port_self; struct nlattr *port_self;
int err; int err;
port_self = nla_nest_start(skb, IFLA_PORT_SELF); port_self = nla_nest_start_noflag(skb, IFLA_PORT_SELF);
if (!port_self) if (!port_self)
return -EMSGSIZE; return -EMSGSIZE;
@ -1247,7 +1247,7 @@ static noinline_for_stack int rtnl_fill_vfinfo(struct sk_buff *skb,
vf_linkstate.link_state = ivi.linkstate; vf_linkstate.link_state = ivi.linkstate;
vf_rss_query_en.setting = ivi.rss_query_en; vf_rss_query_en.setting = ivi.rss_query_en;
vf_trust.setting = ivi.trusted; vf_trust.setting = ivi.trusted;
vf = nla_nest_start(skb, IFLA_VF_INFO); vf = nla_nest_start_noflag(skb, IFLA_VF_INFO);
if (!vf) if (!vf)
goto nla_put_vfinfo_failure; goto nla_put_vfinfo_failure;
if (nla_put(skb, IFLA_VF_MAC, sizeof(vf_mac), &vf_mac) || if (nla_put(skb, IFLA_VF_MAC, sizeof(vf_mac), &vf_mac) ||
@ -1266,7 +1266,7 @@ static noinline_for_stack int rtnl_fill_vfinfo(struct sk_buff *skb,
nla_put(skb, IFLA_VF_TRUST, nla_put(skb, IFLA_VF_TRUST,
sizeof(vf_trust), &vf_trust)) sizeof(vf_trust), &vf_trust))
goto nla_put_vf_failure; goto nla_put_vf_failure;
vfvlanlist = nla_nest_start(skb, IFLA_VF_VLAN_LIST); vfvlanlist = nla_nest_start_noflag(skb, IFLA_VF_VLAN_LIST);
if (!vfvlanlist) if (!vfvlanlist)
goto nla_put_vf_failure; goto nla_put_vf_failure;
if (nla_put(skb, IFLA_VF_VLAN_INFO, sizeof(vf_vlan_info), if (nla_put(skb, IFLA_VF_VLAN_INFO, sizeof(vf_vlan_info),
@ -1279,7 +1279,7 @@ static noinline_for_stack int rtnl_fill_vfinfo(struct sk_buff *skb,
if (dev->netdev_ops->ndo_get_vf_stats) if (dev->netdev_ops->ndo_get_vf_stats)
dev->netdev_ops->ndo_get_vf_stats(dev, vfs_num, dev->netdev_ops->ndo_get_vf_stats(dev, vfs_num,
&vf_stats); &vf_stats);
vfstats = nla_nest_start(skb, IFLA_VF_STATS); vfstats = nla_nest_start_noflag(skb, IFLA_VF_STATS);
if (!vfstats) if (!vfstats)
goto nla_put_vf_failure; goto nla_put_vf_failure;
if (nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_PACKETS, if (nla_put_u64_64bit(skb, IFLA_VF_STATS_RX_PACKETS,
@ -1329,7 +1329,7 @@ static noinline_for_stack int rtnl_fill_vf(struct sk_buff *skb,
if (!dev->netdev_ops->ndo_get_vf_config) if (!dev->netdev_ops->ndo_get_vf_config)
return 0; return 0;
vfinfo = nla_nest_start(skb, IFLA_VFINFO_LIST); vfinfo = nla_nest_start_noflag(skb, IFLA_VFINFO_LIST);
if (!vfinfo) if (!vfinfo)
return -EMSGSIZE; return -EMSGSIZE;
@ -1414,7 +1414,7 @@ static int rtnl_xdp_fill(struct sk_buff *skb, struct net_device *dev)
int err; int err;
u8 mode; u8 mode;
xdp = nla_nest_start(skb, IFLA_XDP); xdp = nla_nest_start_noflag(skb, IFLA_XDP);
if (!xdp) if (!xdp)
return -EMSGSIZE; return -EMSGSIZE;
@ -1541,7 +1541,7 @@ static int rtnl_fill_link_af(struct sk_buff *skb,
const struct rtnl_af_ops *af_ops; const struct rtnl_af_ops *af_ops;
struct nlattr *af_spec; struct nlattr *af_spec;
af_spec = nla_nest_start(skb, IFLA_AF_SPEC); af_spec = nla_nest_start_noflag(skb, IFLA_AF_SPEC);
if (!af_spec) if (!af_spec)
return -EMSGSIZE; return -EMSGSIZE;
@ -1552,7 +1552,7 @@ static int rtnl_fill_link_af(struct sk_buff *skb,
if (!af_ops->fill_link_af) if (!af_ops->fill_link_af)
continue; continue;
af = nla_nest_start(skb, af_ops->family); af = nla_nest_start_noflag(skb, af_ops->family);
if (!af) if (!af)
return -EMSGSIZE; return -EMSGSIZE;
@ -4273,7 +4273,7 @@ int ndo_dflt_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
nla_put_u32(skb, IFLA_LINK, dev_get_iflink(dev)))) nla_put_u32(skb, IFLA_LINK, dev_get_iflink(dev))))
goto nla_put_failure; goto nla_put_failure;
br_afspec = nla_nest_start(skb, IFLA_AF_SPEC); br_afspec = nla_nest_start_noflag(skb, IFLA_AF_SPEC);
if (!br_afspec) if (!br_afspec)
goto nla_put_failure; goto nla_put_failure;
@ -4297,7 +4297,7 @@ int ndo_dflt_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
} }
nla_nest_end(skb, br_afspec); nla_nest_end(skb, br_afspec);
protinfo = nla_nest_start(skb, IFLA_PROTINFO | NLA_F_NESTED); protinfo = nla_nest_start(skb, IFLA_PROTINFO);
if (!protinfo) if (!protinfo)
goto nla_put_failure; goto nla_put_failure;
@ -4776,8 +4776,8 @@ static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
if (ops && ops->fill_linkxstats) { if (ops && ops->fill_linkxstats) {
*idxattr = IFLA_STATS_LINK_XSTATS; *idxattr = IFLA_STATS_LINK_XSTATS;
attr = nla_nest_start(skb, attr = nla_nest_start_noflag(skb,
IFLA_STATS_LINK_XSTATS); IFLA_STATS_LINK_XSTATS);
if (!attr) if (!attr)
goto nla_put_failure; goto nla_put_failure;
@ -4799,8 +4799,8 @@ static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
ops = master->rtnl_link_ops; ops = master->rtnl_link_ops;
if (ops && ops->fill_linkxstats) { if (ops && ops->fill_linkxstats) {
*idxattr = IFLA_STATS_LINK_XSTATS_SLAVE; *idxattr = IFLA_STATS_LINK_XSTATS_SLAVE;
attr = nla_nest_start(skb, attr = nla_nest_start_noflag(skb,
IFLA_STATS_LINK_XSTATS_SLAVE); IFLA_STATS_LINK_XSTATS_SLAVE);
if (!attr) if (!attr)
goto nla_put_failure; goto nla_put_failure;
@ -4815,7 +4815,8 @@ static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_OFFLOAD_XSTATS, if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_OFFLOAD_XSTATS,
*idxattr)) { *idxattr)) {
*idxattr = IFLA_STATS_LINK_OFFLOAD_XSTATS; *idxattr = IFLA_STATS_LINK_OFFLOAD_XSTATS;
attr = nla_nest_start(skb, IFLA_STATS_LINK_OFFLOAD_XSTATS); attr = nla_nest_start_noflag(skb,
IFLA_STATS_LINK_OFFLOAD_XSTATS);
if (!attr) if (!attr)
goto nla_put_failure; goto nla_put_failure;
@ -4834,7 +4835,7 @@ static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
struct rtnl_af_ops *af_ops; struct rtnl_af_ops *af_ops;
*idxattr = IFLA_STATS_AF_SPEC; *idxattr = IFLA_STATS_AF_SPEC;
attr = nla_nest_start(skb, IFLA_STATS_AF_SPEC); attr = nla_nest_start_noflag(skb, IFLA_STATS_AF_SPEC);
if (!attr) if (!attr)
goto nla_put_failure; goto nla_put_failure;
@ -4844,7 +4845,8 @@ static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
struct nlattr *af; struct nlattr *af;
int err; int err;
af = nla_nest_start(skb, af_ops->family); af = nla_nest_start_noflag(skb,
af_ops->family);
if (!af) { if (!af) {
rcu_read_unlock(); rcu_read_unlock();
goto nla_put_failure; goto nla_put_failure;

View File

@ -246,7 +246,7 @@ static int dcbnl_getpfccfg(struct net_device *netdev, struct nlmsghdr *nlh,
if (ret) if (ret)
return ret; return ret;
nest = nla_nest_start(skb, DCB_ATTR_PFC_CFG); nest = nla_nest_start_noflag(skb, DCB_ATTR_PFC_CFG);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -304,7 +304,7 @@ static int dcbnl_getcap(struct net_device *netdev, struct nlmsghdr *nlh,
if (ret) if (ret)
return ret; return ret;
nest = nla_nest_start(skb, DCB_ATTR_CAP); nest = nla_nest_start_noflag(skb, DCB_ATTR_CAP);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -348,7 +348,7 @@ static int dcbnl_getnumtcs(struct net_device *netdev, struct nlmsghdr *nlh,
if (ret) if (ret)
return ret; return ret;
nest = nla_nest_start(skb, DCB_ATTR_NUMTCS); nest = nla_nest_start_noflag(skb, DCB_ATTR_NUMTCS);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -479,7 +479,7 @@ static int dcbnl_getapp(struct net_device *netdev, struct nlmsghdr *nlh,
up = dcb_getapp(netdev, &app); up = dcb_getapp(netdev, &app);
} }
app_nest = nla_nest_start(skb, DCB_ATTR_APP); app_nest = nla_nest_start_noflag(skb, DCB_ATTR_APP);
if (!app_nest) if (!app_nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -578,7 +578,7 @@ static int __dcbnl_pg_getcfg(struct net_device *netdev, struct nlmsghdr *nlh,
if (ret) if (ret)
return ret; return ret;
pg_nest = nla_nest_start(skb, DCB_ATTR_PG_CFG); pg_nest = nla_nest_start_noflag(skb, DCB_ATTR_PG_CFG);
if (!pg_nest) if (!pg_nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -598,7 +598,7 @@ static int __dcbnl_pg_getcfg(struct net_device *netdev, struct nlmsghdr *nlh,
if (ret) if (ret)
goto err_pg; goto err_pg;
param_nest = nla_nest_start(skb, i); param_nest = nla_nest_start_noflag(skb, i);
if (!param_nest) if (!param_nest)
goto err_pg; goto err_pg;
@ -889,7 +889,7 @@ static int dcbnl_bcn_getcfg(struct net_device *netdev, struct nlmsghdr *nlh,
if (ret) if (ret)
return ret; return ret;
bcn_nest = nla_nest_start(skb, DCB_ATTR_BCN); bcn_nest = nla_nest_start_noflag(skb, DCB_ATTR_BCN);
if (!bcn_nest) if (!bcn_nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -1002,7 +1002,7 @@ static int dcbnl_build_peer_app(struct net_device *netdev, struct sk_buff* skb,
*/ */
err = -EMSGSIZE; err = -EMSGSIZE;
app = nla_nest_start(skb, app_nested_type); app = nla_nest_start_noflag(skb, app_nested_type);
if (!app) if (!app)
goto nla_put_failure; goto nla_put_failure;
@ -1036,7 +1036,7 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev)
if (nla_put_string(skb, DCB_ATTR_IFNAME, netdev->name)) if (nla_put_string(skb, DCB_ATTR_IFNAME, netdev->name))
return -EMSGSIZE; return -EMSGSIZE;
ieee = nla_nest_start(skb, DCB_ATTR_IEEE); ieee = nla_nest_start_noflag(skb, DCB_ATTR_IEEE);
if (!ieee) if (!ieee)
return -EMSGSIZE; return -EMSGSIZE;
@ -1106,7 +1106,7 @@ static int dcbnl_ieee_fill(struct sk_buff *skb, struct net_device *netdev)
return -EMSGSIZE; return -EMSGSIZE;
} }
app = nla_nest_start(skb, DCB_ATTR_IEEE_APP_TABLE); app = nla_nest_start_noflag(skb, DCB_ATTR_IEEE_APP_TABLE);
if (!app) if (!app)
return -EMSGSIZE; return -EMSGSIZE;
@ -1174,13 +1174,13 @@ static int dcbnl_cee_pg_fill(struct sk_buff *skb, struct net_device *dev,
u8 pgid, up_map, prio, tc_pct; u8 pgid, up_map, prio, tc_pct;
const struct dcbnl_rtnl_ops *ops = dev->dcbnl_ops; const struct dcbnl_rtnl_ops *ops = dev->dcbnl_ops;
int i = dir ? DCB_ATTR_CEE_TX_PG : DCB_ATTR_CEE_RX_PG; int i = dir ? DCB_ATTR_CEE_TX_PG : DCB_ATTR_CEE_RX_PG;
struct nlattr *pg = nla_nest_start(skb, i); struct nlattr *pg = nla_nest_start_noflag(skb, i);
if (!pg) if (!pg)
return -EMSGSIZE; return -EMSGSIZE;
for (i = DCB_PG_ATTR_TC_0; i <= DCB_PG_ATTR_TC_7; i++) { for (i = DCB_PG_ATTR_TC_0; i <= DCB_PG_ATTR_TC_7; i++) {
struct nlattr *tc_nest = nla_nest_start(skb, i); struct nlattr *tc_nest = nla_nest_start_noflag(skb, i);
if (!tc_nest) if (!tc_nest)
return -EMSGSIZE; return -EMSGSIZE;
@ -1231,7 +1231,7 @@ static int dcbnl_cee_fill(struct sk_buff *skb, struct net_device *netdev)
if (nla_put_string(skb, DCB_ATTR_IFNAME, netdev->name)) if (nla_put_string(skb, DCB_ATTR_IFNAME, netdev->name))
goto nla_put_failure; goto nla_put_failure;
cee = nla_nest_start(skb, DCB_ATTR_CEE); cee = nla_nest_start_noflag(skb, DCB_ATTR_CEE);
if (!cee) if (!cee)
goto nla_put_failure; goto nla_put_failure;
@ -1250,7 +1250,8 @@ static int dcbnl_cee_fill(struct sk_buff *skb, struct net_device *netdev)
/* local pfc */ /* local pfc */
if (ops->getpfccfg) { if (ops->getpfccfg) {
struct nlattr *pfc_nest = nla_nest_start(skb, DCB_ATTR_CEE_PFC); struct nlattr *pfc_nest = nla_nest_start_noflag(skb,
DCB_ATTR_CEE_PFC);
if (!pfc_nest) if (!pfc_nest)
goto nla_put_failure; goto nla_put_failure;
@ -1265,14 +1266,14 @@ static int dcbnl_cee_fill(struct sk_buff *skb, struct net_device *netdev)
/* local app */ /* local app */
spin_lock_bh(&dcb_lock); spin_lock_bh(&dcb_lock);
app = nla_nest_start(skb, DCB_ATTR_CEE_APP_TABLE); app = nla_nest_start_noflag(skb, DCB_ATTR_CEE_APP_TABLE);
if (!app) if (!app)
goto dcb_unlock; goto dcb_unlock;
list_for_each_entry(itr, &dcb_app_list, list) { list_for_each_entry(itr, &dcb_app_list, list) {
if (itr->ifindex == netdev->ifindex) { if (itr->ifindex == netdev->ifindex) {
struct nlattr *app_nest = nla_nest_start(skb, struct nlattr *app_nest = nla_nest_start_noflag(skb,
DCB_ATTR_APP); DCB_ATTR_APP);
if (!app_nest) if (!app_nest)
goto dcb_unlock; goto dcb_unlock;
@ -1305,7 +1306,8 @@ static int dcbnl_cee_fill(struct sk_buff *skb, struct net_device *netdev)
/* features flags */ /* features flags */
if (ops->getfeatcfg) { if (ops->getfeatcfg) {
struct nlattr *feat = nla_nest_start(skb, DCB_ATTR_CEE_FEAT); struct nlattr *feat = nla_nest_start_noflag(skb,
DCB_ATTR_CEE_FEAT);
if (!feat) if (!feat)
goto nla_put_failure; goto nla_put_failure;
@ -1607,7 +1609,7 @@ static int dcbnl_getfeatcfg(struct net_device *netdev, struct nlmsghdr *nlh,
if (ret) if (ret)
return ret; return ret;
nest = nla_nest_start(skb, DCB_ATTR_FEATCFG); nest = nla_nest_start_noflag(skb, DCB_ATTR_FEATCFG);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -348,7 +348,7 @@ static int dn_fib_dump_info(struct sk_buff *skb, u32 portid, u32 seq, int event,
struct rtnexthop *nhp; struct rtnexthop *nhp;
struct nlattr *mp_head; struct nlattr *mp_head;
if (!(mp_head = nla_nest_start(skb, RTA_MULTIPATH))) if (!(mp_head = nla_nest_start_noflag(skb, RTA_MULTIPATH)))
goto errout; goto errout;
for_nexthops(fi) { for_nexthops(fi) {

View File

@ -312,7 +312,7 @@ static inline void *nl802154hdr_put(struct sk_buff *skb, u32 portid, u32 seq,
static int static int
nl802154_put_flags(struct sk_buff *msg, int attr, u32 mask) nl802154_put_flags(struct sk_buff *msg, int attr, u32 mask)
{ {
struct nlattr *nl_flags = nla_nest_start(msg, attr); struct nlattr *nl_flags = nla_nest_start_noflag(msg, attr);
int i; int i;
if (!nl_flags) if (!nl_flags)
@ -338,7 +338,7 @@ nl802154_send_wpan_phy_channels(struct cfg802154_registered_device *rdev,
struct nlattr *nl_page; struct nlattr *nl_page;
unsigned long page; unsigned long page;
nl_page = nla_nest_start(msg, NL802154_ATTR_CHANNELS_SUPPORTED); nl_page = nla_nest_start_noflag(msg, NL802154_ATTR_CHANNELS_SUPPORTED);
if (!nl_page) if (!nl_page)
return -ENOBUFS; return -ENOBUFS;
@ -360,11 +360,11 @@ nl802154_put_capabilities(struct sk_buff *msg,
struct nlattr *nl_caps, *nl_channels; struct nlattr *nl_caps, *nl_channels;
int i; int i;
nl_caps = nla_nest_start(msg, NL802154_ATTR_WPAN_PHY_CAPS); nl_caps = nla_nest_start_noflag(msg, NL802154_ATTR_WPAN_PHY_CAPS);
if (!nl_caps) if (!nl_caps)
return -ENOBUFS; return -ENOBUFS;
nl_channels = nla_nest_start(msg, NL802154_CAP_ATTR_CHANNELS); nl_channels = nla_nest_start_noflag(msg, NL802154_CAP_ATTR_CHANNELS);
if (!nl_channels) if (!nl_channels)
return -ENOBUFS; return -ENOBUFS;
@ -380,8 +380,8 @@ nl802154_put_capabilities(struct sk_buff *msg,
if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL) { if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_CCA_ED_LEVEL) {
struct nlattr *nl_ed_lvls; struct nlattr *nl_ed_lvls;
nl_ed_lvls = nla_nest_start(msg, nl_ed_lvls = nla_nest_start_noflag(msg,
NL802154_CAP_ATTR_CCA_ED_LEVELS); NL802154_CAP_ATTR_CCA_ED_LEVELS);
if (!nl_ed_lvls) if (!nl_ed_lvls)
return -ENOBUFS; return -ENOBUFS;
@ -396,7 +396,8 @@ nl802154_put_capabilities(struct sk_buff *msg,
if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER) { if (rdev->wpan_phy.flags & WPAN_PHY_FLAG_TXPOWER) {
struct nlattr *nl_tx_pwrs; struct nlattr *nl_tx_pwrs;
nl_tx_pwrs = nla_nest_start(msg, NL802154_CAP_ATTR_TX_POWERS); nl_tx_pwrs = nla_nest_start_noflag(msg,
NL802154_CAP_ATTR_TX_POWERS);
if (!nl_tx_pwrs) if (!nl_tx_pwrs)
return -ENOBUFS; return -ENOBUFS;
@ -504,7 +505,7 @@ static int nl802154_send_wpan_phy(struct cfg802154_registered_device *rdev,
if (nl802154_put_capabilities(msg, rdev)) if (nl802154_put_capabilities(msg, rdev))
goto nla_put_failure; goto nla_put_failure;
nl_cmds = nla_nest_start(msg, NL802154_ATTR_SUPPORTED_COMMANDS); nl_cmds = nla_nest_start_noflag(msg, NL802154_ATTR_SUPPORTED_COMMANDS);
if (!nl_cmds) if (!nl_cmds)
goto nla_put_failure; goto nla_put_failure;
@ -693,7 +694,8 @@ ieee802154_llsec_send_key_id(struct sk_buff *msg,
switch (desc->mode) { switch (desc->mode) {
case NL802154_KEY_ID_MODE_IMPLICIT: case NL802154_KEY_ID_MODE_IMPLICIT:
nl_dev_addr = nla_nest_start(msg, NL802154_KEY_ID_ATTR_IMPLICIT); nl_dev_addr = nla_nest_start_noflag(msg,
NL802154_KEY_ID_ATTR_IMPLICIT);
if (!nl_dev_addr) if (!nl_dev_addr)
return -ENOBUFS; return -ENOBUFS;
@ -768,7 +770,7 @@ static int nl802154_get_llsec_params(struct sk_buff *msg,
params.frame_counter)) params.frame_counter))
return -ENOBUFS; return -ENOBUFS;
nl_key_id = nla_nest_start(msg, NL802154_ATTR_SEC_OUT_KEY_ID); nl_key_id = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_OUT_KEY_ID);
if (!nl_key_id) if (!nl_key_id)
return -ENOBUFS; return -ENOBUFS;
@ -1455,11 +1457,11 @@ static int nl802154_send_key(struct sk_buff *msg, u32 cmd, u32 portid,
if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex))
goto nla_put_failure; goto nla_put_failure;
nl_key = nla_nest_start(msg, NL802154_ATTR_SEC_KEY); nl_key = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_KEY);
if (!nl_key) if (!nl_key)
goto nla_put_failure; goto nla_put_failure;
nl_key_id = nla_nest_start(msg, NL802154_KEY_ATTR_ID); nl_key_id = nla_nest_start_noflag(msg, NL802154_KEY_ATTR_ID);
if (!nl_key_id) if (!nl_key_id)
goto nla_put_failure; goto nla_put_failure;
@ -1639,7 +1641,7 @@ static int nl802154_send_device(struct sk_buff *msg, u32 cmd, u32 portid,
if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex))
goto nla_put_failure; goto nla_put_failure;
nl_device = nla_nest_start(msg, NL802154_ATTR_SEC_DEVICE); nl_device = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_DEVICE);
if (!nl_device) if (!nl_device)
goto nla_put_failure; goto nla_put_failure;
@ -1808,7 +1810,7 @@ static int nl802154_send_devkey(struct sk_buff *msg, u32 cmd, u32 portid,
if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex))
goto nla_put_failure; goto nla_put_failure;
nl_devkey = nla_nest_start(msg, NL802154_ATTR_SEC_DEVKEY); nl_devkey = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_DEVKEY);
if (!nl_devkey) if (!nl_devkey)
goto nla_put_failure; goto nla_put_failure;
@ -1818,7 +1820,7 @@ static int nl802154_send_devkey(struct sk_buff *msg, u32 cmd, u32 portid,
devkey->frame_counter)) devkey->frame_counter))
goto nla_put_failure; goto nla_put_failure;
nl_key_id = nla_nest_start(msg, NL802154_DEVKEY_ATTR_ID); nl_key_id = nla_nest_start_noflag(msg, NL802154_DEVKEY_ATTR_ID);
if (!nl_key_id) if (!nl_key_id)
goto nla_put_failure; goto nla_put_failure;
@ -1976,7 +1978,7 @@ static int nl802154_send_seclevel(struct sk_buff *msg, u32 cmd, u32 portid,
if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex)) if (nla_put_u32(msg, NL802154_ATTR_IFINDEX, dev->ifindex))
goto nla_put_failure; goto nla_put_failure;
nl_seclevel = nla_nest_start(msg, NL802154_ATTR_SEC_LEVEL); nl_seclevel = nla_nest_start_noflag(msg, NL802154_ATTR_SEC_LEVEL);
if (!nl_seclevel) if (!nl_seclevel)
goto nla_put_failure; goto nla_put_failure;

View File

@ -1550,7 +1550,7 @@ static int fib_add_multipath(struct sk_buff *skb, struct fib_info *fi)
{ {
struct nlattr *mp; struct nlattr *mp;
mp = nla_nest_start(skb, RTA_MULTIPATH); mp = nla_nest_start_noflag(skb, RTA_MULTIPATH);
if (!mp) if (!mp)
goto nla_put_failure; goto nla_put_failure;

View File

@ -2783,7 +2783,7 @@ static bool ipmr_fill_vif(struct mr_table *mrt, u32 vifid, struct sk_buff *skb)
return true; return true;
vif = &mrt->vif_table[vifid]; vif = &mrt->vif_table[vifid];
vif_nest = nla_nest_start(skb, IPMRA_VIF); vif_nest = nla_nest_start_noflag(skb, IPMRA_VIF);
if (!vif_nest) if (!vif_nest)
return false; return false;
if (nla_put_u32(skb, IPMRA_VIFA_IFINDEX, vif->dev->ifindex) || if (nla_put_u32(skb, IPMRA_VIFA_IFINDEX, vif->dev->ifindex) ||
@ -2867,7 +2867,7 @@ static int ipmr_rtm_dumplink(struct sk_buff *skb, struct netlink_callback *cb)
memset(hdr, 0, sizeof(*hdr)); memset(hdr, 0, sizeof(*hdr));
hdr->ifi_family = RTNL_FAMILY_IPMR; hdr->ifi_family = RTNL_FAMILY_IPMR;
af = nla_nest_start(skb, IFLA_AF_SPEC); af = nla_nest_start_noflag(skb, IFLA_AF_SPEC);
if (!af) { if (!af) {
nlmsg_cancel(skb, nlh); nlmsg_cancel(skb, nlh);
goto out; goto out;
@ -2878,7 +2878,7 @@ static int ipmr_rtm_dumplink(struct sk_buff *skb, struct netlink_callback *cb)
goto out; goto out;
} }
vifs = nla_nest_start(skb, IPMRA_TABLE_VIFS); vifs = nla_nest_start_noflag(skb, IPMRA_TABLE_VIFS);
if (!vifs) { if (!vifs) {
nla_nest_end(skb, af); nla_nest_end(skb, af);
nlmsg_end(skb, nlh); nlmsg_end(skb, nlh);

View File

@ -228,7 +228,7 @@ int mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb,
if (c->mfc_flags & MFC_OFFLOAD) if (c->mfc_flags & MFC_OFFLOAD)
rtm->rtm_flags |= RTNH_F_OFFLOAD; rtm->rtm_flags |= RTNH_F_OFFLOAD;
mp_attr = nla_nest_start(skb, RTA_MULTIPATH); mp_attr = nla_nest_start_noflag(skb, RTA_MULTIPATH);
if (!mp_attr) if (!mp_attr)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -658,7 +658,7 @@ static int tcp_metrics_fill_info(struct sk_buff *msg,
{ {
int n = 0; int n = 0;
nest = nla_nest_start(msg, TCP_METRICS_ATTR_VALS); nest = nla_nest_start_noflag(msg, TCP_METRICS_ATTR_VALS);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
for (i = 0; i < TCP_METRIC_MAX_KERNEL + 1; i++) { for (i = 0; i < TCP_METRIC_MAX_KERNEL + 1; i++) {

View File

@ -5752,7 +5752,7 @@ static int inet6_fill_ifinfo(struct sk_buff *skb, struct inet6_dev *idev,
nla_put_u8(skb, IFLA_OPERSTATE, nla_put_u8(skb, IFLA_OPERSTATE,
netif_running(dev) ? dev->operstate : IF_OPER_DOWN)) netif_running(dev) ? dev->operstate : IF_OPER_DOWN))
goto nla_put_failure; goto nla_put_failure;
protoinfo = nla_nest_start(skb, IFLA_PROTINFO); protoinfo = nla_nest_start_noflag(skb, IFLA_PROTINFO);
if (!protoinfo) if (!protoinfo)
goto nla_put_failure; goto nla_put_failure;

View File

@ -4777,7 +4777,7 @@ static int rt6_fill_node(struct net *net, struct sk_buff *skb,
struct fib6_info *sibling, *next_sibling; struct fib6_info *sibling, *next_sibling;
struct nlattr *mp; struct nlattr *mp;
mp = nla_nest_start(skb, RTA_MULTIPATH); mp = nla_nest_start_noflag(skb, RTA_MULTIPATH);
if (!mp) if (!mp)
goto nla_put_failure; goto nla_put_failure;

View File

@ -853,7 +853,7 @@ static int put_nla_bpf(struct sk_buff *skb, struct seg6_local_lwt *slwt)
if (!slwt->bpf.prog) if (!slwt->bpf.prog)
return 0; return 0;
nest = nla_nest_start(skb, SEG6_LOCAL_BPF); nest = nla_nest_start_noflag(skb, SEG6_LOCAL_BPF);
if (!nest) if (!nest)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -345,7 +345,7 @@ static int l2tp_nl_tunnel_send(struct sk_buff *skb, u32 portid, u32 seq, int fla
nla_put_u16(skb, L2TP_ATTR_ENCAP_TYPE, tunnel->encap)) nla_put_u16(skb, L2TP_ATTR_ENCAP_TYPE, tunnel->encap))
goto nla_put_failure; goto nla_put_failure;
nest = nla_nest_start(skb, L2TP_ATTR_STATS); nest = nla_nest_start_noflag(skb, L2TP_ATTR_STATS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -742,7 +742,7 @@ static int l2tp_nl_session_send(struct sk_buff *skb, u32 portid, u32 seq, int fl
session->reorder_timeout, L2TP_ATTR_PAD))) session->reorder_timeout, L2TP_ATTR_PAD)))
goto nla_put_failure; goto nla_put_failure;
nest = nla_nest_start(skb, L2TP_ATTR_STATS); nest = nla_nest_start_noflag(skb, L2TP_ATTR_STATS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -2017,7 +2017,7 @@ static int mpls_dump_route(struct sk_buff *skb, u32 portid, u32 seq, int event,
u8 linkdown = 0; u8 linkdown = 0;
u8 dead = 0; u8 dead = 0;
mp = nla_nest_start(skb, RTA_MULTIPATH); mp = nla_nest_start_noflag(skb, RTA_MULTIPATH);
if (!mp) if (!mp)
goto nla_put_failure; goto nla_put_failure;

View File

@ -79,7 +79,7 @@ static int ncsi_write_channel_info(struct sk_buff *skb,
nla_put_u32(skb, NCSI_CHANNEL_ATTR_VERSION_MINOR, nc->version.alpha2); nla_put_u32(skb, NCSI_CHANNEL_ATTR_VERSION_MINOR, nc->version.alpha2);
nla_put_string(skb, NCSI_CHANNEL_ATTR_VERSION_STR, nc->version.fw_name); nla_put_string(skb, NCSI_CHANNEL_ATTR_VERSION_STR, nc->version.fw_name);
vid_nest = nla_nest_start(skb, NCSI_CHANNEL_ATTR_VLAN_LIST); vid_nest = nla_nest_start_noflag(skb, NCSI_CHANNEL_ATTR_VLAN_LIST);
if (!vid_nest) if (!vid_nest)
return -ENOMEM; return -ENOMEM;
ncf = &nc->vlan_filter; ncf = &nc->vlan_filter;
@ -113,19 +113,19 @@ static int ncsi_write_package_info(struct sk_buff *skb,
NCSI_FOR_EACH_PACKAGE(ndp, np) { NCSI_FOR_EACH_PACKAGE(ndp, np) {
if (np->id != id) if (np->id != id)
continue; continue;
pnest = nla_nest_start(skb, NCSI_PKG_ATTR); pnest = nla_nest_start_noflag(skb, NCSI_PKG_ATTR);
if (!pnest) if (!pnest)
return -ENOMEM; return -ENOMEM;
nla_put_u32(skb, NCSI_PKG_ATTR_ID, np->id); nla_put_u32(skb, NCSI_PKG_ATTR_ID, np->id);
if ((0x1 << np->id) == ndp->package_whitelist) if ((0x1 << np->id) == ndp->package_whitelist)
nla_put_flag(skb, NCSI_PKG_ATTR_FORCED); nla_put_flag(skb, NCSI_PKG_ATTR_FORCED);
cnest = nla_nest_start(skb, NCSI_PKG_ATTR_CHANNEL_LIST); cnest = nla_nest_start_noflag(skb, NCSI_PKG_ATTR_CHANNEL_LIST);
if (!cnest) { if (!cnest) {
nla_nest_cancel(skb, pnest); nla_nest_cancel(skb, pnest);
return -ENOMEM; return -ENOMEM;
} }
NCSI_FOR_EACH_CHANNEL(np, nc) { NCSI_FOR_EACH_CHANNEL(np, nc) {
nest = nla_nest_start(skb, NCSI_CHANNEL_ATTR); nest = nla_nest_start_noflag(skb, NCSI_CHANNEL_ATTR);
if (!nest) { if (!nest) {
nla_nest_cancel(skb, cnest); nla_nest_cancel(skb, cnest);
nla_nest_cancel(skb, pnest); nla_nest_cancel(skb, pnest);
@ -187,7 +187,7 @@ static int ncsi_pkg_info_nl(struct sk_buff *msg, struct genl_info *info)
package_id = nla_get_u32(info->attrs[NCSI_ATTR_PACKAGE_ID]); package_id = nla_get_u32(info->attrs[NCSI_ATTR_PACKAGE_ID]);
attr = nla_nest_start(skb, NCSI_ATTR_PACKAGE_LIST); attr = nla_nest_start_noflag(skb, NCSI_ATTR_PACKAGE_LIST);
if (!attr) { if (!attr) {
kfree_skb(skb); kfree_skb(skb);
return -EMSGSIZE; return -EMSGSIZE;
@ -250,7 +250,7 @@ static int ncsi_pkg_info_all_nl(struct sk_buff *skb,
goto err; goto err;
} }
attr = nla_nest_start(skb, NCSI_ATTR_PACKAGE_LIST); attr = nla_nest_start_noflag(skb, NCSI_ATTR_PACKAGE_LIST);
if (!attr) { if (!attr) {
rc = -EMSGSIZE; rc = -EMSGSIZE;
goto err; goto err;

View File

@ -2916,7 +2916,7 @@ static const struct nla_policy ip_vs_dest_policy[IPVS_DEST_ATTR_MAX + 1] = {
static int ip_vs_genl_fill_stats(struct sk_buff *skb, int container_type, static int ip_vs_genl_fill_stats(struct sk_buff *skb, int container_type,
struct ip_vs_kstats *kstats) struct ip_vs_kstats *kstats)
{ {
struct nlattr *nl_stats = nla_nest_start(skb, container_type); struct nlattr *nl_stats = nla_nest_start_noflag(skb, container_type);
if (!nl_stats) if (!nl_stats)
return -EMSGSIZE; return -EMSGSIZE;
@ -2946,7 +2946,7 @@ nla_put_failure:
static int ip_vs_genl_fill_stats64(struct sk_buff *skb, int container_type, static int ip_vs_genl_fill_stats64(struct sk_buff *skb, int container_type,
struct ip_vs_kstats *kstats) struct ip_vs_kstats *kstats)
{ {
struct nlattr *nl_stats = nla_nest_start(skb, container_type); struct nlattr *nl_stats = nla_nest_start_noflag(skb, container_type);
if (!nl_stats) if (!nl_stats)
return -EMSGSIZE; return -EMSGSIZE;
@ -2992,7 +2992,7 @@ static int ip_vs_genl_fill_service(struct sk_buff *skb,
struct ip_vs_kstats kstats; struct ip_vs_kstats kstats;
char *sched_name; char *sched_name;
nl_service = nla_nest_start(skb, IPVS_CMD_ATTR_SERVICE); nl_service = nla_nest_start_noflag(skb, IPVS_CMD_ATTR_SERVICE);
if (!nl_service) if (!nl_service)
return -EMSGSIZE; return -EMSGSIZE;
@ -3203,7 +3203,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest)
struct nlattr *nl_dest; struct nlattr *nl_dest;
struct ip_vs_kstats kstats; struct ip_vs_kstats kstats;
nl_dest = nla_nest_start(skb, IPVS_CMD_ATTR_DEST); nl_dest = nla_nest_start_noflag(skb, IPVS_CMD_ATTR_DEST);
if (!nl_dest) if (!nl_dest)
return -EMSGSIZE; return -EMSGSIZE;
@ -3373,7 +3373,7 @@ static int ip_vs_genl_fill_daemon(struct sk_buff *skb, __u32 state,
{ {
struct nlattr *nl_daemon; struct nlattr *nl_daemon;
nl_daemon = nla_nest_start(skb, IPVS_CMD_ATTR_DAEMON); nl_daemon = nla_nest_start_noflag(skb, IPVS_CMD_ATTR_DAEMON);
if (!nl_daemon) if (!nl_daemon)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -63,7 +63,7 @@ static int ctnetlink_dump_tuples_proto(struct sk_buff *skb,
int ret = 0; int ret = 0;
struct nlattr *nest_parms; struct nlattr *nest_parms;
nest_parms = nla_nest_start(skb, CTA_TUPLE_PROTO | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_PROTO);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u8(skb, CTA_PROTO_NUM, tuple->dst.protonum)) if (nla_put_u8(skb, CTA_PROTO_NUM, tuple->dst.protonum))
@ -104,7 +104,7 @@ static int ctnetlink_dump_tuples_ip(struct sk_buff *skb,
int ret = 0; int ret = 0;
struct nlattr *nest_parms; struct nlattr *nest_parms;
nest_parms = nla_nest_start(skb, CTA_TUPLE_IP | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_IP);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
@ -187,7 +187,7 @@ static int ctnetlink_dump_protoinfo(struct sk_buff *skb, struct nf_conn *ct)
if (!l4proto->to_nlattr) if (!l4proto->to_nlattr)
return 0; return 0;
nest_proto = nla_nest_start(skb, CTA_PROTOINFO | NLA_F_NESTED); nest_proto = nla_nest_start(skb, CTA_PROTOINFO);
if (!nest_proto) if (!nest_proto)
goto nla_put_failure; goto nla_put_failure;
@ -215,7 +215,7 @@ static int ctnetlink_dump_helpinfo(struct sk_buff *skb,
if (!helper) if (!helper)
goto out; goto out;
nest_helper = nla_nest_start(skb, CTA_HELP | NLA_F_NESTED); nest_helper = nla_nest_start(skb, CTA_HELP);
if (!nest_helper) if (!nest_helper)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_string(skb, CTA_HELP_NAME, helper->name)) if (nla_put_string(skb, CTA_HELP_NAME, helper->name))
@ -249,7 +249,7 @@ dump_counters(struct sk_buff *skb, struct nf_conn_acct *acct,
bytes = atomic64_read(&counter[dir].bytes); bytes = atomic64_read(&counter[dir].bytes);
} }
nest_count = nla_nest_start(skb, attr | NLA_F_NESTED); nest_count = nla_nest_start(skb, attr);
if (!nest_count) if (!nest_count)
goto nla_put_failure; goto nla_put_failure;
@ -293,7 +293,7 @@ ctnetlink_dump_timestamp(struct sk_buff *skb, const struct nf_conn *ct)
if (!tstamp) if (!tstamp)
return 0; return 0;
nest_count = nla_nest_start(skb, CTA_TIMESTAMP | NLA_F_NESTED); nest_count = nla_nest_start(skb, CTA_TIMESTAMP);
if (!nest_count) if (!nest_count)
goto nla_put_failure; goto nla_put_failure;
@ -337,7 +337,7 @@ static int ctnetlink_dump_secctx(struct sk_buff *skb, const struct nf_conn *ct)
return 0; return 0;
ret = -1; ret = -1;
nest_secctx = nla_nest_start(skb, CTA_SECCTX | NLA_F_NESTED); nest_secctx = nla_nest_start(skb, CTA_SECCTX);
if (!nest_secctx) if (!nest_secctx)
goto nla_put_failure; goto nla_put_failure;
@ -397,7 +397,7 @@ static int ctnetlink_dump_master(struct sk_buff *skb, const struct nf_conn *ct)
if (!(ct->status & IPS_EXPECTED)) if (!(ct->status & IPS_EXPECTED))
return 0; return 0;
nest_parms = nla_nest_start(skb, CTA_TUPLE_MASTER | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_MASTER);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, master_tuple(ct)) < 0) if (ctnetlink_dump_tuples(skb, master_tuple(ct)) < 0)
@ -415,7 +415,7 @@ dump_ct_seq_adj(struct sk_buff *skb, const struct nf_ct_seqadj *seq, int type)
{ {
struct nlattr *nest_parms; struct nlattr *nest_parms;
nest_parms = nla_nest_start(skb, type | NLA_F_NESTED); nest_parms = nla_nest_start(skb, type);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
@ -467,7 +467,7 @@ static int ctnetlink_dump_ct_synproxy(struct sk_buff *skb, struct nf_conn *ct)
if (!synproxy) if (!synproxy)
return 0; return 0;
nest_parms = nla_nest_start(skb, CTA_SYNPROXY | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_SYNPROXY);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
@ -528,7 +528,7 @@ ctnetlink_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type,
zone = nf_ct_zone(ct); zone = nf_ct_zone(ct);
nest_parms = nla_nest_start(skb, CTA_TUPLE_ORIG | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_ORIG);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0) if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0)
@ -538,7 +538,7 @@ ctnetlink_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type,
goto nla_put_failure; goto nla_put_failure;
nla_nest_end(skb, nest_parms); nla_nest_end(skb, nest_parms);
nest_parms = nla_nest_start(skb, CTA_TUPLE_REPLY | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_REPLY);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_REPLY)) < 0) if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_REPLY)) < 0)
@ -720,7 +720,7 @@ ctnetlink_conntrack_event(unsigned int events, struct nf_ct_event *item)
zone = nf_ct_zone(ct); zone = nf_ct_zone(ct);
nest_parms = nla_nest_start(skb, CTA_TUPLE_ORIG | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_ORIG);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0) if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0)
@ -730,7 +730,7 @@ ctnetlink_conntrack_event(unsigned int events, struct nf_ct_event *item)
goto nla_put_failure; goto nla_put_failure;
nla_nest_end(skb, nest_parms); nla_nest_end(skb, nest_parms);
nest_parms = nla_nest_start(skb, CTA_TUPLE_REPLY | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_REPLY);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_REPLY)) < 0) if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_REPLY)) < 0)
@ -2400,7 +2400,7 @@ static int __ctnetlink_glue_build(struct sk_buff *skb, struct nf_conn *ct)
zone = nf_ct_zone(ct); zone = nf_ct_zone(ct);
nest_parms = nla_nest_start(skb, CTA_TUPLE_ORIG | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_ORIG);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0) if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0)
@ -2410,7 +2410,7 @@ static int __ctnetlink_glue_build(struct sk_buff *skb, struct nf_conn *ct)
goto nla_put_failure; goto nla_put_failure;
nla_nest_end(skb, nest_parms); nla_nest_end(skb, nest_parms);
nest_parms = nla_nest_start(skb, CTA_TUPLE_REPLY | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TUPLE_REPLY);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_REPLY)) < 0) if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_REPLY)) < 0)
@ -2472,7 +2472,7 @@ ctnetlink_glue_build(struct sk_buff *skb, struct nf_conn *ct,
{ {
struct nlattr *nest_parms; struct nlattr *nest_parms;
nest_parms = nla_nest_start(skb, ct_attr | NLA_F_NESTED); nest_parms = nla_nest_start(skb, ct_attr);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
@ -2644,7 +2644,7 @@ static int ctnetlink_exp_dump_tuple(struct sk_buff *skb,
{ {
struct nlattr *nest_parms; struct nlattr *nest_parms;
nest_parms = nla_nest_start(skb, type | NLA_F_NESTED); nest_parms = nla_nest_start(skb, type);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (ctnetlink_dump_tuples(skb, tuple) < 0) if (ctnetlink_dump_tuples(skb, tuple) < 0)
@ -2671,7 +2671,7 @@ static int ctnetlink_exp_dump_mask(struct sk_buff *skb,
m.src.u.all = mask->src.u.all; m.src.u.all = mask->src.u.all;
m.dst.protonum = tuple->dst.protonum; m.dst.protonum = tuple->dst.protonum;
nest_parms = nla_nest_start(skb, CTA_EXPECT_MASK | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_EXPECT_MASK);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
@ -2743,7 +2743,7 @@ ctnetlink_exp_dump_expect(struct sk_buff *skb,
#if IS_ENABLED(CONFIG_NF_NAT) #if IS_ENABLED(CONFIG_NF_NAT)
if (!nf_inet_addr_cmp(&exp->saved_addr, &any_addr) || if (!nf_inet_addr_cmp(&exp->saved_addr, &any_addr) ||
exp->saved_proto.all) { exp->saved_proto.all) {
nest_parms = nla_nest_start(skb, CTA_EXPECT_NAT | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_EXPECT_NAT);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;

View File

@ -598,7 +598,7 @@ static int dccp_to_nlattr(struct sk_buff *skb, struct nlattr *nla,
struct nlattr *nest_parms; struct nlattr *nest_parms;
spin_lock_bh(&ct->lock); spin_lock_bh(&ct->lock);
nest_parms = nla_nest_start(skb, CTA_PROTOINFO_DCCP | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_PROTOINFO_DCCP);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u8(skb, CTA_PROTOINFO_DCCP_STATE, ct->proto.dccp.state) || if (nla_put_u8(skb, CTA_PROTOINFO_DCCP_STATE, ct->proto.dccp.state) ||

View File

@ -520,7 +520,7 @@ static int sctp_to_nlattr(struct sk_buff *skb, struct nlattr *nla,
struct nlattr *nest_parms; struct nlattr *nest_parms;
spin_lock_bh(&ct->lock); spin_lock_bh(&ct->lock);
nest_parms = nla_nest_start(skb, CTA_PROTOINFO_SCTP | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_PROTOINFO_SCTP);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;

View File

@ -1192,7 +1192,7 @@ static int tcp_to_nlattr(struct sk_buff *skb, struct nlattr *nla,
struct nf_ct_tcp_flags tmp = {}; struct nf_ct_tcp_flags tmp = {};
spin_lock_bh(&ct->lock); spin_lock_bh(&ct->lock);
nest_parms = nla_nest_start(skb, CTA_PROTOINFO_TCP | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_PROTOINFO_TCP);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;

View File

@ -1200,7 +1200,7 @@ static int nft_dump_stats(struct sk_buff *skb, struct nft_stats __percpu *stats)
total.pkts += pkts; total.pkts += pkts;
total.bytes += bytes; total.bytes += bytes;
} }
nest = nla_nest_start(skb, NFTA_CHAIN_COUNTERS); nest = nla_nest_start_noflag(skb, NFTA_CHAIN_COUNTERS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -1248,7 +1248,7 @@ static int nf_tables_fill_chain_info(struct sk_buff *skb, struct net *net,
const struct nf_hook_ops *ops = &basechain->ops; const struct nf_hook_ops *ops = &basechain->ops;
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, NFTA_CHAIN_HOOK); nest = nla_nest_start_noflag(skb, NFTA_CHAIN_HOOK);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_be32(skb, NFTA_HOOK_HOOKNUM, htonl(ops->hooknum))) if (nla_put_be32(skb, NFTA_HOOK_HOOKNUM, htonl(ops->hooknum)))
@ -2059,7 +2059,8 @@ static int nf_tables_fill_expr_info(struct sk_buff *skb,
goto nla_put_failure; goto nla_put_failure;
if (expr->ops->dump) { if (expr->ops->dump) {
struct nlattr *data = nla_nest_start(skb, NFTA_EXPR_DATA); struct nlattr *data = nla_nest_start_noflag(skb,
NFTA_EXPR_DATA);
if (data == NULL) if (data == NULL)
goto nla_put_failure; goto nla_put_failure;
if (expr->ops->dump(skb, expr) < 0) if (expr->ops->dump(skb, expr) < 0)
@ -2078,7 +2079,7 @@ int nft_expr_dump(struct sk_buff *skb, unsigned int attr,
{ {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, attr); nest = nla_nest_start_noflag(skb, attr);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
if (nf_tables_fill_expr_info(skb, expr) < 0) if (nf_tables_fill_expr_info(skb, expr) < 0)
@ -2289,7 +2290,7 @@ static int nf_tables_fill_rule_info(struct sk_buff *skb, struct net *net,
goto nla_put_failure; goto nla_put_failure;
} }
list = nla_nest_start(skb, NFTA_RULE_EXPRESSIONS); list = nla_nest_start_noflag(skb, NFTA_RULE_EXPRESSIONS);
if (list == NULL) if (list == NULL)
goto nla_put_failure; goto nla_put_failure;
nft_rule_for_each_expr(expr, next, rule) { nft_rule_for_each_expr(expr, next, rule) {
@ -3258,7 +3259,7 @@ static int nf_tables_fill_set(struct sk_buff *skb, const struct nft_ctx *ctx,
if (nla_put(skb, NFTA_SET_USERDATA, set->udlen, set->udata)) if (nla_put(skb, NFTA_SET_USERDATA, set->udlen, set->udata))
goto nla_put_failure; goto nla_put_failure;
desc = nla_nest_start(skb, NFTA_SET_DESC); desc = nla_nest_start_noflag(skb, NFTA_SET_DESC);
if (desc == NULL) if (desc == NULL)
goto nla_put_failure; goto nla_put_failure;
if (set->size && if (set->size &&
@ -3908,7 +3909,7 @@ static int nf_tables_fill_setelem(struct sk_buff *skb,
unsigned char *b = skb_tail_pointer(skb); unsigned char *b = skb_tail_pointer(skb);
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, NFTA_LIST_ELEM); nest = nla_nest_start_noflag(skb, NFTA_LIST_ELEM);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -4052,7 +4053,7 @@ static int nf_tables_dump_set(struct sk_buff *skb, struct netlink_callback *cb)
if (nla_put_string(skb, NFTA_SET_ELEM_LIST_SET, set->name)) if (nla_put_string(skb, NFTA_SET_ELEM_LIST_SET, set->name))
goto nla_put_failure; goto nla_put_failure;
nest = nla_nest_start(skb, NFTA_SET_ELEM_LIST_ELEMENTS); nest = nla_nest_start_noflag(skb, NFTA_SET_ELEM_LIST_ELEMENTS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -4124,7 +4125,7 @@ static int nf_tables_fill_setelem_info(struct sk_buff *skb,
if (nla_put_string(skb, NFTA_SET_NAME, set->name)) if (nla_put_string(skb, NFTA_SET_NAME, set->name))
goto nla_put_failure; goto nla_put_failure;
nest = nla_nest_start(skb, NFTA_SET_ELEM_LIST_ELEMENTS); nest = nla_nest_start_noflag(skb, NFTA_SET_ELEM_LIST_ELEMENTS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -5014,7 +5015,7 @@ static int nft_object_dump(struct sk_buff *skb, unsigned int attr,
{ {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, attr); nest = nla_nest_start_noflag(skb, attr);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
if (obj->ops->dump(skb, obj, reset) < 0) if (obj->ops->dump(skb, obj, reset) < 0)
@ -5831,14 +5832,14 @@ static int nf_tables_fill_flowtable_info(struct sk_buff *skb, struct net *net,
NFTA_FLOWTABLE_PAD)) NFTA_FLOWTABLE_PAD))
goto nla_put_failure; goto nla_put_failure;
nest = nla_nest_start(skb, NFTA_FLOWTABLE_HOOK); nest = nla_nest_start_noflag(skb, NFTA_FLOWTABLE_HOOK);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_be32(skb, NFTA_FLOWTABLE_HOOK_NUM, htonl(flowtable->hooknum)) || if (nla_put_be32(skb, NFTA_FLOWTABLE_HOOK_NUM, htonl(flowtable->hooknum)) ||
nla_put_be32(skb, NFTA_FLOWTABLE_HOOK_PRIORITY, htonl(flowtable->priority))) nla_put_be32(skb, NFTA_FLOWTABLE_HOOK_PRIORITY, htonl(flowtable->priority)))
goto nla_put_failure; goto nla_put_failure;
nest_devs = nla_nest_start(skb, NFTA_FLOWTABLE_HOOK_DEVS); nest_devs = nla_nest_start_noflag(skb, NFTA_FLOWTABLE_HOOK_DEVS);
if (!nest_devs) if (!nest_devs)
goto nla_put_failure; goto nla_put_failure;
@ -7264,7 +7265,7 @@ int nft_verdict_dump(struct sk_buff *skb, int type, const struct nft_verdict *v)
{ {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, type); nest = nla_nest_start_noflag(skb, type);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
@ -7377,7 +7378,7 @@ int nft_data_dump(struct sk_buff *skb, int attr, const struct nft_data *data,
struct nlattr *nest; struct nlattr *nest;
int err; int err;
nest = nla_nest_start(skb, attr); nest = nla_nest_start_noflag(skb, attr);
if (nest == NULL) if (nest == NULL)
return -1; return -1;

View File

@ -462,7 +462,7 @@ nfnl_cthelper_dump_tuple(struct sk_buff *skb,
{ {
struct nlattr *nest_parms; struct nlattr *nest_parms;
nest_parms = nla_nest_start(skb, NFCTH_TUPLE | NLA_F_NESTED); nest_parms = nla_nest_start(skb, NFCTH_TUPLE);
if (nest_parms == NULL) if (nest_parms == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -487,7 +487,7 @@ nfnl_cthelper_dump_policy(struct sk_buff *skb,
int i; int i;
struct nlattr *nest_parms1, *nest_parms2; struct nlattr *nest_parms1, *nest_parms2;
nest_parms1 = nla_nest_start(skb, NFCTH_POLICY | NLA_F_NESTED); nest_parms1 = nla_nest_start(skb, NFCTH_POLICY);
if (nest_parms1 == NULL) if (nest_parms1 == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -496,8 +496,7 @@ nfnl_cthelper_dump_policy(struct sk_buff *skb,
goto nla_put_failure; goto nla_put_failure;
for (i = 0; i < helper->expect_class_max + 1; i++) { for (i = 0; i < helper->expect_class_max + 1; i++) {
nest_parms2 = nla_nest_start(skb, nest_parms2 = nla_nest_start(skb, (NFCTH_POLICY_SET + i));
(NFCTH_POLICY_SET+i) | NLA_F_NESTED);
if (nest_parms2 == NULL) if (nest_parms2 == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -184,7 +184,7 @@ ctnl_timeout_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type,
htonl(refcount_read(&timeout->refcnt)))) htonl(refcount_read(&timeout->refcnt))))
goto nla_put_failure; goto nla_put_failure;
nest_parms = nla_nest_start(skb, CTA_TIMEOUT_DATA | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TIMEOUT_DATA);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;
@ -401,7 +401,7 @@ cttimeout_default_fill_info(struct net *net, struct sk_buff *skb, u32 portid,
nla_put_u8(skb, CTA_TIMEOUT_L4PROTO, l4proto->l4proto)) nla_put_u8(skb, CTA_TIMEOUT_L4PROTO, l4proto->l4proto))
goto nla_put_failure; goto nla_put_failure;
nest_parms = nla_nest_start(skb, CTA_TIMEOUT_DATA | NLA_F_NESTED); nest_parms = nla_nest_start(skb, CTA_TIMEOUT_DATA);
if (!nest_parms) if (!nest_parms)
goto nla_put_failure; goto nla_put_failure;

View File

@ -351,7 +351,7 @@ static int nfqnl_put_bridge(struct nf_queue_entry *entry, struct sk_buff *skb)
if (skb_vlan_tag_present(entskb)) { if (skb_vlan_tag_present(entskb)) {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, NFQA_VLAN | NLA_F_NESTED); nest = nla_nest_start(skb, NFQA_VLAN);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;

View File

@ -928,7 +928,7 @@ static int nft_ct_timeout_obj_dump(struct sk_buff *skb,
nla_put_be16(skb, NFTA_CT_TIMEOUT_L3PROTO, htons(timeout->l3num))) nla_put_be16(skb, NFTA_CT_TIMEOUT_L3PROTO, htons(timeout->l3num)))
return -1; return -1;
nest_params = nla_nest_start(skb, NFTA_CT_TIMEOUT_DATA | NLA_F_NESTED); nest_params = nla_nest_start(skb, NFTA_CT_TIMEOUT_DATA);
if (!nest_params) if (!nest_params)
return -1; return -1;

View File

@ -437,7 +437,7 @@ static int nft_tunnel_ip_dump(struct sk_buff *skb, struct ip_tunnel_info *info)
struct nlattr *nest; struct nlattr *nest;
if (info->mode & IP_TUNNEL_INFO_IPV6) { if (info->mode & IP_TUNNEL_INFO_IPV6) {
nest = nla_nest_start(skb, NFTA_TUNNEL_KEY_IP6); nest = nla_nest_start_noflag(skb, NFTA_TUNNEL_KEY_IP6);
if (!nest) if (!nest)
return -1; return -1;
@ -448,7 +448,7 @@ static int nft_tunnel_ip_dump(struct sk_buff *skb, struct ip_tunnel_info *info)
nla_nest_end(skb, nest); nla_nest_end(skb, nest);
} else { } else {
nest = nla_nest_start(skb, NFTA_TUNNEL_KEY_IP); nest = nla_nest_start_noflag(skb, NFTA_TUNNEL_KEY_IP);
if (!nest) if (!nest)
return -1; return -1;
@ -468,7 +468,7 @@ static int nft_tunnel_opts_dump(struct sk_buff *skb,
struct nft_tunnel_opts *opts = &priv->opts; struct nft_tunnel_opts *opts = &priv->opts;
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, NFTA_TUNNEL_KEY_OPTS); nest = nla_nest_start_noflag(skb, NFTA_TUNNEL_KEY_OPTS);
if (!nest) if (!nest)
return -1; return -1;

View File

@ -498,7 +498,7 @@ list_start:
if (ret_val != 0) if (ret_val != 0)
goto list_failure_lock; goto list_failure_lock;
nla_a = nla_nest_start(ans_skb, NLBL_CIPSOV4_A_TAGLST); nla_a = nla_nest_start_noflag(ans_skb, NLBL_CIPSOV4_A_TAGLST);
if (nla_a == NULL) { if (nla_a == NULL) {
ret_val = -ENOMEM; ret_val = -ENOMEM;
goto list_failure_lock; goto list_failure_lock;
@ -517,7 +517,8 @@ list_start:
switch (doi_def->type) { switch (doi_def->type) {
case CIPSO_V4_MAP_TRANS: case CIPSO_V4_MAP_TRANS:
nla_a = nla_nest_start(ans_skb, NLBL_CIPSOV4_A_MLSLVLLST); nla_a = nla_nest_start_noflag(ans_skb,
NLBL_CIPSOV4_A_MLSLVLLST);
if (nla_a == NULL) { if (nla_a == NULL) {
ret_val = -ENOMEM; ret_val = -ENOMEM;
goto list_failure_lock; goto list_failure_lock;
@ -529,7 +530,8 @@ list_start:
CIPSO_V4_INV_LVL) CIPSO_V4_INV_LVL)
continue; continue;
nla_b = nla_nest_start(ans_skb, NLBL_CIPSOV4_A_MLSLVL); nla_b = nla_nest_start_noflag(ans_skb,
NLBL_CIPSOV4_A_MLSLVL);
if (nla_b == NULL) { if (nla_b == NULL) {
ret_val = -ENOMEM; ret_val = -ENOMEM;
goto list_retry; goto list_retry;
@ -548,7 +550,8 @@ list_start:
} }
nla_nest_end(ans_skb, nla_a); nla_nest_end(ans_skb, nla_a);
nla_a = nla_nest_start(ans_skb, NLBL_CIPSOV4_A_MLSCATLST); nla_a = nla_nest_start_noflag(ans_skb,
NLBL_CIPSOV4_A_MLSCATLST);
if (nla_a == NULL) { if (nla_a == NULL) {
ret_val = -ENOMEM; ret_val = -ENOMEM;
goto list_retry; goto list_retry;
@ -560,7 +563,8 @@ list_start:
CIPSO_V4_INV_CAT) CIPSO_V4_INV_CAT)
continue; continue;
nla_b = nla_nest_start(ans_skb, NLBL_CIPSOV4_A_MLSCAT); nla_b = nla_nest_start_noflag(ans_skb,
NLBL_CIPSOV4_A_MLSCAT);
if (nla_b == NULL) { if (nla_b == NULL) {
ret_val = -ENOMEM; ret_val = -ENOMEM;
goto list_retry; goto list_retry;

View File

@ -315,7 +315,7 @@ static int netlbl_mgmt_listentry(struct sk_buff *skb,
switch (entry->def.type) { switch (entry->def.type) {
case NETLBL_NLTYPE_ADDRSELECT: case NETLBL_NLTYPE_ADDRSELECT:
nla_a = nla_nest_start(skb, NLBL_MGMT_A_SELECTORLIST); nla_a = nla_nest_start_noflag(skb, NLBL_MGMT_A_SELECTORLIST);
if (nla_a == NULL) if (nla_a == NULL)
return -ENOMEM; return -ENOMEM;
@ -323,7 +323,8 @@ static int netlbl_mgmt_listentry(struct sk_buff *skb,
struct netlbl_domaddr4_map *map4; struct netlbl_domaddr4_map *map4;
struct in_addr addr_struct; struct in_addr addr_struct;
nla_b = nla_nest_start(skb, NLBL_MGMT_A_ADDRSELECTOR); nla_b = nla_nest_start_noflag(skb,
NLBL_MGMT_A_ADDRSELECTOR);
if (nla_b == NULL) if (nla_b == NULL)
return -ENOMEM; return -ENOMEM;
@ -357,7 +358,8 @@ static int netlbl_mgmt_listentry(struct sk_buff *skb,
netlbl_af6list_foreach_rcu(iter6, &entry->def.addrsel->list6) { netlbl_af6list_foreach_rcu(iter6, &entry->def.addrsel->list6) {
struct netlbl_domaddr6_map *map6; struct netlbl_domaddr6_map *map6;
nla_b = nla_nest_start(skb, NLBL_MGMT_A_ADDRSELECTOR); nla_b = nla_nest_start_noflag(skb,
NLBL_MGMT_A_ADDRSELECTOR);
if (nla_b == NULL) if (nla_b == NULL)
return -ENOMEM; return -ENOMEM;

View File

@ -665,7 +665,7 @@ static int ctrl_fill_info(const struct genl_family *family, u32 portid, u32 seq,
struct nlattr *nla_ops; struct nlattr *nla_ops;
int i; int i;
nla_ops = nla_nest_start(skb, CTRL_ATTR_OPS); nla_ops = nla_nest_start_noflag(skb, CTRL_ATTR_OPS);
if (nla_ops == NULL) if (nla_ops == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -681,7 +681,7 @@ static int ctrl_fill_info(const struct genl_family *family, u32 portid, u32 seq,
if (family->policy) if (family->policy)
op_flags |= GENL_CMD_CAP_HASPOL; op_flags |= GENL_CMD_CAP_HASPOL;
nest = nla_nest_start(skb, i + 1); nest = nla_nest_start_noflag(skb, i + 1);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -699,7 +699,7 @@ static int ctrl_fill_info(const struct genl_family *family, u32 portid, u32 seq,
struct nlattr *nla_grps; struct nlattr *nla_grps;
int i; int i;
nla_grps = nla_nest_start(skb, CTRL_ATTR_MCAST_GROUPS); nla_grps = nla_nest_start_noflag(skb, CTRL_ATTR_MCAST_GROUPS);
if (nla_grps == NULL) if (nla_grps == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -709,7 +709,7 @@ static int ctrl_fill_info(const struct genl_family *family, u32 portid, u32 seq,
grp = &family->mcgrps[i]; grp = &family->mcgrps[i];
nest = nla_nest_start(skb, i + 1); nest = nla_nest_start_noflag(skb, i + 1);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -749,11 +749,11 @@ static int ctrl_fill_mcgrp_info(const struct genl_family *family,
nla_put_u16(skb, CTRL_ATTR_FAMILY_ID, family->id)) nla_put_u16(skb, CTRL_ATTR_FAMILY_ID, family->id))
goto nla_put_failure; goto nla_put_failure;
nla_grps = nla_nest_start(skb, CTRL_ATTR_MCAST_GROUPS); nla_grps = nla_nest_start_noflag(skb, CTRL_ATTR_MCAST_GROUPS);
if (nla_grps == NULL) if (nla_grps == NULL)
goto nla_put_failure; goto nla_put_failure;
nest = nla_nest_start(skb, 1); nest = nla_nest_start_noflag(skb, 1);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -392,7 +392,7 @@ int nfc_genl_llc_send_sdres(struct nfc_dev *dev, struct hlist_head *sdres_list)
if (nla_put_u32(msg, NFC_ATTR_DEVICE_INDEX, dev->idx)) if (nla_put_u32(msg, NFC_ATTR_DEVICE_INDEX, dev->idx))
goto nla_put_failure; goto nla_put_failure;
sdp_attr = nla_nest_start(msg, NFC_ATTR_LLC_SDP); sdp_attr = nla_nest_start_noflag(msg, NFC_ATTR_LLC_SDP);
if (sdp_attr == NULL) { if (sdp_attr == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto nla_put_failure; goto nla_put_failure;
@ -402,7 +402,7 @@ int nfc_genl_llc_send_sdres(struct nfc_dev *dev, struct hlist_head *sdres_list)
hlist_for_each_entry_safe(sdres, n, sdres_list, node) { hlist_for_each_entry_safe(sdres, n, sdres_list, node) {
pr_debug("uri: %s, sap: %d\n", sdres->uri, sdres->sap); pr_debug("uri: %s, sap: %d\n", sdres->uri, sdres->sap);
uri_attr = nla_nest_start(msg, i++); uri_attr = nla_nest_start_noflag(msg, i++);
if (uri_attr == NULL) { if (uri_attr == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto nla_put_failure; goto nla_put_failure;

View File

@ -1683,7 +1683,7 @@ static bool ovs_ct_nat_to_attr(const struct ovs_conntrack_info *info,
{ {
struct nlattr *start; struct nlattr *start;
start = nla_nest_start(skb, OVS_CT_ATTR_NAT); start = nla_nest_start_noflag(skb, OVS_CT_ATTR_NAT);
if (!start) if (!start)
return false; return false;
@ -1750,7 +1750,7 @@ int ovs_ct_action_to_attr(const struct ovs_conntrack_info *ct_info,
{ {
struct nlattr *start; struct nlattr *start;
start = nla_nest_start(skb, OVS_ACTION_ATTR_CT); start = nla_nest_start_noflag(skb, OVS_ACTION_ATTR_CT);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;
@ -2160,7 +2160,7 @@ static int ovs_ct_limit_cmd_get(struct sk_buff *skb, struct genl_info *info)
if (IS_ERR(reply)) if (IS_ERR(reply))
return PTR_ERR(reply); return PTR_ERR(reply);
nla_reply = nla_nest_start(reply, OVS_CT_LIMIT_ATTR_ZONE_LIMIT); nla_reply = nla_nest_start_noflag(reply, OVS_CT_LIMIT_ATTR_ZONE_LIMIT);
if (a[OVS_CT_LIMIT_ATTR_ZONE_LIMIT]) { if (a[OVS_CT_LIMIT_ATTR_ZONE_LIMIT]) {
err = ovs_ct_limit_get_zone_limit( err = ovs_ct_limit_get_zone_limit(

View File

@ -463,7 +463,8 @@ static int queue_userspace_packet(struct datapath *dp, struct sk_buff *skb,
nla_data(upcall_info->userdata)); nla_data(upcall_info->userdata));
if (upcall_info->egress_tun_info) { if (upcall_info->egress_tun_info) {
nla = nla_nest_start(user_skb, OVS_PACKET_ATTR_EGRESS_TUN_KEY); nla = nla_nest_start_noflag(user_skb,
OVS_PACKET_ATTR_EGRESS_TUN_KEY);
if (!nla) { if (!nla) {
err = -EMSGSIZE; err = -EMSGSIZE;
goto out; goto out;
@ -475,7 +476,7 @@ static int queue_userspace_packet(struct datapath *dp, struct sk_buff *skb,
} }
if (upcall_info->actions_len) { if (upcall_info->actions_len) {
nla = nla_nest_start(user_skb, OVS_PACKET_ATTR_ACTIONS); nla = nla_nest_start_noflag(user_skb, OVS_PACKET_ATTR_ACTIONS);
if (!nla) { if (!nla) {
err = -EMSGSIZE; err = -EMSGSIZE;
goto out; goto out;
@ -776,7 +777,7 @@ static int ovs_flow_cmd_fill_actions(const struct sw_flow *flow,
* This can only fail for dump operations because the skb is always * This can only fail for dump operations because the skb is always
* properly sized for single flows. * properly sized for single flows.
*/ */
start = nla_nest_start(skb, OVS_FLOW_ATTR_ACTIONS); start = nla_nest_start_noflag(skb, OVS_FLOW_ATTR_ACTIONS);
if (start) { if (start) {
const struct sw_flow_actions *sf_acts; const struct sw_flow_actions *sf_acts;

View File

@ -856,7 +856,7 @@ static int vxlan_opt_to_nlattr(struct sk_buff *skb,
const struct vxlan_metadata *opts = tun_opts; const struct vxlan_metadata *opts = tun_opts;
struct nlattr *nla; struct nlattr *nla;
nla = nla_nest_start(skb, OVS_TUNNEL_KEY_ATTR_VXLAN_OPTS); nla = nla_nest_start_noflag(skb, OVS_TUNNEL_KEY_ATTR_VXLAN_OPTS);
if (!nla) if (!nla)
return -EMSGSIZE; return -EMSGSIZE;
@ -948,7 +948,7 @@ static int ip_tun_to_nlattr(struct sk_buff *skb,
struct nlattr *nla; struct nlattr *nla;
int err; int err;
nla = nla_nest_start(skb, OVS_KEY_ATTR_TUNNEL); nla = nla_nest_start_noflag(skb, OVS_KEY_ATTR_TUNNEL);
if (!nla) if (!nla)
return -EMSGSIZE; return -EMSGSIZE;
@ -1957,7 +1957,7 @@ static int nsh_key_to_nlattr(const struct ovs_key_nsh *nsh, bool is_mask,
{ {
struct nlattr *start; struct nlattr *start;
start = nla_nest_start(skb, OVS_KEY_ATTR_NSH); start = nla_nest_start_noflag(skb, OVS_KEY_ATTR_NSH);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;
@ -2040,14 +2040,15 @@ static int __ovs_nla_put_key(const struct sw_flow_key *swkey,
if (swkey->eth.vlan.tci || eth_type_vlan(swkey->eth.type)) { if (swkey->eth.vlan.tci || eth_type_vlan(swkey->eth.type)) {
if (ovs_nla_put_vlan(skb, &output->eth.vlan, is_mask)) if (ovs_nla_put_vlan(skb, &output->eth.vlan, is_mask))
goto nla_put_failure; goto nla_put_failure;
encap = nla_nest_start(skb, OVS_KEY_ATTR_ENCAP); encap = nla_nest_start_noflag(skb, OVS_KEY_ATTR_ENCAP);
if (!swkey->eth.vlan.tci) if (!swkey->eth.vlan.tci)
goto unencap; goto unencap;
if (swkey->eth.cvlan.tci || eth_type_vlan(swkey->eth.type)) { if (swkey->eth.cvlan.tci || eth_type_vlan(swkey->eth.type)) {
if (ovs_nla_put_vlan(skb, &output->eth.cvlan, is_mask)) if (ovs_nla_put_vlan(skb, &output->eth.cvlan, is_mask))
goto nla_put_failure; goto nla_put_failure;
in_encap = nla_nest_start(skb, OVS_KEY_ATTR_ENCAP); in_encap = nla_nest_start_noflag(skb,
OVS_KEY_ATTR_ENCAP);
if (!swkey->eth.cvlan.tci) if (!swkey->eth.cvlan.tci)
goto unencap; goto unencap;
} }
@ -2226,7 +2227,7 @@ int ovs_nla_put_key(const struct sw_flow_key *swkey,
int err; int err;
struct nlattr *nla; struct nlattr *nla;
nla = nla_nest_start(skb, attr); nla = nla_nest_start_noflag(skb, attr);
if (!nla) if (!nla)
return -EMSGSIZE; return -EMSGSIZE;
err = __ovs_nla_put_key(swkey, output, is_mask, skb); err = __ovs_nla_put_key(swkey, output, is_mask, skb);
@ -3252,7 +3253,7 @@ static int sample_action_to_attr(const struct nlattr *attr,
const struct sample_arg *arg; const struct sample_arg *arg;
struct nlattr *actions; struct nlattr *actions;
start = nla_nest_start(skb, OVS_ACTION_ATTR_SAMPLE); start = nla_nest_start_noflag(skb, OVS_ACTION_ATTR_SAMPLE);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;
@ -3265,7 +3266,7 @@ static int sample_action_to_attr(const struct nlattr *attr,
goto out; goto out;
} }
ac_start = nla_nest_start(skb, OVS_SAMPLE_ATTR_ACTIONS); ac_start = nla_nest_start_noflag(skb, OVS_SAMPLE_ATTR_ACTIONS);
if (!ac_start) { if (!ac_start) {
err = -EMSGSIZE; err = -EMSGSIZE;
goto out; goto out;
@ -3291,7 +3292,7 @@ static int clone_action_to_attr(const struct nlattr *attr,
struct nlattr *start; struct nlattr *start;
int err = 0, rem = nla_len(attr); int err = 0, rem = nla_len(attr);
start = nla_nest_start(skb, OVS_ACTION_ATTR_CLONE); start = nla_nest_start_noflag(skb, OVS_ACTION_ATTR_CLONE);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;
@ -3313,7 +3314,7 @@ static int check_pkt_len_action_to_attr(const struct nlattr *attr,
const struct nlattr *a, *cpl_arg; const struct nlattr *a, *cpl_arg;
int err = 0, rem = nla_len(attr); int err = 0, rem = nla_len(attr);
start = nla_nest_start(skb, OVS_ACTION_ATTR_CHECK_PKT_LEN); start = nla_nest_start_noflag(skb, OVS_ACTION_ATTR_CHECK_PKT_LEN);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;
@ -3332,8 +3333,8 @@ static int check_pkt_len_action_to_attr(const struct nlattr *attr,
* 'OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL'. * 'OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL'.
*/ */
a = nla_next(cpl_arg, &rem); a = nla_next(cpl_arg, &rem);
ac_start = nla_nest_start(skb, ac_start = nla_nest_start_noflag(skb,
OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL); OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL);
if (!ac_start) { if (!ac_start) {
err = -EMSGSIZE; err = -EMSGSIZE;
goto out; goto out;
@ -3351,8 +3352,8 @@ static int check_pkt_len_action_to_attr(const struct nlattr *attr,
* OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER. * OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER.
*/ */
a = nla_next(a, &rem); a = nla_next(a, &rem);
ac_start = nla_nest_start(skb, ac_start = nla_nest_start_noflag(skb,
OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER); OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER);
if (!ac_start) { if (!ac_start) {
err = -EMSGSIZE; err = -EMSGSIZE;
goto out; goto out;
@ -3386,7 +3387,7 @@ static int set_action_to_attr(const struct nlattr *a, struct sk_buff *skb)
struct ovs_tunnel_info *ovs_tun = nla_data(ovs_key); struct ovs_tunnel_info *ovs_tun = nla_data(ovs_key);
struct ip_tunnel_info *tun_info = &ovs_tun->tun_dst->u.tun_info; struct ip_tunnel_info *tun_info = &ovs_tun->tun_dst->u.tun_info;
start = nla_nest_start(skb, OVS_ACTION_ATTR_SET); start = nla_nest_start_noflag(skb, OVS_ACTION_ATTR_SET);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;
@ -3418,7 +3419,7 @@ static int masked_set_action_to_set_action_attr(const struct nlattr *a,
/* Revert the conversion we did from a non-masked set action to /* Revert the conversion we did from a non-masked set action to
* masked set action. * masked set action.
*/ */
nla = nla_nest_start(skb, OVS_ACTION_ATTR_SET); nla = nla_nest_start_noflag(skb, OVS_ACTION_ATTR_SET);
if (!nla) if (!nla)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -127,7 +127,7 @@ static int ovs_meter_cmd_reply_stats(struct sk_buff *reply, u32 meter_id,
OVS_METER_ATTR_PAD)) OVS_METER_ATTR_PAD))
goto error; goto error;
nla = nla_nest_start(reply, OVS_METER_ATTR_BANDS); nla = nla_nest_start_noflag(reply, OVS_METER_ATTR_BANDS);
if (!nla) if (!nla)
goto error; goto error;
@ -136,7 +136,7 @@ static int ovs_meter_cmd_reply_stats(struct sk_buff *reply, u32 meter_id,
for (i = 0; i < meter->n_bands; ++i, ++band) { for (i = 0; i < meter->n_bands; ++i, ++band) {
struct nlattr *band_nla; struct nlattr *band_nla;
band_nla = nla_nest_start(reply, OVS_BAND_ATTR_UNSPEC); band_nla = nla_nest_start_noflag(reply, OVS_BAND_ATTR_UNSPEC);
if (!band_nla || nla_put(reply, OVS_BAND_ATTR_STATS, if (!band_nla || nla_put(reply, OVS_BAND_ATTR_STATS,
sizeof(struct ovs_flow_stats), sizeof(struct ovs_flow_stats),
&band->stats)) &band->stats))
@ -166,11 +166,11 @@ static int ovs_meter_cmd_features(struct sk_buff *skb, struct genl_info *info)
nla_put_u32(reply, OVS_METER_ATTR_MAX_BANDS, DP_MAX_BANDS)) nla_put_u32(reply, OVS_METER_ATTR_MAX_BANDS, DP_MAX_BANDS))
goto nla_put_failure; goto nla_put_failure;
nla = nla_nest_start(reply, OVS_METER_ATTR_BANDS); nla = nla_nest_start_noflag(reply, OVS_METER_ATTR_BANDS);
if (!nla) if (!nla)
goto nla_put_failure; goto nla_put_failure;
band_nla = nla_nest_start(reply, OVS_BAND_ATTR_UNSPEC); band_nla = nla_nest_start_noflag(reply, OVS_BAND_ATTR_UNSPEC);
if (!band_nla) if (!band_nla)
goto nla_put_failure; goto nla_put_failure;
/* Currently only DROP band type is supported. */ /* Currently only DROP band type is supported. */

View File

@ -43,7 +43,7 @@ static int vxlan_get_options(const struct vport *vport, struct sk_buff *skb)
if (vxlan->cfg.flags & VXLAN_F_GBP) { if (vxlan->cfg.flags & VXLAN_F_GBP) {
struct nlattr *exts; struct nlattr *exts;
exts = nla_nest_start(skb, OVS_TUNNEL_ATTR_EXTENSION); exts = nla_nest_start_noflag(skb, OVS_TUNNEL_ATTR_EXTENSION);
if (!exts) if (!exts)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -319,7 +319,7 @@ int ovs_vport_get_options(const struct vport *vport, struct sk_buff *skb)
if (!vport->ops->get_options) if (!vport->ops->get_options)
return 0; return 0;
nla = nla_nest_start(skb, OVS_VPORT_ATTR_OPTIONS); nla = nla_nest_start_noflag(skb, OVS_VPORT_ATTR_OPTIONS);
if (!nla) if (!nla)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -39,7 +39,7 @@ static int pdiag_put_mclist(const struct packet_sock *po, struct sk_buff *nlskb)
struct nlattr *mca; struct nlattr *mca;
struct packet_mclist *ml; struct packet_mclist *ml;
mca = nla_nest_start(nlskb, PACKET_DIAG_MCLIST); mca = nla_nest_start_noflag(nlskb, PACKET_DIAG_MCLIST);
if (!mca) if (!mca)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -242,7 +242,7 @@ static int tcf_dump_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb,
(unsigned long)p->tcfa_tm.lastuse)) (unsigned long)p->tcfa_tm.lastuse))
continue; continue;
nest = nla_nest_start(skb, n_i); nest = nla_nest_start_noflag(skb, n_i);
if (!nest) { if (!nest) {
index--; index--;
goto nla_put_failure; goto nla_put_failure;
@ -299,7 +299,7 @@ static int tcf_del_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb,
struct tc_action *p; struct tc_action *p;
unsigned long id = 1; unsigned long id = 1;
nest = nla_nest_start(skb, 0); nest = nla_nest_start_noflag(skb, 0);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_string(skb, TCA_KIND, ops->kind)) if (nla_put_string(skb, TCA_KIND, ops->kind))
@ -776,7 +776,7 @@ tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int bind, int ref)
} }
rcu_read_unlock(); rcu_read_unlock();
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
err = tcf_action_dump_old(skb, a, bind, ref); err = tcf_action_dump_old(skb, a, bind, ref);
@ -800,7 +800,7 @@ int tcf_action_dump(struct sk_buff *skb, struct tc_action *actions[],
for (i = 0; i < TCA_ACT_MAX_PRIO && actions[i]; i++) { for (i = 0; i < TCA_ACT_MAX_PRIO && actions[i]; i++) {
a = actions[i]; a = actions[i];
nest = nla_nest_start(skb, a->order); nest = nla_nest_start_noflag(skb, a->order);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
err = tcf_action_dump_1(skb, a, bind, ref); err = tcf_action_dump_1(skb, a, bind, ref);
@ -1052,7 +1052,7 @@ static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[],
t->tca__pad1 = 0; t->tca__pad1 = 0;
t->tca__pad2 = 0; t->tca__pad2 = 0;
nest = nla_nest_start(skb, TCA_ACT_TAB); nest = nla_nest_start_noflag(skb, TCA_ACT_TAB);
if (!nest) if (!nest)
goto out_nlmsg_trim; goto out_nlmsg_trim;
@ -1176,7 +1176,7 @@ static int tca_action_flush(struct net *net, struct nlattr *nla,
t->tca__pad1 = 0; t->tca__pad1 = 0;
t->tca__pad2 = 0; t->tca__pad2 = 0;
nest = nla_nest_start(skb, TCA_ACT_TAB); nest = nla_nest_start_noflag(skb, TCA_ACT_TAB);
if (!nest) { if (!nest) {
NL_SET_ERR_MSG(extack, "Failed to add new netlink message"); NL_SET_ERR_MSG(extack, "Failed to add new netlink message");
goto out_module_put; goto out_module_put;
@ -1508,7 +1508,7 @@ static int tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
if (!count_attr) if (!count_attr)
goto out_module_put; goto out_module_put;
nest = nla_nest_start(skb, TCA_ACT_TAB); nest = nla_nest_start_noflag(skb, TCA_ACT_TAB);
if (nest == NULL) if (nest == NULL)
goto out_module_put; goto out_module_put;

View File

@ -387,7 +387,7 @@ static int dump_metalist(struct sk_buff *skb, struct tcf_ife_info *ife)
if (list_empty(&ife->metalist)) if (list_empty(&ife->metalist))
return 0; return 0;
nest = nla_nest_start(skb, TCA_IFE_METALST); nest = nla_nest_start_noflag(skb, TCA_IFE_METALST);
if (!nest) if (!nest)
goto out_nlmsg_trim; goto out_nlmsg_trim;

View File

@ -108,14 +108,15 @@ err_out:
static int tcf_pedit_key_ex_dump(struct sk_buff *skb, static int tcf_pedit_key_ex_dump(struct sk_buff *skb,
struct tcf_pedit_key_ex *keys_ex, int n) struct tcf_pedit_key_ex *keys_ex, int n)
{ {
struct nlattr *keys_start = nla_nest_start(skb, TCA_PEDIT_KEYS_EX); struct nlattr *keys_start = nla_nest_start_noflag(skb,
TCA_PEDIT_KEYS_EX);
if (!keys_start) if (!keys_start)
goto nla_failure; goto nla_failure;
for (; n > 0; n--) { for (; n > 0; n--) {
struct nlattr *key_start; struct nlattr *key_start;
key_start = nla_nest_start(skb, TCA_PEDIT_KEY_EX); key_start = nla_nest_start_noflag(skb, TCA_PEDIT_KEY_EX);
if (!key_start) if (!key_start)
goto nla_failure; goto nla_failure;

View File

@ -426,7 +426,7 @@ static int tunnel_key_geneve_opts_dump(struct sk_buff *skb,
u8 *src = (u8 *)(info + 1); u8 *src = (u8 *)(info + 1);
struct nlattr *start; struct nlattr *start;
start = nla_nest_start(skb, TCA_TUNNEL_KEY_ENC_OPTS_GENEVE); start = nla_nest_start_noflag(skb, TCA_TUNNEL_KEY_ENC_OPTS_GENEVE);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;
@ -460,7 +460,7 @@ static int tunnel_key_opts_dump(struct sk_buff *skb,
if (!info->options_len) if (!info->options_len)
return 0; return 0;
start = nla_nest_start(skb, TCA_TUNNEL_KEY_ENC_OPTS); start = nla_nest_start_noflag(skb, TCA_TUNNEL_KEY_ENC_OPTS);
if (!start) if (!start)
return -EMSGSIZE; return -EMSGSIZE;

View File

@ -3111,7 +3111,7 @@ int tcf_exts_dump(struct sk_buff *skb, struct tcf_exts *exts)
* tc data even if iproute2 was newer - jhs * tc data even if iproute2 was newer - jhs
*/ */
if (exts->type != TCA_OLD_COMPAT) { if (exts->type != TCA_OLD_COMPAT) {
nest = nla_nest_start(skb, exts->action); nest = nla_nest_start_noflag(skb, exts->action);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -3120,7 +3120,7 @@ int tcf_exts_dump(struct sk_buff *skb, struct tcf_exts *exts)
nla_nest_end(skb, nest); nla_nest_end(skb, nest);
} else if (exts->police) { } else if (exts->police) {
struct tc_action *act = tcf_exts_first_act(exts); struct tc_action *act = tcf_exts_first_act(exts);
nest = nla_nest_start(skb, exts->police); nest = nla_nest_start_noflag(skb, exts->police);
if (nest == NULL || !act) if (nest == NULL || !act)
goto nla_put_failure; goto nla_put_failure;
if (tcf_action_dump_old(skb, act, 0, 0) < 0) if (tcf_action_dump_old(skb, act, 0, 0) < 0)

View File

@ -288,7 +288,7 @@ static int basic_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = f->handle; t->tcm_handle = f->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -591,7 +591,7 @@ static int cls_bpf_dump(struct net *net, struct tcf_proto *tp, void *fh,
cls_bpf_offload_update_stats(tp, prog); cls_bpf_offload_update_stats(tp, prog);
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -176,7 +176,7 @@ static int cls_cgroup_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = head->handle; t->tcm_handle = head->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -629,7 +629,7 @@ static int flow_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = f->handle; t->tcm_handle = f->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -2051,7 +2051,7 @@ static int fl_dump_key_geneve_opt(struct sk_buff *skb,
struct nlattr *nest; struct nlattr *nest;
int opt_off = 0; int opt_off = 0;
nest = nla_nest_start(skb, TCA_FLOWER_KEY_ENC_OPTS_GENEVE); nest = nla_nest_start_noflag(skb, TCA_FLOWER_KEY_ENC_OPTS_GENEVE);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
@ -2087,7 +2087,7 @@ static int fl_dump_key_options(struct sk_buff *skb, int enc_opt_type,
if (!enc_opts->len) if (!enc_opts->len)
return 0; return 0;
nest = nla_nest_start(skb, enc_opt_type); nest = nla_nest_start_noflag(skb, enc_opt_type);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
@ -2333,7 +2333,7 @@ static int fl_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = f->handle; t->tcm_handle = f->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
@ -2384,7 +2384,7 @@ static int fl_tmplt_dump(struct sk_buff *skb, struct net *net, void *tmplt_priv)
struct fl_flow_key *key, *mask; struct fl_flow_key *key, *mask;
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;

View File

@ -402,7 +402,7 @@ static int fw_dump(struct net *net, struct tcf_proto *tp, void *fh,
if (!f->res.classid && !tcf_exts_has_actions(&f->exts)) if (!f->res.classid && !tcf_exts_has_actions(&f->exts))
return skb->len; return skb->len;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -303,7 +303,7 @@ static int mall_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = head->handle; t->tcm_handle = head->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;

View File

@ -607,7 +607,7 @@ static int route4_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = f->handle; t->tcm_handle = f->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -706,7 +706,7 @@ static int rsvp_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = f->handle; t->tcm_handle = f->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -601,7 +601,7 @@ static int tcindex_dump(struct net *net, struct tcf_proto *tp, void *fh,
tp, fh, skb, t, p, r); tp, fh, skb, t, p, r);
pr_debug("p->perfect %p p->h %p\n", p->perfect, p->h); pr_debug("p->perfect %p p->h %p\n", p->perfect, p->h);
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -1294,7 +1294,7 @@ static int u32_dump(struct net *net, struct tcf_proto *tp, void *fh,
t->tcm_handle = n->handle; t->tcm_handle = n->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -440,14 +440,14 @@ int tcf_em_tree_dump(struct sk_buff *skb, struct tcf_ematch_tree *tree, int tlv)
struct nlattr *top_start; struct nlattr *top_start;
struct nlattr *list_start; struct nlattr *list_start;
top_start = nla_nest_start(skb, tlv); top_start = nla_nest_start_noflag(skb, tlv);
if (top_start == NULL) if (top_start == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put(skb, TCA_EMATCH_TREE_HDR, sizeof(tree->hdr), &tree->hdr)) if (nla_put(skb, TCA_EMATCH_TREE_HDR, sizeof(tree->hdr), &tree->hdr))
goto nla_put_failure; goto nla_put_failure;
list_start = nla_nest_start(skb, TCA_EMATCH_TREE_LIST); list_start = nla_nest_start_noflag(skb, TCA_EMATCH_TREE_LIST);
if (list_start == NULL) if (list_start == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -542,7 +542,7 @@ static int qdisc_dump_stab(struct sk_buff *skb, struct qdisc_size_table *stab)
{ {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, TCA_STAB); nest = nla_nest_start_noflag(skb, TCA_STAB);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put(skb, TCA_STAB_BASE, sizeof(stab->szopts), &stab->szopts)) if (nla_put(skb, TCA_STAB_BASE, sizeof(stab->szopts), &stab->szopts))

View File

@ -609,7 +609,7 @@ static int atm_tc_dump_class(struct Qdisc *sch, unsigned long cl,
tcm->tcm_handle = flow->common.classid; tcm->tcm_handle = flow->common.classid;
tcm->tcm_info = flow->q->handle; tcm->tcm_info = flow->q->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -2735,7 +2735,7 @@ static int cake_dump(struct Qdisc *sch, struct sk_buff *skb)
struct cake_sched_data *q = qdisc_priv(sch); struct cake_sched_data *q = qdisc_priv(sch);
struct nlattr *opts; struct nlattr *opts;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!opts) if (!opts)
goto nla_put_failure; goto nla_put_failure;
@ -2806,7 +2806,7 @@ nla_put_failure:
static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d) static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
{ {
struct nlattr *stats = nla_nest_start(d->skb, TCA_STATS_APP); struct nlattr *stats = nla_nest_start_noflag(d->skb, TCA_STATS_APP);
struct cake_sched_data *q = qdisc_priv(sch); struct cake_sched_data *q = qdisc_priv(sch);
struct nlattr *tstats, *ts; struct nlattr *tstats, *ts;
int i; int i;
@ -2836,7 +2836,7 @@ static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
#undef PUT_STAT_U32 #undef PUT_STAT_U32
#undef PUT_STAT_U64 #undef PUT_STAT_U64
tstats = nla_nest_start(d->skb, TCA_CAKE_STATS_TIN_STATS); tstats = nla_nest_start_noflag(d->skb, TCA_CAKE_STATS_TIN_STATS);
if (!tstats) if (!tstats)
goto nla_put_failure; goto nla_put_failure;
@ -2853,7 +2853,7 @@ static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
for (i = 0; i < q->tin_cnt; i++) { for (i = 0; i < q->tin_cnt; i++) {
struct cake_tin_data *b = &q->tins[q->tin_order[i]]; struct cake_tin_data *b = &q->tins[q->tin_order[i]];
ts = nla_nest_start(d->skb, i + 1); ts = nla_nest_start_noflag(d->skb, i + 1);
if (!ts) if (!ts)
goto nla_put_failure; goto nla_put_failure;
@ -2973,7 +2973,7 @@ static int cake_dump_class_stats(struct Qdisc *sch, unsigned long cl,
if (flow) { if (flow) {
ktime_t now = ktime_get(); ktime_t now = ktime_get();
stats = nla_nest_start(d->skb, TCA_STATS_APP); stats = nla_nest_start_noflag(d->skb, TCA_STATS_APP);
if (!stats) if (!stats)
return -1; return -1;

View File

@ -1305,7 +1305,7 @@ static int cbq_dump(struct Qdisc *sch, struct sk_buff *skb)
struct cbq_sched_data *q = qdisc_priv(sch); struct cbq_sched_data *q = qdisc_priv(sch);
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (cbq_dump_attr(skb, &q->link) < 0) if (cbq_dump_attr(skb, &q->link) < 0)
@ -1340,7 +1340,7 @@ cbq_dump_class(struct Qdisc *sch, unsigned long arg,
tcm->tcm_handle = cl->common.classid; tcm->tcm_handle = cl->common.classid;
tcm->tcm_info = cl->q->handle; tcm->tcm_info = cl->q->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (cbq_dump_attr(skb, cl) < 0) if (cbq_dump_attr(skb, cl) < 0)

View File

@ -449,7 +449,7 @@ static int cbs_dump(struct Qdisc *sch, struct sk_buff *skb)
struct tc_cbs_qopt opt = { }; struct tc_cbs_qopt opt = { };
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;

View File

@ -452,7 +452,7 @@ static int choke_dump(struct Qdisc *sch, struct sk_buff *skb)
.Scell_log = q->parms.Scell_log, .Scell_log = q->parms.Scell_log,
}; };
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -217,7 +217,7 @@ static int codel_dump(struct Qdisc *sch, struct sk_buff *skb)
struct codel_sched_data *q = qdisc_priv(sch); struct codel_sched_data *q = qdisc_priv(sch);
struct nlattr *opts; struct nlattr *opts;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -244,7 +244,7 @@ static int drr_dump_class(struct Qdisc *sch, unsigned long arg,
tcm->tcm_handle = cl->common.classid; tcm->tcm_handle = cl->common.classid;
tcm->tcm_info = cl->qdisc->handle; tcm->tcm_info = cl->qdisc->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u32(skb, TCA_DRR_QUANTUM, cl->quantum)) if (nla_put_u32(skb, TCA_DRR_QUANTUM, cl->quantum))

View File

@ -432,7 +432,7 @@ static int dsmark_dump_class(struct Qdisc *sch, unsigned long cl,
tcm->tcm_handle = TC_H_MAKE(TC_H_MAJ(sch->handle), cl - 1); tcm->tcm_handle = TC_H_MAKE(TC_H_MAJ(sch->handle), cl - 1);
tcm->tcm_info = p->q->handle; tcm->tcm_info = p->q->handle;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u8(skb, TCA_DSMARK_MASK, p->mv[cl - 1].mask) || if (nla_put_u8(skb, TCA_DSMARK_MASK, p->mv[cl - 1].mask) ||
@ -451,7 +451,7 @@ static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb)
struct dsmark_qdisc_data *p = qdisc_priv(sch); struct dsmark_qdisc_data *p = qdisc_priv(sch);
struct nlattr *opts = NULL; struct nlattr *opts = NULL;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u16(skb, TCA_DSMARK_INDICES, p->indices)) if (nla_put_u16(skb, TCA_DSMARK_INDICES, p->indices))

View File

@ -460,7 +460,7 @@ static int etf_dump(struct Qdisc *sch, struct sk_buff *skb)
struct tc_etf_qopt opt = { }; struct tc_etf_qopt opt = { };
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;

View File

@ -823,7 +823,7 @@ static int fq_dump(struct Qdisc *sch, struct sk_buff *skb)
u64 ce_threshold = q->ce_threshold; u64 ce_threshold = q->ce_threshold;
struct nlattr *opts; struct nlattr *opts;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -527,7 +527,7 @@ static int fq_codel_dump(struct Qdisc *sch, struct sk_buff *skb)
struct fq_codel_sched_data *q = qdisc_priv(sch); struct fq_codel_sched_data *q = qdisc_priv(sch);
struct nlattr *opts; struct nlattr *opts;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -772,7 +772,7 @@ static int gred_dump(struct Qdisc *sch, struct sk_buff *skb)
if (gred_offload_dump_stats(sch)) if (gred_offload_dump_stats(sch))
goto nla_put_failure; goto nla_put_failure;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put(skb, TCA_GRED_DPS, sizeof(sopt), &sopt)) if (nla_put(skb, TCA_GRED_DPS, sizeof(sopt), &sopt))
@ -790,7 +790,7 @@ static int gred_dump(struct Qdisc *sch, struct sk_buff *skb)
goto nla_put_failure; goto nla_put_failure;
/* Old style all-in-one dump of VQs */ /* Old style all-in-one dump of VQs */
parms = nla_nest_start(skb, TCA_GRED_PARMS); parms = nla_nest_start_noflag(skb, TCA_GRED_PARMS);
if (parms == NULL) if (parms == NULL)
goto nla_put_failure; goto nla_put_failure;
@ -841,7 +841,7 @@ append_opt:
nla_nest_end(skb, parms); nla_nest_end(skb, parms);
/* Dump the VQs again, in more structured way */ /* Dump the VQs again, in more structured way */
vqs = nla_nest_start(skb, TCA_GRED_VQ_LIST); vqs = nla_nest_start_noflag(skb, TCA_GRED_VQ_LIST);
if (!vqs) if (!vqs)
goto nla_put_failure; goto nla_put_failure;
@ -852,7 +852,7 @@ append_opt:
if (!q) if (!q)
continue; continue;
vq = nla_nest_start(skb, TCA_GRED_VQ_ENTRY); vq = nla_nest_start_noflag(skb, TCA_GRED_VQ_ENTRY);
if (!vq) if (!vq)
goto nla_put_failure; goto nla_put_failure;

View File

@ -1300,7 +1300,7 @@ hfsc_dump_class(struct Qdisc *sch, unsigned long arg, struct sk_buff *skb,
if (cl->level == 0) if (cl->level == 0)
tcm->tcm_info = cl->qdisc->handle; tcm->tcm_info = cl->qdisc->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (hfsc_dump_curves(skb, cl) < 0) if (hfsc_dump_curves(skb, cl) < 0)

View File

@ -654,7 +654,7 @@ static int hhf_dump(struct Qdisc *sch, struct sk_buff *skb)
struct hhf_sched_data *q = qdisc_priv(sch); struct hhf_sched_data *q = qdisc_priv(sch);
struct nlattr *opts; struct nlattr *opts;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -1057,7 +1057,7 @@ static int htb_dump(struct Qdisc *sch, struct sk_buff *skb)
gopt.defcls = q->defcls; gopt.defcls = q->defcls;
gopt.debug = 0; gopt.debug = 0;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put(skb, TCA_HTB_INIT, sizeof(gopt), &gopt) || if (nla_put(skb, TCA_HTB_INIT, sizeof(gopt), &gopt) ||
@ -1086,7 +1086,7 @@ static int htb_dump_class(struct Qdisc *sch, unsigned long arg,
if (!cl->level && cl->leaf.q) if (!cl->level && cl->leaf.q)
tcm->tcm_info = cl->leaf.q->handle; tcm->tcm_info = cl->leaf.q->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -106,7 +106,7 @@ static int ingress_dump(struct Qdisc *sch, struct sk_buff *skb)
{ {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -349,7 +349,7 @@ static int dump_rates(struct mqprio_sched *priv,
int i; int i;
if (priv->flags & TC_MQPRIO_F_MIN_RATE) { if (priv->flags & TC_MQPRIO_F_MIN_RATE) {
nest = nla_nest_start(skb, TCA_MQPRIO_MIN_RATE64); nest = nla_nest_start_noflag(skb, TCA_MQPRIO_MIN_RATE64);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;
@ -363,7 +363,7 @@ static int dump_rates(struct mqprio_sched *priv,
} }
if (priv->flags & TC_MQPRIO_F_MAX_RATE) { if (priv->flags & TC_MQPRIO_F_MAX_RATE) {
nest = nla_nest_start(skb, TCA_MQPRIO_MAX_RATE64); nest = nla_nest_start_noflag(skb, TCA_MQPRIO_MAX_RATE64);
if (!nest) if (!nest)
goto nla_put_failure; goto nla_put_failure;

View File

@ -1079,7 +1079,7 @@ static int dump_loss_model(const struct netem_sched_data *q,
{ {
struct nlattr *nest; struct nlattr *nest;
nest = nla_nest_start(skb, TCA_NETEM_LOSS); nest = nla_nest_start_noflag(skb, TCA_NETEM_LOSS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -491,7 +491,7 @@ static int pie_dump(struct Qdisc *sch, struct sk_buff *skb)
struct pie_sched_data *q = qdisc_priv(sch); struct pie_sched_data *q = qdisc_priv(sch);
struct nlattr *opts; struct nlattr *opts;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!opts) if (!opts)
goto nla_put_failure; goto nla_put_failure;

View File

@ -619,7 +619,7 @@ static int qfq_dump_class(struct Qdisc *sch, unsigned long arg,
tcm->tcm_handle = cl->common.classid; tcm->tcm_handle = cl->common.classid;
tcm->tcm_info = cl->qdisc->handle; tcm->tcm_info = cl->qdisc->handle;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u32(skb, TCA_QFQ_WEIGHT, cl->agg->class_weight) || if (nla_put_u32(skb, TCA_QFQ_WEIGHT, cl->agg->class_weight) ||

View File

@ -318,7 +318,7 @@ static int red_dump(struct Qdisc *sch, struct sk_buff *skb)
if (err) if (err)
goto nla_put_failure; goto nla_put_failure;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put(skb, TCA_RED_PARMS, sizeof(opt), &opt) || if (nla_put(skb, TCA_RED_PARMS, sizeof(opt), &opt) ||

View File

@ -580,7 +580,7 @@ static int sfb_dump(struct Qdisc *sch, struct sk_buff *skb)
}; };
sch->qstats.backlog = q->qdisc->qstats.backlog; sch->qstats.backlog = q->qdisc->qstats.backlog;
opts = nla_nest_start(skb, TCA_OPTIONS); opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (opts == NULL) if (opts == NULL)
goto nla_put_failure; goto nla_put_failure;
if (nla_put(skb, TCA_SFB_PARMS, sizeof(opt), &opt)) if (nla_put(skb, TCA_SFB_PARMS, sizeof(opt), &opt))

View File

@ -841,7 +841,7 @@ static int dump_entry(struct sk_buff *msg,
{ {
struct nlattr *item; struct nlattr *item;
item = nla_nest_start(msg, TCA_TAPRIO_SCHED_ENTRY); item = nla_nest_start_noflag(msg, TCA_TAPRIO_SCHED_ENTRY);
if (!item) if (!item)
return -ENOSPC; return -ENOSPC;
@ -883,7 +883,7 @@ static int taprio_dump(struct Qdisc *sch, struct sk_buff *skb)
opt.offset[i] = dev->tc_to_txq[i].offset; opt.offset[i] = dev->tc_to_txq[i].offset;
} }
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (!nest) if (!nest)
return -ENOSPC; return -ENOSPC;
@ -897,7 +897,8 @@ static int taprio_dump(struct Qdisc *sch, struct sk_buff *skb)
if (nla_put_s32(skb, TCA_TAPRIO_ATTR_SCHED_CLOCKID, q->clockid)) if (nla_put_s32(skb, TCA_TAPRIO_ATTR_SCHED_CLOCKID, q->clockid))
goto options_error; goto options_error;
entry_list = nla_nest_start(skb, TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST); entry_list = nla_nest_start_noflag(skb,
TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST);
if (!entry_list) if (!entry_list)
goto options_error; goto options_error;

View File

@ -448,7 +448,7 @@ static int tbf_dump(struct Qdisc *sch, struct sk_buff *skb)
struct tc_tbf_qopt opt; struct tc_tbf_qopt opt;
sch->qstats.backlog = q->qdisc->qstats.backlog; sch->qstats.backlog = q->qdisc->qstats.backlog;
nest = nla_nest_start(skb, TCA_OPTIONS); nest = nla_nest_start_noflag(skb, TCA_OPTIONS);
if (nest == NULL) if (nest == NULL)
goto nla_put_failure; goto nla_put_failure;

View File

@ -687,14 +687,14 @@ static int __tipc_nl_add_bearer(struct tipc_nl_msg *msg,
if (!hdr) if (!hdr)
return -EMSGSIZE; return -EMSGSIZE;
attrs = nla_nest_start(msg->skb, TIPC_NLA_BEARER); attrs = nla_nest_start_noflag(msg->skb, TIPC_NLA_BEARER);
if (!attrs) if (!attrs)
goto msg_full; goto msg_full;
if (nla_put_string(msg->skb, TIPC_NLA_BEARER_NAME, bearer->name)) if (nla_put_string(msg->skb, TIPC_NLA_BEARER_NAME, bearer->name))
goto attr_msg_full; goto attr_msg_full;
prop = nla_nest_start(msg->skb, TIPC_NLA_BEARER_PROP); prop = nla_nest_start_noflag(msg->skb, TIPC_NLA_BEARER_PROP);
if (!prop) if (!prop)
goto prop_msg_full; goto prop_msg_full;
if (nla_put_u32(msg->skb, TIPC_NLA_PROP_PRIO, bearer->priority)) if (nla_put_u32(msg->skb, TIPC_NLA_PROP_PRIO, bearer->priority))
@ -1033,14 +1033,14 @@ static int __tipc_nl_add_media(struct tipc_nl_msg *msg,
if (!hdr) if (!hdr)
return -EMSGSIZE; return -EMSGSIZE;
attrs = nla_nest_start(msg->skb, TIPC_NLA_MEDIA); attrs = nla_nest_start_noflag(msg->skb, TIPC_NLA_MEDIA);
if (!attrs) if (!attrs)
goto msg_full; goto msg_full;
if (nla_put_string(msg->skb, TIPC_NLA_MEDIA_NAME, media->name)) if (nla_put_string(msg->skb, TIPC_NLA_MEDIA_NAME, media->name))
goto attr_msg_full; goto attr_msg_full;
prop = nla_nest_start(msg->skb, TIPC_NLA_MEDIA_PROP); prop = nla_nest_start_noflag(msg->skb, TIPC_NLA_MEDIA_PROP);
if (!prop) if (!prop)
goto prop_msg_full; goto prop_msg_full;
if (nla_put_u32(msg->skb, TIPC_NLA_PROP_PRIO, media->priority)) if (nla_put_u32(msg->skb, TIPC_NLA_PROP_PRIO, media->priority))

Some files were not shown because too many files have changed in this diff Show More