Patchwork netlink: clarify attribute length check documentation

login
register
mail settings
Submitter Johannes Berg
Date Nov. 3, 2011, 10:10 a.m.
Message ID <1320315005.3950.37.camel@jlt3.sipsolutions.net>
Download mbox | patch
Permalink /patch/123429/
State Accepted
Delegated to: David Miller
Headers show

Comments

Johannes Berg - Nov. 3, 2011, 10:10 a.m.
From: Johannes Berg <johannes.berg@intel.com>

The documentation for how the length of attributes
is checked is wrong ("Exact length" isn't true, the
policy checks are for "minimum length") and a bit
misleading. Make it more complete and explain what
really happens.

Cc: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 include/net/netlink.h |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Nov. 4, 2011, 9:48 p.m.
From: Johannes Berg <johannes@sipsolutions.net>
Date: Thu, 03 Nov 2011 11:10:05 +0100

> From: Johannes Berg <johannes.berg@intel.com>
> 
> The documentation for how the length of attributes
> is checked is wrong ("Exact length" isn't true, the
> policy checks are for "minimum length") and a bit
> misleading. Make it more complete and explain what
> really happens.
> 
> Cc: Thomas Graf <tgraf@suug.ch>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

--- a/include/net/netlink.h	2011-11-03 09:26:05.000000000 +0100
+++ b/include/net/netlink.h	2011-11-03 11:01:22.000000000 +0100
@@ -192,8 +192,15 @@  enum {
  *    NLA_NUL_STRING       Maximum length of string (excluding NUL)
  *    NLA_FLAG             Unused
  *    NLA_BINARY           Maximum length of attribute payload
- *    NLA_NESTED_COMPAT    Exact length of structure payload
- *    All other            Exact length of attribute payload
+ *    NLA_NESTED           Don't use `len' field -- length verification is
+ *                         done by checking len of nested header (or empty)
+ *    NLA_NESTED_COMPAT    Minimum length of structure payload
+ *    NLA_U8, NLA_U16,
+ *    NLA_U32, NLA_U64,
+ *    NLA_MSECS            Leaving the length field zero will verify the
+ *                         given type fits, using it verifies minimum length
+ *                         just like "All other"
+ *    All other            Minimum length of attribute payload
  *
  * Example:
  * static const struct nla_policy my_policy[ATTR_MAX+1] = {