Loading include/linux/rtnetlink.h +6 −2 Original line number Diff line number Diff line Loading @@ -570,12 +570,16 @@ static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str) } extern int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len); extern int rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, void **data, int len); extern int __rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len); #define rtattr_parse_nested(tb, max, rta) \ rtattr_parse((tb), (max), RTA_DATA((rta)), RTA_PAYLOAD((rta))) #define rtattr_parse_nested_compat(tb, max, rta, data, len) \ ({ data = RTA_PAYLOAD(rta) >= len ? RTA_DATA(rta) : NULL; \ __rtattr_parse_nested_compat(tb, max, rta, len); }) extern int rtnetlink_send(struct sk_buff *skb, u32 pid, u32 group, int echo); extern int rtnl_unicast(struct sk_buff *skb, u32 pid); extern int rtnl_notify(struct sk_buff *skb, u32 pid, u32 group, Loading net/core/rtnetlink.c +3 −5 Original line number Diff line number Diff line Loading @@ -97,13 +97,11 @@ int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len) return 0; } int rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, void **data, int len) int __rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len) { if (RTA_PAYLOAD(rta) < len) return -1; *data = RTA_DATA(rta); if (RTA_PAYLOAD(rta) >= RTA_ALIGN(len) + sizeof(struct rtattr)) { rta = RTA_DATA(rta) + RTA_ALIGN(len); return rtattr_parse_nested(tb, maxattr, rta); Loading Loading @@ -1312,7 +1310,7 @@ void __init rtnetlink_init(void) EXPORT_SYMBOL(__rta_fill); EXPORT_SYMBOL(rtattr_strlcpy); EXPORT_SYMBOL(rtattr_parse); EXPORT_SYMBOL(rtattr_parse_nested_compat); EXPORT_SYMBOL(__rtattr_parse_nested_compat); EXPORT_SYMBOL(rtnetlink_put_metrics); EXPORT_SYMBOL(rtnl_lock); EXPORT_SYMBOL(rtnl_trylock); Loading Loading
include/linux/rtnetlink.h +6 −2 Original line number Diff line number Diff line Loading @@ -570,12 +570,16 @@ static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str) } extern int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len); extern int rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, void **data, int len); extern int __rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len); #define rtattr_parse_nested(tb, max, rta) \ rtattr_parse((tb), (max), RTA_DATA((rta)), RTA_PAYLOAD((rta))) #define rtattr_parse_nested_compat(tb, max, rta, data, len) \ ({ data = RTA_PAYLOAD(rta) >= len ? RTA_DATA(rta) : NULL; \ __rtattr_parse_nested_compat(tb, max, rta, len); }) extern int rtnetlink_send(struct sk_buff *skb, u32 pid, u32 group, int echo); extern int rtnl_unicast(struct sk_buff *skb, u32 pid); extern int rtnl_notify(struct sk_buff *skb, u32 pid, u32 group, Loading
net/core/rtnetlink.c +3 −5 Original line number Diff line number Diff line Loading @@ -97,13 +97,11 @@ int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len) return 0; } int rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, void **data, int len) int __rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len) { if (RTA_PAYLOAD(rta) < len) return -1; *data = RTA_DATA(rta); if (RTA_PAYLOAD(rta) >= RTA_ALIGN(len) + sizeof(struct rtattr)) { rta = RTA_DATA(rta) + RTA_ALIGN(len); return rtattr_parse_nested(tb, maxattr, rta); Loading Loading @@ -1312,7 +1310,7 @@ void __init rtnetlink_init(void) EXPORT_SYMBOL(__rta_fill); EXPORT_SYMBOL(rtattr_strlcpy); EXPORT_SYMBOL(rtattr_parse); EXPORT_SYMBOL(rtattr_parse_nested_compat); EXPORT_SYMBOL(__rtattr_parse_nested_compat); EXPORT_SYMBOL(rtnetlink_put_metrics); EXPORT_SYMBOL(rtnl_lock); EXPORT_SYMBOL(rtnl_trylock); Loading