net: nfc: have genetlink code to parse the attrs during dumpit
authorJiri Pirko <jiri@mellanox.com>
Sat, 5 Oct 2019 18:04:38 +0000 (20:04 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 6 Oct 2019 13:44:47 +0000 (15:44 +0200)
Benefit from the fact that the generic netlink code can parse the attrs
for dumpit op and avoid need to parse it in the op callback.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/nfc/netlink.c

index 17e6ca6..fd9ad53 100644 (file)
@@ -102,22 +102,14 @@ nla_put_failure:
 
 static struct nfc_dev *__get_device_from_cb(struct netlink_callback *cb)
 {
-       struct nlattr **attrbuf = genl_family_attrbuf(&nfc_genl_family);
+       const struct genl_dumpit_info *info = genl_dumpit_info(cb);
        struct nfc_dev *dev;
-       int rc;
        u32 idx;
 
-       rc = nlmsg_parse_deprecated(cb->nlh,
-                                   GENL_HDRLEN + nfc_genl_family.hdrsize,
-                                   attrbuf, nfc_genl_family.maxattr,
-                                   nfc_genl_policy, NULL);
-       if (rc < 0)
-               return ERR_PTR(rc);
-
-       if (!attrbuf[NFC_ATTR_DEVICE_INDEX])
+       if (!info->attrs[NFC_ATTR_DEVICE_INDEX])
                return ERR_PTR(-EINVAL);
 
-       idx = nla_get_u32(attrbuf[NFC_ATTR_DEVICE_INDEX]);
+       idx = nla_get_u32(info->attrs[NFC_ATTR_DEVICE_INDEX]);
 
        dev = nfc_get_device(idx);
        if (!dev)
@@ -1697,7 +1689,8 @@ static const struct genl_ops nfc_genl_ops[] = {
        },
        {
                .cmd = NFC_CMD_GET_TARGET,
-               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
+               .validate = GENL_DONT_VALIDATE_STRICT |
+                           GENL_DONT_VALIDATE_DUMP_STRICT,
                .dumpit = nfc_genl_dump_targets,
                .done = nfc_genl_dump_targets_done,
        },