From: Jiri Pirko <j...@mellanox.com>

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 <j...@mellanox.com>
---
 net/nfc/netlink.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c
index 17e6ca62f1be..fd9ad534dd9b 100644
--- a/net/nfc/netlink.c
+++ b/net/nfc/netlink.c
@@ -102,22 +102,14 @@ static int nfc_genl_send_target(struct sk_buff *msg, 
struct nfc_target *target,
 
 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,
        },
-- 
2.21.0

Reply via email to