Loading include/net/ndisc.h +7 −1 Original line number Diff line number Diff line Loading @@ -127,13 +127,19 @@ static int ndisc_addr_option_pad(unsigned short type) } } static inline int ndisc_opt_addr_space(struct net_device *dev) { return NDISC_OPT_SPACE(dev->addr_len + ndisc_addr_option_pad(dev->type)); } static inline u8 *ndisc_opt_addr_data(struct nd_opt_hdr *p, struct net_device *dev) { u8 *lladdr = (u8 *)(p + 1); int lladdrlen = p->nd_opt_len << 3; int prepad = ndisc_addr_option_pad(dev->type); if (lladdrlen != NDISC_OPT_SPACE(dev->addr_len + prepad)) if (lladdrlen != ndisc_opt_addr_space(dev)) return NULL; return lladdr + prepad; } Loading net/ipv6/ndisc.c +1 −6 Original line number Diff line number Diff line Loading @@ -143,17 +143,12 @@ struct neigh_table nd_tbl = { .gc_thresh3 = 1024, }; static inline int ndisc_opt_addr_space(struct net_device *dev) { return NDISC_OPT_SPACE(dev->addr_len + ndisc_addr_option_pad(dev->type)); } static u8 *ndisc_fill_addr_option(u8 *opt, int type, void *data, struct net_device *dev) { int pad = ndisc_addr_option_pad(dev->type); int data_len = dev->addr_len; int space = NDISC_OPT_SPACE(data_len + pad); int space = ndisc_opt_addr_space(dev); opt[0] = type; opt[1] = space>>3; Loading Loading
include/net/ndisc.h +7 −1 Original line number Diff line number Diff line Loading @@ -127,13 +127,19 @@ static int ndisc_addr_option_pad(unsigned short type) } } static inline int ndisc_opt_addr_space(struct net_device *dev) { return NDISC_OPT_SPACE(dev->addr_len + ndisc_addr_option_pad(dev->type)); } static inline u8 *ndisc_opt_addr_data(struct nd_opt_hdr *p, struct net_device *dev) { u8 *lladdr = (u8 *)(p + 1); int lladdrlen = p->nd_opt_len << 3; int prepad = ndisc_addr_option_pad(dev->type); if (lladdrlen != NDISC_OPT_SPACE(dev->addr_len + prepad)) if (lladdrlen != ndisc_opt_addr_space(dev)) return NULL; return lladdr + prepad; } Loading
net/ipv6/ndisc.c +1 −6 Original line number Diff line number Diff line Loading @@ -143,17 +143,12 @@ struct neigh_table nd_tbl = { .gc_thresh3 = 1024, }; static inline int ndisc_opt_addr_space(struct net_device *dev) { return NDISC_OPT_SPACE(dev->addr_len + ndisc_addr_option_pad(dev->type)); } static u8 *ndisc_fill_addr_option(u8 *opt, int type, void *data, struct net_device *dev) { int pad = ndisc_addr_option_pad(dev->type); int data_len = dev->addr_len; int space = NDISC_OPT_SPACE(data_len + pad); int space = ndisc_opt_addr_space(dev); opt[0] = type; opt[1] = space>>3; Loading