netlink: export policy in extended ACK
[linux-2.6-block.git] / lib / nlattr.c
index 9c99f5daa4d2ada5192038099de17feffbe421ca..74019c8ebf6beec7de2d8fb183992eae6a152c17 100644 (file)
@@ -96,8 +96,8 @@ static int nla_validate_array(const struct nlattr *head, int len, int maxtype,
                        continue;
 
                if (nla_len(entry) < NLA_HDRLEN) {
-                       NL_SET_ERR_MSG_ATTR(extack, entry,
-                                           "Array element too short");
+                       NL_SET_ERR_MSG_ATTR_POL(extack, entry, policy,
+                                               "Array element too short");
                        return -ERANGE;
                }
 
@@ -195,8 +195,8 @@ static int nla_validate_range_unsigned(const struct nla_policy *pt,
                pr_warn_ratelimited("netlink: '%s': attribute type %d has an invalid length.\n",
                                    current->comm, pt->type);
                if (validate & NL_VALIDATE_STRICT_ATTRS) {
-                       NL_SET_ERR_MSG_ATTR(extack, nla,
-                                           "invalid attribute length");
+                       NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                                               "invalid attribute length");
                        return -EINVAL;
                }
 
@@ -208,11 +208,11 @@ static int nla_validate_range_unsigned(const struct nla_policy *pt,
                bool binary = pt->type == NLA_BINARY;
 
                if (binary)
-                       NL_SET_ERR_MSG_ATTR(extack, nla,
-                                           "binary attribute size out of range");
+                       NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                                               "binary attribute size out of range");
                else
-                       NL_SET_ERR_MSG_ATTR(extack, nla,
-                                           "integer out of range");
+                       NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                                               "integer out of range");
 
                return -ERANGE;
        }
@@ -291,8 +291,8 @@ static int nla_validate_int_range_signed(const struct nla_policy *pt,
        nla_get_range_signed(pt, &range);
 
        if (value < range.min || value > range.max) {
-               NL_SET_ERR_MSG_ATTR(extack, nla,
-                                   "integer out of range");
+               NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                                       "integer out of range");
                return -ERANGE;
        }
 
@@ -377,8 +377,8 @@ static int validate_nla(const struct nlattr *nla, int maxtype,
                pr_warn_ratelimited("netlink: '%s': attribute type %d has an invalid length.\n",
                                    current->comm, type);
                if (validate & NL_VALIDATE_STRICT_ATTRS) {
-                       NL_SET_ERR_MSG_ATTR(extack, nla,
-                                           "invalid attribute length");
+                       NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                                               "invalid attribute length");
                        return -EINVAL;
                }
        }
@@ -386,14 +386,14 @@ static int validate_nla(const struct nlattr *nla, int maxtype,
        if (validate & NL_VALIDATE_NESTED) {
                if ((pt->type == NLA_NESTED || pt->type == NLA_NESTED_ARRAY) &&
                    !(nla->nla_type & NLA_F_NESTED)) {
-                       NL_SET_ERR_MSG_ATTR(extack, nla,
-                                           "NLA_F_NESTED is missing");
+                       NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                                               "NLA_F_NESTED is missing");
                        return -EINVAL;
                }
                if (pt->type != NLA_NESTED && pt->type != NLA_NESTED_ARRAY &&
                    pt->type != NLA_UNSPEC && (nla->nla_type & NLA_F_NESTED)) {
-                       NL_SET_ERR_MSG_ATTR(extack, nla,
-                                           "NLA_F_NESTED not expected");
+                       NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                                               "NLA_F_NESTED not expected");
                        return -EINVAL;
                }
        }
@@ -550,7 +550,8 @@ static int validate_nla(const struct nlattr *nla, int maxtype,
 
        return 0;
 out_err:
-       NL_SET_ERR_MSG_ATTR(extack, nla, "Attribute failed policy validation");
+       NL_SET_ERR_MSG_ATTR_POL(extack, nla, pt,
+                               "Attribute failed policy validation");
        return err;
 }