Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
authorDavid S. Miller <davem@davemloft.net>
Mon, 13 May 2019 03:03:35 +0000 (20:03 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 May 2019 03:03:35 +0000 (20:03 -0700)
Daniel Borkmann says:

====================
pull-request: bpf 2019-05-13

The following pull-request contains BPF updates for your *net* tree.

The main changes are:

1) Fix out of bounds backwards jumps due to a bug in dead code
   removal, from Daniel.

2) Fix libbpf users by detecting unsupported BTF kernel features
   and sanitize them before load, from Andrii.

3) Fix undefined behavior in narrow load handling of context
   fields, from Krzesimir.

4) Various BPF uapi header doc/man page fixes, from Quentin.

5) Misc .gitignore fixups to exclude built files, from Kelsey.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/realtek.c
include/net/dsa.h
net/dccp/proto.c
net/dsa/slave.c
net/qrtr/qrtr.c

index 29ce073..4988cce 100644 (file)
@@ -332,8 +332,6 @@ static struct phy_driver realtek_drvs[] = {
                .resume         = genphy_resume,
                .read_page      = rtl821x_read_page,
                .write_page     = rtl821x_write_page,
-               .read_page      = rtl821x_read_page,
-               .write_page     = rtl821x_write_page,
        }, {
                PHY_ID_MATCH_EXACT(0x001cc961),
                .name           = "RTL8366RB Gigabit Ethernet",
index 6aaaadd..6852948 100644 (file)
@@ -99,24 +99,9 @@ struct __dsa_skb_cb {
 
 #define DSA_SKB_CB(skb) ((struct dsa_skb_cb *)((skb)->cb))
 
-#define DSA_SKB_CB_COPY(nskb, skb)             \
-       { *__DSA_SKB_CB(nskb) = *__DSA_SKB_CB(skb); }
-
-#define DSA_SKB_CB_ZERO(skb)                   \
-       { *__DSA_SKB_CB(skb) = (struct __dsa_skb_cb) {0}; }
-
 #define DSA_SKB_CB_PRIV(skb)                   \
        ((void *)(skb)->cb + offsetof(struct __dsa_skb_cb, priv))
 
-#define DSA_SKB_CB_CLONE(_clone, _skb)         \
-       {                                       \
-               struct sk_buff *clone = _clone; \
-               struct sk_buff *skb = _skb;     \
-                                               \
-               DSA_SKB_CB_COPY(clone, skb);    \
-               DSA_SKB_CB(skb)->clone = clone; \
-       }
-
 struct dsa_switch_tree {
        struct list_head        list;
 
index 0e2f71a..5dd85ec 100644 (file)
@@ -263,7 +263,6 @@ int dccp_disconnect(struct sock *sk, int flags)
        struct inet_connection_sock *icsk = inet_csk(sk);
        struct inet_sock *inet = inet_sk(sk);
        struct dccp_sock *dp = dccp_sk(sk);
-       int err = 0;
        const int old_state = sk->sk_state;
 
        if (old_state != DCCP_CLOSED)
@@ -307,7 +306,7 @@ int dccp_disconnect(struct sock *sk, int flags)
        WARN_ON(inet->inet_num && !icsk->icsk_bind_hash);
 
        sk->sk_error_report(sk);
-       return err;
+       return 0;
 }
 
 EXPORT_SYMBOL_GPL(dccp_disconnect);
index fe7b6a6..9892ca1 100644 (file)
@@ -463,6 +463,8 @@ static netdev_tx_t dsa_slave_xmit(struct sk_buff *skb, struct net_device *dev)
        s->tx_bytes += skb->len;
        u64_stats_update_end(&s->syncp);
 
+       DSA_SKB_CB(skb)->deferred_xmit = false;
+
        /* Identify PTP protocol packets, clone them, and pass them to the
         * switch driver
         */
index dd0e97f..801872a 100644 (file)
@@ -728,12 +728,13 @@ static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
        DECLARE_SOCKADDR(struct sockaddr_qrtr *, addr, msg->msg_name);
        int (*enqueue_fn)(struct qrtr_node *, struct sk_buff *, int,
                          struct sockaddr_qrtr *, struct sockaddr_qrtr *);
+       __le32 qrtr_type = cpu_to_le32(QRTR_TYPE_DATA);
        struct qrtr_sock *ipc = qrtr_sk(sock->sk);
        struct sock *sk = sock->sk;
        struct qrtr_node *node;
        struct sk_buff *skb;
+       u32 type = 0;
        size_t plen;
-       u32 type = QRTR_TYPE_DATA;
        int rc;
 
        if (msg->msg_flags & ~(MSG_DONTWAIT))
@@ -807,8 +808,8 @@ static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
                }
 
                /* control messages already require the type as 'command' */
-               skb_copy_bits(skb, 0, &type, 4);
-               type = le32_to_cpu(type);
+               skb_copy_bits(skb, 0, &qrtr_type, 4);
+               type = le32_to_cpu(qrtr_type);
        }
 
        rc = enqueue_fn(node, skb, type, &ipc->us, addr);