Need to keep expires time for IPv6 routes in a dump of FIB entries.
Update rtnl_put_cacheinfo to allow dst to be NULL in which case
rta_cacheinfo will only contain non-dst data.

Signed-off-by: David Ahern <dsah...@gmail.com>
---
 net/core/rtnetlink.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 45936922d7e2..80802546c279 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -785,13 +785,15 @@ int rtnl_put_cacheinfo(struct sk_buff *skb, struct 
dst_entry *dst, u32 id,
                       long expires, u32 error)
 {
        struct rta_cacheinfo ci = {
-               .rta_lastuse = jiffies_delta_to_clock_t(jiffies - dst->lastuse),
-               .rta_used = dst->__use,
-               .rta_clntref = atomic_read(&(dst->__refcnt)),
                .rta_error = error,
                .rta_id =  id,
        };
 
+       if (dst) {
+               ci.rta_lastuse = jiffies_delta_to_clock_t(jiffies - 
dst->lastuse);
+               ci.rta_used = dst->__use;
+               ci.rta_clntref = atomic_read(&dst->__refcnt);
+       }
        if (expires) {
                unsigned long clock;
 
-- 
2.11.0

Reply via email to