summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@google.com>2019-02-23 10:12:45 +0100
committerGreg Kroah-Hartman <gregkh@google.com>2019-02-23 10:12:45 +0100
commita99ac1920cdf2c5906d74b41f026f34194b512ea (patch)
tree582bb604c5ab9cd7865fed2303160feb317cb05e /include
parentd93cfb73cdfc89c4e1a22297872b457fd7e99fd4 (diff)
parentaf13f43f01a3e4a11686f5fa4de42ecec8ed71b1 (diff)
Merge 4.4.176 into android-4.4-p
Changes in 4.4.176 net: fix IPv6 prefix route residue vsock: cope with memory allocation failure at socket creation time hwmon: (lm80) Fix missing unlock on error in set_fan_div() net: Fix for_each_netdev_feature on Big endian sky2: Increase D3 delay again net: Add header for usage of fls64() tcp: tcp_v4_err() should be more careful net: Do not allocate page fragments that are not skb aligned tcp: clear icsk_backoff in tcp_write_queue_purge() vxlan: test dev->flags & IFF_UP before calling netif_rx() net: stmmac: Fix a race in EEE enable callback net: ipv4: use a dedicated counter for icmp_v4 redirect packets x86: livepatch: Treat R_X86_64_PLT32 as R_X86_64_PC32 kvm: fix kvm_ioctl_create_device() reference counting (CVE-2019-6974) mfd: as3722: Handle interrupts on suspend mfd: as3722: Mark PM functions as __maybe_unused net/x25: do not hold the cpu too long in x25_new_lci() mISDN: fix a race in dev_expire_timer() ax25: fix possible use-after-free KVM: VMX: Fix x2apic check in vmx_msr_bitmap_mode() Linux 4.4.176 Change-Id: I82b10bb7d9692d4fe0386744934f09557d65ffe6 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/netdev_features.h24
-rw-r--r--include/net/ax25.h12
-rw-r--r--include/net/inetpeer.h1
-rw-r--r--include/net/tcp.h1
4 files changed, 36 insertions, 2 deletions
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
index f0d87347df19..0508fcc67480 100644
--- a/include/linux/netdev_features.h
+++ b/include/linux/netdev_features.h
@@ -11,6 +11,8 @@
#define _LINUX_NETDEV_FEATURES_H
#include <linux/types.h>
+#include <linux/bitops.h>
+#include <asm/byteorder.h>
typedef u64 netdev_features_t;
@@ -125,8 +127,26 @@ enum {
#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD)
#define NETIF_F_BUSY_POLL __NETIF_F(BUSY_POLL)
-#define for_each_netdev_feature(mask_addr, bit) \
- for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT)
+/* Finds the next feature with the highest number of the range of start till 0.
+ */
+static inline int find_next_netdev_feature(u64 feature, unsigned long start)
+{
+ /* like BITMAP_LAST_WORD_MASK() for u64
+ * this sets the most significant 64 - start to 0.
+ */
+ feature &= ~0ULL >> (-start & ((sizeof(feature) * 8) - 1));
+
+ return fls64(feature) - 1;
+}
+
+/* This goes for the MSB to the LSB through the set feature bits,
+ * mask_addr should be a u64 and bit an int
+ */
+#define for_each_netdev_feature(mask_addr, bit) \
+ for ((bit) = find_next_netdev_feature((mask_addr), \
+ NETDEV_FEATURE_COUNT); \
+ (bit) >= 0; \
+ (bit) = find_next_netdev_feature((mask_addr), (bit) - 1))
/* Features valid for ethtool to change */
/* = all defined minus driver/device-class-related */
diff --git a/include/net/ax25.h b/include/net/ax25.h
index e602f8177ebf..b507ce2b1952 100644
--- a/include/net/ax25.h
+++ b/include/net/ax25.h
@@ -199,6 +199,18 @@ static inline void ax25_hold_route(ax25_route *ax25_rt)
void __ax25_put_route(ax25_route *ax25_rt);
+extern rwlock_t ax25_route_lock;
+
+static inline void ax25_route_lock_use(void)
+{
+ read_lock(&ax25_route_lock);
+}
+
+static inline void ax25_route_lock_unuse(void)
+{
+ read_unlock(&ax25_route_lock);
+}
+
static inline void ax25_put_route(ax25_route *ax25_rt)
{
if (atomic_dec_and_test(&ax25_rt->refcount))
diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
index 235c7811a86a..408d76f47bd2 100644
--- a/include/net/inetpeer.h
+++ b/include/net/inetpeer.h
@@ -40,6 +40,7 @@ struct inet_peer {
u32 metrics[RTAX_MAX];
u32 rate_tokens; /* rate limiting for ICMP */
+ u32 n_redirects;
unsigned long rate_last;
union {
struct list_head gc_list;
diff --git a/include/net/tcp.h b/include/net/tcp.h
index c6a4c41674e7..5bd96455ddbd 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -1460,6 +1460,7 @@ static inline void tcp_write_queue_purge(struct sock *sk)
sk_wmem_free_skb(sk, skb);
sk_mem_reclaim(sk);
tcp_clear_all_retrans_hints(tcp_sk(sk));
+ inet_csk(sk)->icsk_backoff = 0;
}
static inline struct sk_buff *tcp_write_queue_head(const struct sock *sk)