ret = -ENOSPC;
        seq_printf(s, "%-8s %u %ld ",
                   l4proto->name, nf_ct_protonum(ct),
-                  timer_pending(&ct->timeout)
-                  ? (long)(ct->timeout.expires - jiffies)/HZ : 0);
+                  nf_ct_expires(ct) / HZ);
 
        if (l4proto->print_conntrack)
                l4proto->print_conntrack(s, ct);
 
 
 static int ctnetlink_dump_timeout(struct sk_buff *skb, const struct nf_conn *ct)
 {
-       long timeout = ((long)ct->timeout.expires - (long)jiffies) / HZ;
-
-       if (timeout < 0)
-               timeout = 0;
+       long timeout = nf_ct_expires(ct) / HZ;
 
        if (nla_put_be32(skb, CTA_TIMEOUT, htonl(timeout)))
                goto nla_put_failure;
 
        seq_printf(s, "%-8s %u %-8s %u %ld ",
                   l3proto->name, nf_ct_l3num(ct),
                   l4proto->name, nf_ct_protonum(ct),
-                  timer_pending(&ct->timeout)
-                  ? (long)(ct->timeout.expires - jiffies)/HZ : 0);
+                  nf_ct_expires(ct)  / HZ);
 
        if (l4proto->print_conntrack)
                l4proto->print_conntrack(s, ct);
 
                return false;
 
        if (info->match_flags & XT_CONNTRACK_EXPIRES) {
-               unsigned long expires = 0;
+               unsigned long expires = nf_ct_expires(ct) / HZ;
 
-               if (timer_pending(&ct->timeout))
-                       expires = (ct->timeout.expires - jiffies) / HZ;
                if ((expires >= info->expires_min &&
                    expires <= info->expires_max) ^
                    !(info->invert_flags & XT_CONNTRACK_EXPIRES))