}
  
        /* UID */
-       if (skb->sk) {
-               read_lock_bh(&skb->sk->sk_callback_lock);
-               if (skb->sk->sk_socket && skb->sk->sk_socket->file) {
-                       struct file *file = skb->sk->sk_socket->file;
+       sk = skb->sk;
+       if (sk && sk->sk_state != TCP_TIME_WAIT) {
+               read_lock_bh(&sk->sk_callback_lock);
+               if (sk->sk_socket && sk->sk_socket->file) {
+                       struct file *file = sk->sk_socket->file;
 -                      __be32 uid = htonl(file->f_cred->fsuid);
 -                      __be32 gid = htonl(file->f_cred->fsgid);
 +                      __be32 uid = htonl(from_kuid_munged(inst->peer_user_ns,
 +                                                          file->f_cred->fsuid));
 +                      __be32 gid = htonl(from_kgid_munged(inst->peer_user_ns,
 +                                                          file->f_cred->fsgid));
-                       /* need to unlock here since NLA_PUT may goto */
-                       read_unlock_bh(&skb->sk->sk_callback_lock);
+                       read_unlock_bh(&sk->sk_callback_lock);
                        if (nla_put_be32(inst->skb, NFULA_UID, uid) ||
                            nla_put_be32(inst->skb, NFULA_GID, gid))
                                goto nla_put_failure;
 
        return 0;
  }
  
 -      if (sk->sk_socket && sk->sk_socket->file)
+ static void dump_sk_uid_gid(struct sbuff *m, struct sock *sk)
+ {
+       if (!sk || sk->sk_state == TCP_TIME_WAIT)
+               return;
+ 
+       read_lock_bh(&sk->sk_callback_lock);
 -                      sk->sk_socket->file->f_cred->fsuid,
 -                      sk->sk_socket->file->f_cred->fsgid);
++      if (sk->sk_socket && sk->sk_socket->file) {
++              const struct cred *cred = sk->sk_socket->file->f_cred;
+               sb_add(m, "UID=%u GID=%u ",
++                     from_kuid_munged(&init_user_ns, cred->fsuid),
++                     from_kgid_munged(&init_user_ns, cred->fsgid));
++      }
+       read_unlock_bh(&sk->sk_callback_lock);
+ }
+ 
  /* One level of recursion won't kill us */
  static void dump_ipv4_packet(struct sbuff *m,
                        const struct nf_loginfo *info,