Message ID | 1351499603.7394.199.camel@edumazet-glaptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Mon, 2012-10-29 at 09:33 +0100, Eric Dumazet wrote: > From: Eric Dumazet <edumazet@google.com> > > We can save a test in ip_rt_put(), considering dst_release() accepts > a NULL parameter, and dst is first element in rtable. > > Add a BUILD_BUG_ON() to catch any change that could break this > assertion. > > Signed-off-by: Eric Dumazet <edumazet@google.com> > Cc: Cong Wang <amwang@redhat.com> Acked-by: Cong Wang <amwang@redhat.com> Thanks! -- 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
From: Cong Wang <amwang@redhat.com> Date: Mon, 29 Oct 2012 17:09:06 +0800 > On Mon, 2012-10-29 at 09:33 +0100, Eric Dumazet wrote: >> From: Eric Dumazet <edumazet@google.com> >> >> We can save a test in ip_rt_put(), considering dst_release() accepts >> a NULL parameter, and dst is first element in rtable. >> >> Add a BUILD_BUG_ON() to catch any change that could break this >> assertion. >> >> Signed-off-by: Eric Dumazet <edumazet@google.com> >> Cc: Cong Wang <amwang@redhat.com> > > Acked-by: Cong Wang <amwang@redhat.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
diff --git a/include/net/route.h b/include/net/route.h index bc40b63..2ea40c1 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -198,10 +198,13 @@ struct in_ifaddr; extern void fib_add_ifaddr(struct in_ifaddr *); extern void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *); -static inline void ip_rt_put(struct rtable * rt) +static inline void ip_rt_put(struct rtable *rt) { - if (rt) - dst_release(&rt->dst); + /* dst_release() accepts a NULL parameter. + * We rely on dst being first structure in struct rtable + */ + BUILD_BUG_ON(offsetof(struct rtable, dst) != 0); + dst_release(&rt->dst); } #define IPTOS_RT_MASK (IPTOS_TOS_MASK & ~3)