]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: convert to nla_get_*_default()
authorJohannes Berg <johannes.berg@intel.com>
Fri, 8 Nov 2024 10:41:45 +0000 (11:41 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 11 Nov 2024 18:32:06 +0000 (10:32 -0800)
Most of the original conversion is from the spatch below,
but I edited some and left out other instances that were
either buggy after conversion (where default values don't
fit into the type) or just looked strange.

    @@
    expression attr, def;
    expression val;
    identifier fn =~ "^nla_get_.*";
    fresh identifier dfn = fn ## "_default";
    @@
    (
    -if (attr)
    -  val = fn(attr);
    -else
    -  val = def;
    +val = dfn(attr, def);
    |
    -if (!attr)
    -  val = def;
    -else
    -  val = fn(attr);
    +val = dfn(attr, def);
    |
    -if (!attr)
    -  return def;
    -return fn(attr);
    +return dfn(attr, def);
    |
    -attr ? fn(attr) : def
    +dfn(attr, def)
    |
    -!attr ? def : fn(attr)
    +dfn(attr, def)
    )

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Toke Høiland-Jørgensen <toke@kernel.org>
Link: https://patch.msgid.link/20241108114145.0580b8684e7f.I740beeaa2f70ebfc19bfca1045a24d6151992790@changeid
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
40 files changed:
drivers/net/amt.c
drivers/net/gtp.c
drivers/net/macsec.c
drivers/net/vxlan/vxlan_core.c
net/8021q/vlan_netlink.c
net/core/fib_rules.c
net/core/rtnetlink.c
net/devlink/dev.c
net/hsr/hsr_netlink.c
net/ieee802154/nl-mac.c
net/ieee802154/nl802154.c
net/ipv4/devinet.c
net/ipv4/ipmr.c
net/ipv4/nexthop.c
net/ipv4/route.c
net/ipv6/addrconf.c
net/ipv6/ila/ila_xlat.c
net/ipv6/ioam6.c
net/ipv6/ioam6_iptunnel.c
net/ipv6/ip6mr.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/nf_nat_core.c
net/netfilter/nft_tunnel.c
net/netlabel/netlabel_mgmt.c
net/openvswitch/datapath.c
net/openvswitch/flow_netlink.c
net/sched/act_ct.c
net/sched/act_ctinfo.c
net/sched/act_gate.c
net/sched/act_mpls.c
net/sched/act_police.c
net/sched/cls_api.c
net/sched/sch_choke.c
net/sched/sch_gred.c
net/sched/sch_htb.c
net/sched/sch_qfq.c
net/sched/sch_red.c
net/sched/sch_taprio.c
net/wireless/nl80211.c
net/xfrm/xfrm_user.c

index 0433a0f36d1b4e3a98b1b5d6b1b631665b2de6fb..98c6205ed19f157a2c42b65e509f960e6eceb065 100644 (file)
@@ -3206,15 +3206,11 @@ static int amt_newlink(struct net *net, struct net_device *dev,
                goto err;
        }
 
-       if (data[IFLA_AMT_RELAY_PORT])
-               amt->relay_port = nla_get_be16(data[IFLA_AMT_RELAY_PORT]);
-       else
-               amt->relay_port = htons(IANA_AMT_UDP_PORT);
+       amt->relay_port = nla_get_be16_default(data[IFLA_AMT_RELAY_PORT],
+                                              htons(IANA_AMT_UDP_PORT));
 
-       if (data[IFLA_AMT_GATEWAY_PORT])
-               amt->gw_port = nla_get_be16(data[IFLA_AMT_GATEWAY_PORT]);
-       else
-               amt->gw_port = htons(IANA_AMT_UDP_PORT);
+       amt->gw_port = nla_get_be16_default(data[IFLA_AMT_GATEWAY_PORT],
+                                           htons(IANA_AMT_UDP_PORT));
 
        if (!amt->relay_port) {
                NL_SET_ERR_MSG_ATTR(extack, tb[IFLA_AMT_DISCOVERY_IP],
index 70f981887518aaab77c568f4eb381f2bb36429b0..89a996ad8cd016e12a42e0f49f4624b40f3549cd 100644 (file)
@@ -1491,10 +1491,8 @@ static int gtp_newlink(struct net *src_net, struct net_device *dev,
        }
        gtp->role = role;
 
-       if (!data[IFLA_GTP_RESTART_COUNT])
-               gtp->restart_count = 0;
-       else
-               gtp->restart_count = nla_get_u8(data[IFLA_GTP_RESTART_COUNT]);
+       gtp->restart_count = nla_get_u8_default(data[IFLA_GTP_RESTART_COUNT],
+                                               0);
 
        gtp->net = src_net;
 
@@ -1829,10 +1827,7 @@ static struct pdp_ctx *gtp_pdp_add(struct gtp_dev *gtp, struct sock *sk,
 
        version = nla_get_u32(info->attrs[GTPA_VERSION]);
 
-       if (info->attrs[GTPA_FAMILY])
-               family = nla_get_u8(info->attrs[GTPA_FAMILY]);
-       else
-               family = AF_INET;
+       family = nla_get_u8_default(info->attrs[GTPA_FAMILY], AF_INET);
 
 #if !IS_ENABLED(CONFIG_IPV6)
        if (family == AF_INET6)
@@ -2069,10 +2064,7 @@ static struct pdp_ctx *gtp_find_pdp_by_link(struct net *net,
        struct gtp_dev *gtp;
        int family;
 
-       if (nla[GTPA_FAMILY])
-               family = nla_get_u8(nla[GTPA_FAMILY]);
-       else
-               family = AF_INET;
+       family = nla_get_u8_default(nla[GTPA_FAMILY], AF_INET);
 
        gtp = gtp_find_dev(net, nla);
        if (!gtp)
index ee215928257387c89b386ed3c4fcfcf251973dcd..53dc89a6ae67dcb140617d5b326bc8f9b0d0ac1a 100644 (file)
@@ -4299,9 +4299,9 @@ static int macsec_validate_attr(struct nlattr *tb[], struct nlattr *data[],
                }
        }
 
-       es  = data[IFLA_MACSEC_ES] ? nla_get_u8(data[IFLA_MACSEC_ES]) : false;
-       sci = data[IFLA_MACSEC_INC_SCI] ? nla_get_u8(data[IFLA_MACSEC_INC_SCI]) : false;
-       scb = data[IFLA_MACSEC_SCB] ? nla_get_u8(data[IFLA_MACSEC_SCB]) : false;
+       es  = nla_get_u8_default(data[IFLA_MACSEC_ES], false);
+       sci = nla_get_u8_default(data[IFLA_MACSEC_INC_SCI], false);
+       scb = nla_get_u8_default(data[IFLA_MACSEC_SCB], false);
 
        if ((sci && (scb || es)) || (scb && es))
                return -EINVAL;
index 841b59d1c1c2e1f925bb1956737549ffe47e1d4c..42b07bc2b10793e6dc3d05ff1ae616c1bee75f81 100644 (file)
@@ -1232,10 +1232,7 @@ static int vxlan_fdb_parse(struct nlattr *tb[], struct vxlan_dev *vxlan,
                *ifindex = 0;
        }
 
-       if (tb[NDA_NH_ID])
-               *nhid = nla_get_u32(tb[NDA_NH_ID]);
-       else
-               *nhid = 0;
+       *nhid = nla_get_u32_default(tb[NDA_NH_ID], 0);
 
        return 0;
 }
index cf5219df7903c9120abba770b21c6bfeeeeb7d3e..134419667d59e9906b47b171d8c16d0dd00cdb8a 100644 (file)
@@ -161,10 +161,8 @@ static int vlan_newlink(struct net *src_net, struct net_device *dev,
                return -ENODEV;
        }
 
-       if (data[IFLA_VLAN_PROTOCOL])
-               proto = nla_get_be16(data[IFLA_VLAN_PROTOCOL]);
-       else
-               proto = htons(ETH_P_8021Q);
+       proto = nla_get_be16_default(data[IFLA_VLAN_PROTOCOL],
+                                    htons(ETH_P_8021Q));
 
        vlan->vlan_proto = proto;
        vlan->vlan_id    = nla_get_u16(data[IFLA_VLAN_ID]);
index d0de9677f450475b5e3e765e13710c19b54aaf6c..34185d138c95ab29269a733155cbd3feb9d96b00 100644 (file)
@@ -558,8 +558,7 @@ static int fib_nl2rule(struct sk_buff *skb, struct nlmsghdr *nlh,
                nlrule->pref = fib_default_rule_pref(ops);
        }
 
-       nlrule->proto = tb[FRA_PROTOCOL] ?
-               nla_get_u8(tb[FRA_PROTOCOL]) : RTPROT_UNSPEC;
+       nlrule->proto = nla_get_u8_default(tb[FRA_PROTOCOL], RTPROT_UNSPEC);
 
        if (tb[FRA_IIFNAME]) {
                struct net_device *dev;
index 3b33810d92a8d9876533a721570917eab276143e..a5c386a4550164127f461f1b30a350269b20cf20 100644 (file)
@@ -2940,10 +2940,7 @@ static int do_setlink(const struct sk_buff *skb, struct net_device *dev,
                const char *pat = ifname[0] ? ifname : NULL;
                int new_ifindex;
 
-               if (tb[IFLA_NEW_IFINDEX])
-                       new_ifindex = nla_get_s32(tb[IFLA_NEW_IFINDEX]);
-               else
-                       new_ifindex = 0;
+               new_ifindex = nla_get_s32_default(tb[IFLA_NEW_IFINDEX], 0);
 
                err = __dev_change_net_namespace(dev, tgt_net, pat, new_ifindex);
                if (err)
index 9264bbc90d0cef7d64b9d734b09dceb5963b1db7..d6e3db300acbe8e71085f8d1de6ede5c6950f1a9 100644 (file)
@@ -531,10 +531,8 @@ int devlink_nl_reload_doit(struct sk_buff *skb, struct genl_info *info)
                return err;
        }
 
-       if (info->attrs[DEVLINK_ATTR_RELOAD_ACTION])
-               action = nla_get_u8(info->attrs[DEVLINK_ATTR_RELOAD_ACTION]);
-       else
-               action = DEVLINK_RELOAD_ACTION_DRIVER_REINIT;
+       action = nla_get_u8_default(info->attrs[DEVLINK_ATTR_RELOAD_ACTION],
+                                   DEVLINK_RELOAD_ACTION_DRIVER_REINIT);
 
        if (!devlink_reload_action_is_supported(devlink, action)) {
                NL_SET_ERR_MSG(info->extack, "Requested reload action is not supported by the driver");
index 6f09b9512484ab0aae32723fd192318ada3d760b..b68f2f71d0e1f3ce06276b0b99b3afb0bbe13e88 100644 (file)
@@ -82,10 +82,7 @@ static int hsr_newlink(struct net *src_net, struct net_device *dev,
                return -EINVAL;
        }
 
-       if (!data[IFLA_HSR_MULTICAST_SPEC])
-               multicast_spec = 0;
-       else
-               multicast_spec = nla_get_u8(data[IFLA_HSR_MULTICAST_SPEC]);
+       multicast_spec = nla_get_u8_default(data[IFLA_HSR_MULTICAST_SPEC], 0);
 
        if (data[IFLA_HSR_PROTOCOL])
                proto = nla_get_u8(data[IFLA_HSR_PROTOCOL]);
index 29bf97640166451a616231fcf90c4b88644d50ed..74ef0a310afbb3a0754a15144a0df531d05743b9 100644 (file)
@@ -202,10 +202,7 @@ int ieee802154_associate_req(struct sk_buff *skb, struct genl_info *info)
        addr.pan_id = nla_get_shortaddr(
                        info->attrs[IEEE802154_ATTR_COORD_PAN_ID]);
 
-       if (info->attrs[IEEE802154_ATTR_PAGE])
-               page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
-       else
-               page = 0;
+       page = nla_get_u8_default(info->attrs[IEEE802154_ATTR_PAGE], 0);
 
        ret = ieee802154_mlme_ops(dev)->assoc_req(dev, &addr,
                        nla_get_u8(info->attrs[IEEE802154_ATTR_CHANNEL]),
@@ -338,10 +335,7 @@ int ieee802154_start_req(struct sk_buff *skb, struct genl_info *info)
        blx = nla_get_u8(info->attrs[IEEE802154_ATTR_BAT_EXT]);
        coord_realign = nla_get_u8(info->attrs[IEEE802154_ATTR_COORD_REALIGN]);
 
-       if (info->attrs[IEEE802154_ATTR_PAGE])
-               page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
-       else
-               page = 0;
+       page = nla_get_u8_default(info->attrs[IEEE802154_ATTR_PAGE], 0);
 
        if (addr.short_addr == cpu_to_le16(IEEE802154_ADDR_BROADCAST)) {
                ieee802154_nl_start_confirm(dev, IEEE802154_NO_SHORT_ADDRESS);
@@ -388,10 +382,7 @@ int ieee802154_scan_req(struct sk_buff *skb, struct genl_info *info)
        channels = nla_get_u32(info->attrs[IEEE802154_ATTR_CHANNELS]);
        duration = nla_get_u8(info->attrs[IEEE802154_ATTR_DURATION]);
 
-       if (info->attrs[IEEE802154_ATTR_PAGE])
-               page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
-       else
-               page = 0;
+       page = nla_get_u8_default(info->attrs[IEEE802154_ATTR_PAGE], 0);
 
        ret = ieee802154_mlme_ops(dev)->scan_req(dev, type, channels,
                                                 page, duration);
index 7eb37de3add22275d4266cd0cd662a43a741d694..5a024ca60d3590d9378b03e1cf0912c531c9e760 100644 (file)
@@ -1438,22 +1438,18 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info)
        }
 
        /* Use current page by default */
-       if (info->attrs[NL802154_ATTR_PAGE])
-               request->page = nla_get_u8(info->attrs[NL802154_ATTR_PAGE]);
-       else
-               request->page = wpan_phy->current_page;
+       request->page = nla_get_u8_default(info->attrs[NL802154_ATTR_PAGE],
+                                          wpan_phy->current_page);
 
        /* Scan all supported channels by default */
-       if (info->attrs[NL802154_ATTR_SCAN_CHANNELS])
-               request->channels = nla_get_u32(info->attrs[NL802154_ATTR_SCAN_CHANNELS]);
-       else
-               request->channels = wpan_phy->supported.channels[request->page];
+       request->channels =
+               nla_get_u32_default(info->attrs[NL802154_ATTR_SCAN_CHANNELS],
+                                   wpan_phy->supported.channels[request->page]);
 
        /* Use maximum duration order by default */
-       if (info->attrs[NL802154_ATTR_SCAN_DURATION])
-               request->duration = nla_get_u8(info->attrs[NL802154_ATTR_SCAN_DURATION]);
-       else
-               request->duration = IEEE802154_MAX_SCAN_DURATION;
+       request->duration =
+               nla_get_u8_default(info->attrs[NL802154_ATTR_SCAN_DURATION],
+                                  IEEE802154_MAX_SCAN_DURATION);
 
        err = rdev_trigger_scan(rdev, request);
        if (err) {
@@ -1598,10 +1594,8 @@ nl802154_send_beacons(struct sk_buff *skb, struct genl_info *info)
        request->wpan_phy = wpan_phy;
 
        /* Use maximum duration order by default */
-       if (info->attrs[NL802154_ATTR_BEACON_INTERVAL])
-               request->interval = nla_get_u8(info->attrs[NL802154_ATTR_BEACON_INTERVAL]);
-       else
-               request->interval = IEEE802154_MAX_SCAN_DURATION;
+       request->interval = nla_get_u8_default(info->attrs[NL802154_ATTR_BEACON_INTERVAL],
+                                              IEEE802154_MAX_SCAN_DURATION);
 
        err = rdev_send_beacons(rdev, request);
        if (err) {
index f58f39a9ee874fead1b159ad08a68254c310be31..c8b3cf5fba4c02941b919687a6a657cf68f5f99a 100644 (file)
@@ -926,8 +926,7 @@ static struct in_ifaddr *inet_rtm_to_ifa(struct net *net, struct nlmsghdr *nlh,
 
        ifa->ifa_prefixlen = ifm->ifa_prefixlen;
        ifa->ifa_mask = inet_make_mask(ifm->ifa_prefixlen);
-       ifa->ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) :
-                                        ifm->ifa_flags;
+       ifa->ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
        ifa->ifa_scope = ifm->ifa_scope;
        ifa->ifa_local = nla_get_in_addr(tb[IFA_LOCAL]);
        ifa->ifa_address = nla_get_in_addr(tb[IFA_ADDRESS]);
index 99e7cd0531d912d12ad1b7109ec348f458ba1679..c58dd78509a271bcd80bfe35ac9268ab45768644 100644 (file)
@@ -2546,9 +2546,9 @@ static int ipmr_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
        if (err < 0)
                goto errout;
 
-       src = tb[RTA_SRC] ? nla_get_in_addr(tb[RTA_SRC]) : 0;
-       grp = tb[RTA_DST] ? nla_get_in_addr(tb[RTA_DST]) : 0;
-       tableid = tb[RTA_TABLE] ? nla_get_u32(tb[RTA_TABLE]) : 0;
+       src = nla_get_in_addr_default(tb[RTA_SRC], 0);
+       grp = nla_get_in_addr_default(tb[RTA_DST], 0);
+       tableid = nla_get_u32_default(tb[RTA_TABLE], 0);
 
        mrt = ipmr_get_table(net, tableid ? tableid : RT_TABLE_DEFAULT);
        if (!mrt) {
index 570e450e008c42e9ef4ef1c5c4807d15b4aaee7c..09a3d73b45baa1e18f656bb4354bf2c9f707fe13 100644 (file)
@@ -3247,12 +3247,8 @@ static int nh_valid_get_del_req(const struct nlmsghdr *nlh,
                return -EINVAL;
        }
 
-       if (op_flags) {
-               if (tb[NHA_OP_FLAGS])
-                       *op_flags = nla_get_u32(tb[NHA_OP_FLAGS]);
-               else
-                       *op_flags = 0;
-       }
+       if (op_flags)
+               *op_flags = nla_get_u32_default(tb[NHA_OP_FLAGS], 0);
 
        return 0;
 }
@@ -3433,10 +3429,7 @@ static int nh_valid_dump_req(const struct nlmsghdr *nlh,
        if (err < 0)
                return err;
 
-       if (tb[NHA_OP_FLAGS])
-               filter->op_flags = nla_get_u32(tb[NHA_OP_FLAGS]);
-       else
-               filter->op_flags = 0;
+       filter->op_flags = nla_get_u32_default(tb[NHA_OP_FLAGS], 0);
 
        return __nh_valid_dump_req(nlh, tb, filter, cb->extack);
 }
index 763398e08b7dca6fef7436e0077c49dca5c4f7a6..4c5e773002fefac62087b6894a577511be3c96f6 100644 (file)
@@ -3231,10 +3231,10 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
                return err;
 
        rtm = nlmsg_data(nlh);
-       src = tb[RTA_SRC] ? nla_get_in_addr(tb[RTA_SRC]) : 0;
-       dst = tb[RTA_DST] ? nla_get_in_addr(tb[RTA_DST]) : 0;
-       iif = tb[RTA_IIF] ? nla_get_u32(tb[RTA_IIF]) : 0;
-       mark = tb[RTA_MARK] ? nla_get_u32(tb[RTA_MARK]) : 0;
+       src = nla_get_in_addr_default(tb[RTA_SRC], 0);
+       dst = nla_get_in_addr_default(tb[RTA_DST], 0);
+       iif = nla_get_u32_default(tb[RTA_IIF], 0);
+       mark = nla_get_u32_default(tb[RTA_MARK], 0);
        if (tb[RTA_UID])
                uid = make_kuid(current_user_ns(), nla_get_u32(tb[RTA_UID]));
        else
@@ -3260,7 +3260,7 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
        fl4.daddr = dst;
        fl4.saddr = src;
        fl4.flowi4_tos = rtm->rtm_tos & INET_DSCP_MASK;
-       fl4.flowi4_oif = tb[RTA_OIF] ? nla_get_u32(tb[RTA_OIF]) : 0;
+       fl4.flowi4_oif = nla_get_u32_default(tb[RTA_OIF], 0);
        fl4.flowi4_mark = mark;
        fl4.flowi4_uid = uid;
        if (sport)
index d0a99710d65de7afe5a5db3c2dc8bf6346dabbb3..96b5b2b0d5072902a8c2939fb3a32dc5648b624d 100644 (file)
@@ -4793,7 +4793,7 @@ inet6_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh,
        if (!pfx)
                return -EINVAL;
 
-       ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) : ifm->ifa_flags;
+       ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
 
        /* We ignore other flags so far. */
        ifa_flags &= IFA_F_MANAGETEMPADDR;
@@ -5018,10 +5018,7 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh,
                return -ENODEV;
        }
 
-       if (tb[IFA_FLAGS])
-               cfg.ifa_flags = nla_get_u32(tb[IFA_FLAGS]);
-       else
-               cfg.ifa_flags = ifm->ifa_flags;
+       cfg.ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
 
        /* We ignore other flags so far. */
        cfg.ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS |
index 534a4498e280d7603d95dd500f04158d5ad889a4..7646e401c630439c972b35a621cb9311fec19bec 100644 (file)
@@ -105,16 +105,11 @@ static int parse_nl_config(struct genl_info *info,
                xp->ip.locator_match.v64 = (__force __be64)nla_get_u64(
                        info->attrs[ILA_ATTR_LOCATOR_MATCH]);
 
-       if (info->attrs[ILA_ATTR_CSUM_MODE])
-               xp->ip.csum_mode = nla_get_u8(info->attrs[ILA_ATTR_CSUM_MODE]);
-       else
-               xp->ip.csum_mode = ILA_CSUM_NO_ACTION;
-
-       if (info->attrs[ILA_ATTR_IDENT_TYPE])
-               xp->ip.ident_type = nla_get_u8(
-                               info->attrs[ILA_ATTR_IDENT_TYPE]);
-       else
-               xp->ip.ident_type = ILA_ATYPE_USE_FORMAT;
+       xp->ip.csum_mode = nla_get_u8_default(info->attrs[ILA_ATTR_CSUM_MODE],
+                                             ILA_CSUM_NO_ACTION);
+
+       xp->ip.ident_type = nla_get_u8_default(info->attrs[ILA_ATTR_IDENT_TYPE],
+                                              ILA_ATYPE_USE_FORMAT);
 
        if (info->attrs[ILA_ATTR_IFINDEX])
                xp->ifindex = nla_get_s32(info->attrs[ILA_ATTR_IFINDEX]);
index 08c929513065772dca3666c92326a47f2dae0631..a84d332f952f66fb59554ee64057859d2c3f8c09 100644 (file)
@@ -135,15 +135,11 @@ static int ioam6_genl_addns(struct sk_buff *skb, struct genl_info *info)
 
        ns->id = id;
 
-       if (!info->attrs[IOAM6_ATTR_NS_DATA])
-               data32 = IOAM6_U32_UNAVAILABLE;
-       else
-               data32 = nla_get_u32(info->attrs[IOAM6_ATTR_NS_DATA]);
-
-       if (!info->attrs[IOAM6_ATTR_NS_DATA_WIDE])
-               data64 = IOAM6_U64_UNAVAILABLE;
-       else
-               data64 = nla_get_u64(info->attrs[IOAM6_ATTR_NS_DATA_WIDE]);
+       data32 = nla_get_u32_default(info->attrs[IOAM6_ATTR_NS_DATA],
+                                    IOAM6_U32_UNAVAILABLE);
+
+       data64 = nla_get_u64_default(info->attrs[IOAM6_ATTR_NS_DATA_WIDE],
+                                    IOAM6_U64_UNAVAILABLE);
 
        ns->data = cpu_to_be32(data32);
        ns->data_wide = cpu_to_be64(data64);
index beb6b4cfc551cf603f2d9234493b0c00cb26aee1..9d8422e350f8d5702c6abe3484fdc669c7f297b5 100644 (file)
@@ -142,10 +142,8 @@ static int ioam6_build_state(struct net *net, struct nlattr *nla,
                }
        }
 
-       if (!tb[IOAM6_IPTUNNEL_MODE])
-               mode = IOAM6_IPTUNNEL_MODE_INLINE;
-       else
-               mode = nla_get_u8(tb[IOAM6_IPTUNNEL_MODE]);
+       mode = nla_get_u8_default(tb[IOAM6_IPTUNNEL_MODE],
+                                 IOAM6_IPTUNNEL_MODE_INLINE);
 
        if (tb[IOAM6_IPTUNNEL_SRC] && mode == IOAM6_IPTUNNEL_MODE_INLINE) {
                NL_SET_ERR_MSG(extack, "no tunnel src expected with this mode");
index 8add0f45aa52232215b41176e2c88274364ce8ae..d66f58932a793e88bd9b4a58769897c724eca4c9 100644 (file)
@@ -2560,7 +2560,7 @@ static int ip6mr_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
                src = nla_get_in6_addr(tb[RTA_SRC]);
        if (tb[RTA_DST])
                grp = nla_get_in6_addr(tb[RTA_DST]);
-       tableid = tb[RTA_TABLE] ? nla_get_u32(tb[RTA_TABLE]) : 0;
+       tableid = nla_get_u32_default(tb[RTA_TABLE], 0);
 
        mrt = ip6mr_get_table(net, tableid ?: RT_TABLE_DEFAULT);
        if (!mrt) {
index dc6ddc4abbe213adb7f056d2a4280510411710e8..7d13110ce188278de0676520535fc7346d9ca0e3 100644 (file)
@@ -3662,10 +3662,7 @@ static int ip_vs_genl_parse_dest(struct ip_vs_dest_user_kern *udest,
        nla_memcpy(&udest->addr, nla_addr, sizeof(udest->addr));
        udest->port = nla_get_be16(nla_port);
 
-       if (nla_addr_family)
-               udest->af = nla_get_u16(nla_addr_family);
-       else
-               udest->af = 0;
+       udest->af = nla_get_u16_default(nla_addr_family, 0);
 
        /* If a full entry was requested, check for the additional fields */
        if (full_entry) {
index 4085c436e30628832d8a964439f0ae9c85f78204..aad84aabd7f1d17ef90ed5d05226806cd033bf5d 100644 (file)
@@ -1090,10 +1090,8 @@ static int nf_nat_ipv4_nlattr_to_range(struct nlattr *tb[],
                range->flags |= NF_NAT_RANGE_MAP_IPS;
        }
 
-       if (tb[CTA_NAT_V4_MAXIP])
-               range->max_addr.ip = nla_get_be32(tb[CTA_NAT_V4_MAXIP]);
-       else
-               range->max_addr.ip = range->min_addr.ip;
+       range->max_addr.ip = nla_get_be32_default(tb[CTA_NAT_V4_MAXIP],
+                                                 range->min_addr.ip);
 
        return 0;
 }
index 5c6ed68cc6e058aa29d31ce940ffee58ce4646ff..681301b46aa40bdd079585d214c47ca280d7e1ff 100644 (file)
@@ -497,10 +497,7 @@ static int nft_tunnel_obj_init(const struct nft_ctx *ctx,
        }
        if (tb[NFTA_TUNNEL_KEY_TOS])
                info.key.tos = nla_get_u8(tb[NFTA_TUNNEL_KEY_TOS]);
-       if (tb[NFTA_TUNNEL_KEY_TTL])
-               info.key.ttl = nla_get_u8(tb[NFTA_TUNNEL_KEY_TTL]);
-       else
-               info.key.ttl = U8_MAX;
+       info.key.ttl = nla_get_u8_default(tb[NFTA_TUNNEL_KEY_TTL], U8_MAX);
 
        if (tb[NFTA_TUNNEL_KEY_OPTS]) {
                err = nft_tunnel_obj_opts_init(ctx, tb[NFTA_TUNNEL_KEY_OPTS],
index 689eaa2afbecd73118f9ed2ec10ba2be5ce39c4f..079fe72a6384399720b9193e464e6e142689b652 100644 (file)
@@ -107,11 +107,9 @@ static int netlbl_mgmt_add_common(struct genl_info *info,
 
        switch (entry->def.type) {
        case NETLBL_NLTYPE_UNLABELED:
-               if (info->attrs[NLBL_MGMT_A_FAMILY])
-                       entry->family =
-                               nla_get_u16(info->attrs[NLBL_MGMT_A_FAMILY]);
-               else
-                       entry->family = AF_UNSPEC;
+               entry->family =
+                       nla_get_u16_default(info->attrs[NLBL_MGMT_A_FAMILY],
+                                           AF_UNSPEC);
                break;
        case NETLBL_NLTYPE_CIPSOV4:
                if (!info->attrs[NLBL_MGMT_A_CV4DOI])
@@ -601,10 +599,7 @@ static int netlbl_mgmt_listdef(struct sk_buff *skb, struct genl_info *info)
        struct netlbl_dom_map *entry;
        u16 family;
 
-       if (info->attrs[NLBL_MGMT_A_FAMILY])
-               family = nla_get_u16(info->attrs[NLBL_MGMT_A_FAMILY]);
-       else
-               family = AF_INET;
+       family = nla_get_u16_default(info->attrs[NLBL_MGMT_A_FAMILY], AF_INET);
 
        ans_skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
        if (ans_skb == NULL)
index 78d9961fcd446da5e1be0c0d1b9e0936020517b0..225f6048867f4a396f6411c50b0cdf9437303e97 100644 (file)
@@ -1828,8 +1828,7 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct genl_info *info)
        parms.dp = dp;
        parms.port_no = OVSP_LOCAL;
        parms.upcall_portids = a[OVS_DP_ATTR_UPCALL_PID];
-       parms.desired_ifindex = a[OVS_DP_ATTR_IFINDEX]
-               ? nla_get_s32(a[OVS_DP_ATTR_IFINDEX]) : 0;
+       parms.desired_ifindex = nla_get_s32_default(a[OVS_DP_ATTR_IFINDEX], 0);
 
        /* So far only local changes have been made, now need the lock. */
        ovs_lock();
@@ -2266,8 +2265,7 @@ static int ovs_vport_cmd_new(struct sk_buff *skb, struct genl_info *info)
        if (a[OVS_VPORT_ATTR_IFINDEX] && parms.type != OVS_VPORT_TYPE_INTERNAL)
                return -EOPNOTSUPP;
 
-       port_no = a[OVS_VPORT_ATTR_PORT_NO]
-               ? nla_get_u32(a[OVS_VPORT_ATTR_PORT_NO]) : 0;
+       port_no = nla_get_u32_default(a[OVS_VPORT_ATTR_PORT_NO], 0);
        if (port_no >= DP_MAX_PORTS)
                return -EFBIG;
 
@@ -2304,8 +2302,8 @@ restart:
        parms.dp = dp;
        parms.port_no = port_no;
        parms.upcall_portids = a[OVS_VPORT_ATTR_UPCALL_PID];
-       parms.desired_ifindex = a[OVS_VPORT_ATTR_IFINDEX]
-               ? nla_get_s32(a[OVS_VPORT_ATTR_IFINDEX]) : 0;
+       parms.desired_ifindex = nla_get_s32_default(a[OVS_VPORT_ATTR_IFINDEX],
+                                                   0);
 
        vport = new_vport(&parms);
        err = PTR_ERR(vport);
index 729ef582a3a8b85e00a09c300570d74a7b28b693..881ddd3696d540a9ce368c6e1815a08f1c5dbb22 100644 (file)
@@ -1938,7 +1938,7 @@ int ovs_nla_get_identifier(struct sw_flow_id *sfid, const struct nlattr *ufid,
 
 u32 ovs_nla_get_ufid_flags(const struct nlattr *attr)
 {
-       return attr ? nla_get_u32(attr) : 0;
+       return nla_get_u32_default(attr, 0);
 }
 
 /**
index 2197eb625658045619fcd9bba71968df89229c48..c02f39efc6efead9e18908bdb307872445c6b8fd 100644 (file)
@@ -1183,9 +1183,8 @@ static int tcf_ct_fill_params_nat(struct tcf_ct_params *p,
                range->min_addr.ip =
                        nla_get_in_addr(tb[TCA_CT_NAT_IPV4_MIN]);
 
-               range->max_addr.ip = max_attr ?
-                                    nla_get_in_addr(max_attr) :
-                                    range->min_addr.ip;
+               range->max_addr.ip =
+                       nla_get_in_addr_default(max_attr, range->min_addr.ip);
        } else if (tb[TCA_CT_NAT_IPV6_MIN]) {
                struct nlattr *max_attr = tb[TCA_CT_NAT_IPV6_MAX];
 
@@ -1314,8 +1313,9 @@ static int tcf_ct_fill_params(struct net *net,
                        err = -EINVAL;
                        goto err;
                }
-               family = tb[TCA_CT_HELPER_FAMILY] ? nla_get_u8(tb[TCA_CT_HELPER_FAMILY]) : AF_INET;
-               proto = tb[TCA_CT_HELPER_PROTO] ? nla_get_u8(tb[TCA_CT_HELPER_PROTO]) : IPPROTO_TCP;
+               family = nla_get_u8_default(tb[TCA_CT_HELPER_FAMILY], AF_INET);
+               proto = nla_get_u8_default(tb[TCA_CT_HELPER_PROTO],
+                                          IPPROTO_TCP);
                err = nf_ct_add_helper(tmpl, name, family, proto,
                                       p->ct_action & TCA_CT_ACT_NAT, &p->helper);
                if (err) {
index 5dd41a012110e04d4e7b199367a84fa1905156b3..5b1241ddc75851998d93cd533acd74d7688410ac 100644 (file)
@@ -197,8 +197,9 @@ static int tcf_ctinfo_init(struct net *net, struct nlattr *nla,
                                            "dscp mask must be 6 contiguous bits");
                        return -EINVAL;
                }
-               dscpstatemask = tb[TCA_CTINFO_PARMS_DSCP_STATEMASK] ?
-                       nla_get_u32(tb[TCA_CTINFO_PARMS_DSCP_STATEMASK]) : 0;
+               dscpstatemask =
+                       nla_get_u32_default(tb[TCA_CTINFO_PARMS_DSCP_STATEMASK],
+                                           0);
                /* mask & statemask must not overlap */
                if (dscpmask & dscpstatemask) {
                        NL_SET_ERR_MSG_ATTR(extack,
@@ -243,8 +244,7 @@ static int tcf_ctinfo_init(struct net *net, struct nlattr *nla,
        }
 
        cp_new->net = net;
-       cp_new->zone = tb[TCA_CTINFO_ZONE] ?
-                       nla_get_u16(tb[TCA_CTINFO_ZONE]) : 0;
+       cp_new->zone = nla_get_u16_default(tb[TCA_CTINFO_ZONE], 0);
        if (dscpmask) {
                cp_new->dscpmask = dscpmask;
                cp_new->dscpmaskshift = dscpmaskshift;
index 1dd74125398a0f41751fab72397f006b2c63d1db..91c0ec729823be812561063b0828249fae94689e 100644 (file)
@@ -190,15 +190,10 @@ static int fill_gate_entry(struct nlattr **tb, struct tcfg_gate_entry *entry,
 
        entry->interval = interval;
 
-       if (tb[TCA_GATE_ENTRY_IPV])
-               entry->ipv = nla_get_s32(tb[TCA_GATE_ENTRY_IPV]);
-       else
-               entry->ipv = -1;
+       entry->ipv = nla_get_s32_default(tb[TCA_GATE_ENTRY_IPV], -1);
 
-       if (tb[TCA_GATE_ENTRY_MAX_OCTETS])
-               entry->maxoctets = nla_get_s32(tb[TCA_GATE_ENTRY_MAX_OCTETS]);
-       else
-               entry->maxoctets = -1;
+       entry->maxoctets = nla_get_s32_default(tb[TCA_GATE_ENTRY_MAX_OCTETS],
+                                              -1);
 
        return 0;
 }
index 44a37a71ae9236cc1967239d6db8aba74d77355c..9f86f4e666d3363b83cfc883136b2c4a231479a4 100644 (file)
@@ -288,16 +288,14 @@ static int tcf_mpls_init(struct net *net, struct nlattr *nla,
        }
 
        p->tcfm_action = parm->m_action;
-       p->tcfm_label = tb[TCA_MPLS_LABEL] ? nla_get_u32(tb[TCA_MPLS_LABEL]) :
-                                            ACT_MPLS_LABEL_NOT_SET;
-       p->tcfm_tc = tb[TCA_MPLS_TC] ? nla_get_u8(tb[TCA_MPLS_TC]) :
-                                      ACT_MPLS_TC_NOT_SET;
-       p->tcfm_ttl = tb[TCA_MPLS_TTL] ? nla_get_u8(tb[TCA_MPLS_TTL]) :
-                                        mpls_ttl;
-       p->tcfm_bos = tb[TCA_MPLS_BOS] ? nla_get_u8(tb[TCA_MPLS_BOS]) :
-                                        ACT_MPLS_BOS_NOT_SET;
-       p->tcfm_proto = tb[TCA_MPLS_PROTO] ? nla_get_be16(tb[TCA_MPLS_PROTO]) :
-                                            htons(ETH_P_MPLS_UC);
+       p->tcfm_label = nla_get_u32_default(tb[TCA_MPLS_LABEL],
+                                           ACT_MPLS_LABEL_NOT_SET);
+       p->tcfm_tc = nla_get_u8_default(tb[TCA_MPLS_TC], ACT_MPLS_TC_NOT_SET);
+       p->tcfm_ttl = nla_get_u8_default(tb[TCA_MPLS_TTL], mpls_ttl);
+       p->tcfm_bos = nla_get_u8_default(tb[TCA_MPLS_BOS],
+                                        ACT_MPLS_BOS_NOT_SET);
+       p->tcfm_proto = nla_get_be16_default(tb[TCA_MPLS_PROTO],
+                                            htons(ETH_P_MPLS_UC));
 
        spin_lock_bh(&m->tcf_lock);
        goto_ch = tcf_action_set_ctrlact(*a, parm->action, goto_ch);
index 8555125ed34d83eaadd36391da869bd46f2372fe..a214ed68114206ed0770725ab91d867bab35aa09 100644 (file)
@@ -167,8 +167,7 @@ static int tcf_police_init(struct net *net, struct nlattr *nla,
        }
        if (R_tab) {
                new->rate_present = true;
-               rate64 = tb[TCA_POLICE_RATE64] ?
-                        nla_get_u64(tb[TCA_POLICE_RATE64]) : 0;
+               rate64 = nla_get_u64_default(tb[TCA_POLICE_RATE64], 0);
                psched_ratecfg_precompute(&new->rate, &R_tab->rate, rate64);
                qdisc_put_rtab(R_tab);
        } else {
@@ -176,8 +175,7 @@ static int tcf_police_init(struct net *net, struct nlattr *nla,
        }
        if (P_tab) {
                new->peak_present = true;
-               prate64 = tb[TCA_POLICE_PEAKRATE64] ?
-                         nla_get_u64(tb[TCA_POLICE_PEAKRATE64]) : 0;
+               prate64 = nla_get_u64_default(tb[TCA_POLICE_PEAKRATE64], 0);
                psched_ratecfg_precompute(&new->peak, &P_tab->rate, prate64);
                qdisc_put_rtab(P_tab);
        } else {
index 2a7d856cc33408a376375fe084b5efdc16305518..04942f8c62e0f851deb4843d9ba28ecd1c2c4c6d 100644 (file)
@@ -2297,7 +2297,7 @@ replay:
        }
        block->classid = parent;
 
-       chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
+       chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
        if (chain_index > TC_ACT_EXT_VAL_MASK) {
                NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
                err = -EINVAL;
@@ -2509,7 +2509,7 @@ static int tc_del_tfilter(struct sk_buff *skb, struct nlmsghdr *n,
                goto errout;
        }
 
-       chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
+       chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
        if (chain_index > TC_ACT_EXT_VAL_MASK) {
                NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
                err = -EINVAL;
@@ -2664,7 +2664,7 @@ static int tc_get_tfilter(struct sk_buff *skb, struct nlmsghdr *n,
                goto errout;
        }
 
-       chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
+       chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
        if (chain_index > TC_ACT_EXT_VAL_MASK) {
                NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
                err = -EINVAL;
@@ -3104,7 +3104,7 @@ replay:
        if (IS_ERR(block))
                return PTR_ERR(block);
 
-       chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
+       chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
        if (chain_index > TC_ACT_EXT_VAL_MASK) {
                NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
                err = -EINVAL;
index 91072010923d1825e811adbb8ea2b3035dda57b3..1e940ad0d2fad122508fdc178fb7a5bcd6b80c6e 100644 (file)
@@ -356,7 +356,7 @@ static int choke_change(struct Qdisc *sch, struct nlattr *opt,
            tb[TCA_CHOKE_STAB] == NULL)
                return -EINVAL;
 
-       max_P = tb[TCA_CHOKE_MAX_P] ? nla_get_u32(tb[TCA_CHOKE_MAX_P]) : 0;
+       max_P = nla_get_u32_default(tb[TCA_CHOKE_MAX_P], 0);
 
        ctl = nla_data(tb[TCA_CHOKE_PARMS]);
        stab = nla_data(tb[TCA_CHOKE_STAB]);
index 79ba9dc702541e95b9df2eee9ed6fe048b4330b2..7d2151c62c4a1452ec4914f0d25a2648f886af49 100644 (file)
@@ -668,7 +668,7 @@ static int gred_change(struct Qdisc *sch, struct nlattr *opt,
                return -EINVAL;
        }
 
-       max_P = tb[TCA_GRED_MAX_P] ? nla_get_u32(tb[TCA_GRED_MAX_P]) : 0;
+       max_P = nla_get_u32_default(tb[TCA_GRED_MAX_P], 0);
 
        ctl = nla_data(tb[TCA_GRED_PARMS]);
        stab = nla_data(tb[TCA_GRED_STAB]);
index ff3de37874e4b34f6f78eefe72bd51b517a6b77e..c31bc5489bddc0bd04ab27f7e88c54ec31588680 100644 (file)
@@ -1810,8 +1810,8 @@ static int htb_change_class(struct Qdisc *sch, u32 classid,
                qdisc_put_rtab(qdisc_get_rtab(&hopt->ceil, tb[TCA_HTB_CTAB],
                                              NULL));
 
-       rate64 = tb[TCA_HTB_RATE64] ? nla_get_u64(tb[TCA_HTB_RATE64]) : 0;
-       ceil64 = tb[TCA_HTB_CEIL64] ? nla_get_u64(tb[TCA_HTB_CEIL64]) : 0;
+       rate64 = nla_get_u64_default(tb[TCA_HTB_RATE64], 0);
+       ceil64 = nla_get_u64_default(tb[TCA_HTB_CEIL64], 0);
 
        if (!cl) {              /* new class */
                struct net_device *dev = qdisc_dev(sch);
index d584c0c25899cc9837a5a7880ea13cf2787937af..6a07cdbdb9e12ea9ffa074f00314db49eff3a3d4 100644 (file)
@@ -421,10 +421,7 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
        if (err < 0)
                return err;
 
-       if (tb[TCA_QFQ_WEIGHT])
-               weight = nla_get_u32(tb[TCA_QFQ_WEIGHT]);
-       else
-               weight = 1;
+       weight = nla_get_u32_default(tb[TCA_QFQ_WEIGHT], 1);
 
        if (tb[TCA_QFQ_LMAX]) {
                lmax = nla_get_u32(tb[TCA_QFQ_LMAX]);
index b5f096588fae6ead0743bf1c811bfd3b7b7430b1..6029bc29b51e5d5adfa12c68225691b68648b2dc 100644 (file)
@@ -248,7 +248,7 @@ static int __red_change(struct Qdisc *sch, struct nlattr **tb,
            tb[TCA_RED_STAB] == NULL)
                return -EINVAL;
 
-       max_P = tb[TCA_RED_MAX_P] ? nla_get_u32(tb[TCA_RED_MAX_P]) : 0;
+       max_P = nla_get_u32_default(tb[TCA_RED_MAX_P], 0);
 
        ctl = nla_data(tb[TCA_RED_PARMS]);
        stab = nla_data(tb[TCA_RED_STAB]);
index 8623dc0bafc09b1ab590976a0986d19d2e63a088..a68e17891b0b51d01eca9b389db72e39cc0c34d6 100644 (file)
@@ -1828,7 +1828,7 @@ static int taprio_change(struct Qdisc *sch, struct nlattr *opt,
         * zero; (2) the 'flags' of a "running" taprio instance cannot be
         * changed.
         */
-       taprio_flags = tb[TCA_TAPRIO_ATTR_FLAGS] ? nla_get_u32(tb[TCA_TAPRIO_ATTR_FLAGS]) : 0;
+       taprio_flags = nla_get_u32_default(tb[TCA_TAPRIO_ATTR_FLAGS], 0);
 
        /* txtime-assist and full offload are mutually exclusive */
        if ((taprio_flags & TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST) &&
index 1ac8a196f376ebb682dcd49169eafad548376c25..8cc9b968dbd8f43d4cf82ca149761428385082d8 100644 (file)
@@ -1286,10 +1286,7 @@ static unsigned int nl80211_link_id(struct nlattr **attrs)
 {
        struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID];
 
-       if (!linkid)
-               return 0;
-
-       return nla_get_u8(linkid);
+       return nla_get_u8_default(linkid, 0);
 }
 
 static int nl80211_link_id_or_invalid(struct nlattr **attrs)
@@ -3414,11 +3411,9 @@ static int _nl80211_parse_chandef(struct cfg80211_registered_device *rdev,
                if (attrs[NL80211_ATTR_CENTER_FREQ1]) {
                        chandef->center_freq1 =
                                nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]);
-                       if (attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET])
-                               chandef->freq1_offset = nla_get_u32(
-                                     attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]);
-                       else
-                               chandef->freq1_offset = 0;
+                       chandef->freq1_offset =
+                               nla_get_u32_default(attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET],
+                                                   0);
                }
                if (attrs[NL80211_ATTR_CENTER_FREQ2])
                        chandef->center_freq2 =
@@ -8265,11 +8260,9 @@ static int nl80211_req_set_reg(struct sk_buff *skb, struct genl_info *info)
        if (unlikely(!rcu_access_pointer(cfg80211_regdomain)))
                return -EINPROGRESS;
 
-       if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE])
-               user_reg_hint_type =
-                 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]);
-       else
-               user_reg_hint_type = NL80211_USER_REG_HINT_USER;
+       user_reg_hint_type =
+               nla_get_u32_default(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE],
+                                   NL80211_USER_REG_HINT_USER);
 
        switch (user_reg_hint_type) {
        case NL80211_USER_REG_HINT_USER:
@@ -11087,11 +11080,9 @@ static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev,
                        nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]);
        }
 
-       if (info->attrs[NL80211_ATTR_SAE_PWE])
-               settings->sae_pwe =
-                       nla_get_u8(info->attrs[NL80211_ATTR_SAE_PWE]);
-       else
-               settings->sae_pwe = NL80211_SAE_PWE_UNSPECIFIED;
+       settings->sae_pwe =
+               nla_get_u8_default(info->attrs[NL80211_ATTR_SAE_PWE],
+                                  NL80211_SAE_PWE_UNSPECIFIED);
 
        return 0;
 }
@@ -12347,10 +12338,8 @@ static int nl80211_disconnect(struct sk_buff *skb, struct genl_info *info)
            dev->ieee80211_ptr->conn_owner_nlportid != info->snd_portid)
                return -EPERM;
 
-       if (!info->attrs[NL80211_ATTR_REASON_CODE])
-               reason = WLAN_REASON_DEAUTH_LEAVING;
-       else
-               reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]);
+       reason = nla_get_u16_default(info->attrs[NL80211_ATTR_REASON_CODE],
+                                    WLAN_REASON_DEAUTH_LEAVING);
 
        if (reason == 0)
                return -EINVAL;
@@ -13696,10 +13685,7 @@ static int nl80211_parse_wowlan_tcp(struct cfg80211_registered_device *rdev,
        cfg->dst = nla_get_in_addr(tb[NL80211_WOWLAN_TCP_DST_IPV4]);
        memcpy(cfg->dst_mac, nla_data(tb[NL80211_WOWLAN_TCP_DST_MAC]),
               ETH_ALEN);
-       if (tb[NL80211_WOWLAN_TCP_SRC_PORT])
-               port = nla_get_u16(tb[NL80211_WOWLAN_TCP_SRC_PORT]);
-       else
-               port = 0;
+       port = nla_get_u16_default(tb[NL80211_WOWLAN_TCP_SRC_PORT], 0);
 #ifdef CONFIG_INET
        /* allocate a socket and port for it and use it */
        err = __sock_create(wiphy_net(&rdev->wiphy), PF_INET, SOCK_STREAM,
@@ -13910,11 +13896,9 @@ static int nl80211_set_wowlan(struct sk_buff *skb, struct genl_info *info)
                            pat_len < wowlan->pattern_min_len)
                                goto error;
 
-                       if (!pat_tb[NL80211_PKTPAT_OFFSET])
-                               pkt_offset = 0;
-                       else
-                               pkt_offset = nla_get_u32(
-                                       pat_tb[NL80211_PKTPAT_OFFSET]);
+                       pkt_offset =
+                               nla_get_u32_default(pat_tb[NL80211_PKTPAT_OFFSET],
+                                                   0);
                        if (pkt_offset > wowlan->max_pkt_offset)
                                goto error;
                        new_triggers.patterns[i].pkt_offset = pkt_offset;
@@ -14158,10 +14142,8 @@ static int nl80211_parse_coalesce_rule(struct cfg80211_registered_device *rdev,
                    pat_len < coalesce->pattern_min_len)
                        return -EINVAL;
 
-               if (!pat_tb[NL80211_PKTPAT_OFFSET])
-                       pkt_offset = 0;
-               else
-                       pkt_offset = nla_get_u32(pat_tb[NL80211_PKTPAT_OFFSET]);
+               pkt_offset = nla_get_u32_default(pat_tb[NL80211_PKTPAT_OFFSET],
+                                                0);
                if (pkt_offset > coalesce->max_pkt_offset)
                        return -EINVAL;
                new_rule->patterns[i].pkt_offset = pkt_offset;
index e3b8ce89831abff86310077f760a7296f9608394..e0dd9dfd71c29f0fb02d575a951c1f09081b77c3 100644 (file)
@@ -200,7 +200,7 @@ static int verify_newsa_info(struct xfrm_usersa_info *p,
                             struct netlink_ext_ack *extack)
 {
        int err;
-       u8 sa_dir = attrs[XFRMA_SA_DIR] ? nla_get_u8(attrs[XFRMA_SA_DIR]) : 0;
+       u8 sa_dir = nla_get_u8_default(attrs[XFRMA_SA_DIR], 0);
        u16 family = p->sel.family;
 
        err = -EINVAL;
@@ -767,10 +767,8 @@ static void xfrm_smark_init(struct nlattr **attrs, struct xfrm_mark *m)
 {
        if (attrs[XFRMA_SET_MARK]) {
                m->v = nla_get_u32(attrs[XFRMA_SET_MARK]);
-               if (attrs[XFRMA_SET_MARK_MASK])
-                       m->m = nla_get_u32(attrs[XFRMA_SET_MARK_MASK]);
-               else
-                       m->m = 0xffffffff;
+               m->m = nla_get_u32_default(attrs[XFRMA_SET_MARK_MASK],
+                                          0xffffffff);
        } else {
                m->v = m->m = 0;
        }