net: rtnetlink: Don't export empty RTAX_FEATURES
authorPhil Sutter <phil@nwl.cc>
Tue, 23 Aug 2016 11:14:31 +0000 (13:14 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Aug 2016 00:09:28 +0000 (17:09 -0700)
Since the features bit field has bits for internal only use as well, it
may happen that the kernel exports RTAX_FEATURES attribute with zero
value which is pointless.

Fix this by making sure the attribute is added only if the exported
value is non-zero.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/rtnetlink.c

index 189cc78c77eba22b0023cc9598e719a308c77547..318fc5231b2b4ecc9f035d8d91ebaee61b929af0 100644 (file)
@@ -704,6 +704,8 @@ int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics)
                        } else if (i == RTAX_FEATURES - 1) {
                                u32 user_features = metrics[i] & RTAX_FEATURE_MASK;
 
+                               if (!user_features)
+                                       continue;
                                BUILD_BUG_ON(RTAX_FEATURE_MASK & DST_FEATURE_MASK);
                                if (nla_put_u32(skb, i + 1, user_features))
                                        goto nla_put_failure;