]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - net/core/sock.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[mirror_ubuntu-jammy-kernel.git] / net / core / sock.c
index 6c5c6b18eff4c5271fd3d510f7a370122ab91964..4e8729357122156560f716cc6b89b4b7265f3fa0 100644 (file)
@@ -413,18 +413,6 @@ static int sock_set_timeout(long *timeo_p, sockptr_t optval, int optlen,
        return 0;
 }
 
-static void sock_warn_obsolete_bsdism(const char *name)
-{
-       static int warned;
-       static char warncomm[TASK_COMM_LEN];
-       if (strcmp(warncomm, current->comm) && warned < 5) {
-               strcpy(warncomm,  current->comm);
-               pr_warn("process `%s' is using obsolete %s SO_BSDCOMPAT\n",
-                       warncomm, name);
-               warned++;
-       }
-}
-
 static bool sock_needs_netstamp(const struct sock *sk)
 {
        switch (sk->sk_family) {
@@ -769,7 +757,6 @@ static void __sock_set_timestamps(struct sock *sk, bool val, bool new, bool ns)
        } else {
                sock_reset_flag(sk, SOCK_RCVTSTAMP);
                sock_reset_flag(sk, SOCK_RCVTSTAMPNS);
-               sock_reset_flag(sk, SOCK_TSTAMP_NEW);
        }
 }
 
@@ -984,7 +971,6 @@ set_sndbuf:
                break;
 
        case SO_BSDCOMPAT:
-               sock_warn_obsolete_bsdism("setsockopt");
                break;
 
        case SO_PASSCRED:
@@ -1007,8 +993,6 @@ set_sndbuf:
                __sock_set_timestamps(sk, valbool, true, true);
                break;
        case SO_TIMESTAMPING_NEW:
-               sock_set_flag(sk, SOCK_TSTAMP_NEW);
-               fallthrough;
        case SO_TIMESTAMPING_OLD:
                if (val & ~SOF_TIMESTAMPING_MASK) {
                        ret = -EINVAL;
@@ -1037,16 +1021,14 @@ set_sndbuf:
                }
 
                sk->sk_tsflags = val;
+               sock_valbool_flag(sk, SOCK_TSTAMP_NEW, optname == SO_TIMESTAMPING_NEW);
+
                if (val & SOF_TIMESTAMPING_RX_SOFTWARE)
                        sock_enable_timestamp(sk,
                                              SOCK_TIMESTAMPING_RX_SOFTWARE);
-               else {
-                       if (optname == SO_TIMESTAMPING_NEW)
-                               sock_reset_flag(sk, SOCK_TSTAMP_NEW);
-
+               else
                        sock_disable_timestamp(sk,
                                               (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE));
-               }
                break;
 
        case SO_RCVLOWAT:
@@ -1387,7 +1369,6 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
                break;
 
        case SO_BSDCOMPAT:
-               sock_warn_obsolete_bsdism("getsockopt");
                break;
 
        case SO_TIMESTAMP_OLD:
@@ -2961,6 +2942,13 @@ void sk_stop_timer(struct sock *sk, struct timer_list* timer)
 }
 EXPORT_SYMBOL(sk_stop_timer);
 
+void sk_stop_timer_sync(struct sock *sk, struct timer_list *timer)
+{
+       if (del_timer_sync(timer))
+               __sock_put(sk);
+}
+EXPORT_SYMBOL(sk_stop_timer_sync);
+
 void sock_init_data(struct socket *sock, struct sock *sk)
 {
        sk_init_common(sk);