aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/can/dev.h3
-rw-r--r--include/linux/fs.h2
-rw-r--r--include/linux/mount.h2
-rw-r--r--include/linux/netdevice.h24
-rw-r--r--include/linux/posix_acl.h1
-rw-r--r--include/net/tcp.h2
6 files changed, 31 insertions, 3 deletions
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h
index 5e13b987d9e2..678e97fa3869 100644
--- a/include/linux/can/dev.h
+++ b/include/linux/can/dev.h
@@ -31,6 +31,7 @@ enum can_mode {
31 * CAN common private data 31 * CAN common private data
32 */ 32 */
33struct can_priv { 33struct can_priv {
34 struct net_device *dev;
34 struct can_device_stats can_stats; 35 struct can_device_stats can_stats;
35 36
36 struct can_bittiming bittiming, data_bittiming; 37 struct can_bittiming bittiming, data_bittiming;
@@ -46,7 +47,7 @@ struct can_priv {
46 u32 ctrlmode_static; /* static enabled options for driver/hardware */ 47 u32 ctrlmode_static; /* static enabled options for driver/hardware */
47 48
48 int restart_ms; 49 int restart_ms;
49 struct timer_list restart_timer; 50 struct delayed_work restart_work;
50 51
51 int (*do_set_bittiming)(struct net_device *dev); 52 int (*do_set_bittiming)(struct net_device *dev);
52 int (*do_set_data_bittiming)(struct net_device *dev); 53 int (*do_set_data_bittiming)(struct net_device *dev);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 8ccb136c3980..96fb3242cde7 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2829,7 +2829,7 @@ extern int buffer_migrate_page(struct address_space *,
2829#define buffer_migrate_page NULL 2829#define buffer_migrate_page NULL
2830#endif 2830#endif
2831 2831
2832extern int inode_change_ok(const struct inode *, struct iattr *); 2832extern int setattr_prepare(struct dentry *, struct iattr *);
2833extern int inode_newsize_ok(const struct inode *, loff_t offset); 2833extern int inode_newsize_ok(const struct inode *, loff_t offset);
2834extern void setattr_copy(struct inode *inode, const struct iattr *attr); 2834extern void setattr_copy(struct inode *inode, const struct iattr *attr);
2835 2835
diff --git a/include/linux/mount.h b/include/linux/mount.h
index f822c3c11377..dc6cd800cd5d 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -95,4 +95,6 @@ extern void mark_mounts_for_expiry(struct list_head *mounts);
95 95
96extern dev_t name_to_dev_t(const char *name); 96extern dev_t name_to_dev_t(const char *name);
97 97
98extern unsigned int sysctl_mount_max;
99
98#endif /* _LINUX_MOUNT_H */ 100#endif /* _LINUX_MOUNT_H */
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 6c86c7edafa7..ddd47c3a757d 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1957,7 +1957,10 @@ struct napi_gro_cb {
1957 /* Used in foo-over-udp, set in udp[46]_gro_receive */ 1957 /* Used in foo-over-udp, set in udp[46]_gro_receive */
1958 u8 is_ipv6:1; 1958 u8 is_ipv6:1;
1959 1959
1960 /* 7 bit hole */ 1960 /* Number of gro_receive callbacks this packet already went through */
1961 u8 recursion_counter:4;
1962
1963 /* 3 bit hole */
1961 1964
1962 /* used to support CHECKSUM_COMPLETE for tunneling protocols */ 1965 /* used to support CHECKSUM_COMPLETE for tunneling protocols */
1963 __wsum csum; 1966 __wsum csum;
@@ -1968,6 +1971,25 @@ struct napi_gro_cb {
1968 1971
1969#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb) 1972#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb)
1970 1973
1974#define GRO_RECURSION_LIMIT 15
1975static inline int gro_recursion_inc_test(struct sk_buff *skb)
1976{
1977 return ++NAPI_GRO_CB(skb)->recursion_counter == GRO_RECURSION_LIMIT;
1978}
1979
1980typedef struct sk_buff **(*gro_receive_t)(struct sk_buff **, struct sk_buff *);
1981static inline struct sk_buff **call_gro_receive(gro_receive_t cb,
1982 struct sk_buff **head,
1983 struct sk_buff *skb)
1984{
1985 if (gro_recursion_inc_test(skb)) {
1986 NAPI_GRO_CB(skb)->flush |= 1;
1987 return NULL;
1988 }
1989
1990 return cb(head, skb);
1991}
1992
1971struct packet_type { 1993struct packet_type {
1972 __be16 type; /* This is really htons(ether_type). */ 1994 __be16 type; /* This is really htons(ether_type). */
1973 struct net_device *dev; /* NULL is wildcarded here */ 1995 struct net_device *dev; /* NULL is wildcarded here */
diff --git a/include/linux/posix_acl.h b/include/linux/posix_acl.h
index 3e96a6a76103..d1a8ad7e5ae4 100644
--- a/include/linux/posix_acl.h
+++ b/include/linux/posix_acl.h
@@ -95,6 +95,7 @@ extern int set_posix_acl(struct inode *, int, struct posix_acl *);
95extern int posix_acl_chmod(struct inode *, umode_t); 95extern int posix_acl_chmod(struct inode *, umode_t);
96extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **, 96extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **,
97 struct posix_acl **); 97 struct posix_acl **);
98extern int posix_acl_update_mode(struct inode *, umode_t *, struct posix_acl **);
98 99
99extern int simple_set_acl(struct inode *, struct posix_acl *, int); 100extern int simple_set_acl(struct inode *, struct posix_acl *, int);
100extern int simple_acl_create(struct inode *, struct inode *); 101extern int simple_acl_create(struct inode *, struct inode *);
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 6d204f3f9df8..3d3a365233f0 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -1434,6 +1434,8 @@ static inline void tcp_check_send_head(struct sock *sk, struct sk_buff *skb_unli
1434{ 1434{
1435 if (sk->sk_send_head == skb_unlinked) 1435 if (sk->sk_send_head == skb_unlinked)
1436 sk->sk_send_head = NULL; 1436 sk->sk_send_head = NULL;
1437 if (tcp_sk(sk)->highest_sack == skb_unlinked)
1438 tcp_sk(sk)->highest_sack = NULL;
1437} 1439}
1438 1440
1439static inline void tcp_init_send_head(struct sock *sk) 1441static inline void tcp_init_send_head(struct sock *sk)