netlink: Add __sock_i_ino() for __netlink_diag_dump().
[platform/kernel/linux-starfive.git] / net / core / sock.c
index 83f590d..0c1baa5 100644 (file)
@@ -1355,12 +1355,6 @@ set_sndbuf:
                __sock_set_mark(sk, val);
                break;
        case SO_RCVMARK:
-               if (!sockopt_ns_capable(sock_net(sk)->user_ns, CAP_NET_RAW) &&
-                   !sockopt_ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) {
-                       ret = -EPERM;
-                       break;
-               }
-
                sock_valbool_flag(sk, SOCK_RCVMARK, valbool);
                break;
 
@@ -2548,13 +2542,24 @@ kuid_t sock_i_uid(struct sock *sk)
 }
 EXPORT_SYMBOL(sock_i_uid);
 
-unsigned long sock_i_ino(struct sock *sk)
+unsigned long __sock_i_ino(struct sock *sk)
 {
        unsigned long ino;
 
-       read_lock_bh(&sk->sk_callback_lock);
+       read_lock(&sk->sk_callback_lock);
        ino = sk->sk_socket ? SOCK_INODE(sk->sk_socket)->i_ino : 0;
-       read_unlock_bh(&sk->sk_callback_lock);
+       read_unlock(&sk->sk_callback_lock);
+       return ino;
+}
+EXPORT_SYMBOL(__sock_i_ino);
+
+unsigned long sock_i_ino(struct sock *sk)
+{
+       unsigned long ino;
+
+       local_bh_disable();
+       ino = __sock_i_ino(sk);
+       local_bh_enable();
        return ino;
 }
 EXPORT_SYMBOL(sock_i_ino);