kernel: bump 4.14 to 4.14.34
Refresh patches. Update patches that no longer apply: - backport/313-netfilter-remove-defensive-check-on-malformed-packet.patch - pending/642-net-8021q-support-hardware-flow-table-offload.patch Compile-tested: x86/64. Runtime-tested: x86/64. Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
		| @@ -5,12 +5,12 @@ LINUX_RELEASE?=1 | ||||
| LINUX_VERSION-3.18 = .71 | ||||
| LINUX_VERSION-4.4 = .121 | ||||
| LINUX_VERSION-4.9 = .91 | ||||
| LINUX_VERSION-4.14 = .32 | ||||
| LINUX_VERSION-4.14 = .34 | ||||
|  | ||||
| LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240 | ||||
| LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729 | ||||
| LINUX_KERNEL_HASH-4.9.91 = 60caa752ec9fa1c426f6a2f37db3f268d0961b67a723b6443949112167b39832 | ||||
| LINUX_KERNEL_HASH-4.14.32 = cb0979bec663089a43b10cfbeae0cf9673544b0ff5968c33ede614ec0f43b680 | ||||
| LINUX_KERNEL_HASH-4.14.34 = 782b6c4c85275c382c820e1934d3e6003ef468f43cfc5e7c22bc07c331a12bb9 | ||||
|  | ||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||
| sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | ||||
|   | ||||
| @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> | ||||
|  | ||||
| --- a/drivers/mtd/spi-nor/spi-nor.c | ||||
| +++ b/drivers/mtd/spi-nor/spi-nor.c | ||||
| @@ -1205,6 +1205,18 @@ static const struct flash_info *spi_nor_ | ||||
| @@ -1209,6 +1209,18 @@ static const struct flash_info *spi_nor_ | ||||
|  	} | ||||
|  	dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", | ||||
|  		id[0], id[1], id[2]); | ||||
|   | ||||
| @@ -63,7 +63,7 @@ | ||||
|  	cache_op(Hit_Invalidate_D, addr); | ||||
|  	__dflush_epilogue | ||||
|  } | ||||
| @@ -205,6 +240,7 @@ static inline void protected_flush_icach | ||||
| @@ -205,6 +240,7 @@ static inline int protected_flush_icache | ||||
|  #ifdef CONFIG_EVA | ||||
|  		return protected_cachee_op(Hit_Invalidate_I, addr); | ||||
|  #else | ||||
| @@ -71,7 +71,7 @@ | ||||
|  		return protected_cache_op(Hit_Invalidate_I, addr); | ||||
|  #endif | ||||
|  	} | ||||
| @@ -218,6 +254,7 @@ static inline void protected_flush_icach | ||||
| @@ -218,6 +254,7 @@ static inline int protected_flush_icache | ||||
|   */ | ||||
|  static inline int protected_writeback_dcache_line(unsigned long addr) | ||||
|  { | ||||
| @@ -457,7 +457,7 @@ | ||||
|  	/* | ||||
| --- a/arch/mips/mm/tlbex.c | ||||
| +++ b/arch/mips/mm/tlbex.c | ||||
| @@ -971,6 +971,9 @@ build_get_pgde32(u32 **p, unsigned int t | ||||
| @@ -971,6 +971,9 @@ void build_get_pgde32(u32 **p, unsigned | ||||
|  		uasm_i_srl(p, ptr, ptr, SMP_CPUID_PTRSHIFT); | ||||
|  		uasm_i_addu(p, ptr, tmp, ptr); | ||||
|  #else | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|   | ||||
|  	/* | ||||
|  	 * Some really old flashes (like AT45DB*) had smaller erasesize-s, but | ||||
| @@ -269,12 +270,23 @@ static int bcm47xxpart_parse(struct mtd_ | ||||
| @@ -283,12 +284,23 @@ static int bcm47xxpart_parse(struct mtd_ | ||||
|  		if (buf[0] == NVRAM_HEADER) { | ||||
|  			bcm47xxpart_add_part(&parts[curr_part++], "nvram", | ||||
|  					     master->size - blocksize, 0); | ||||
|   | ||||
| @@ -87,9 +87,9 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | ||||
| -	    ip_hdrlen(skb) < sizeof(struct iphdr)) | ||||
| -		return NF_ACCEPT; | ||||
| - | ||||
|  	if (ip_is_fragment(ip_hdr(skb))) /* IP_NODEFRAG setsockopt set */ | ||||
|  		return NF_ACCEPT; | ||||
|   | ||||
|  	if (ip_is_fragment(ip_hdr(skb))) { /* IP_NODEFRAG setsockopt set */ | ||||
|  		enum ip_conntrack_info ctinfo; | ||||
|  		struct nf_conn *tmpl; | ||||
| --- a/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c | ||||
| +++ b/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c | ||||
| @@ -355,11 +355,6 @@ nf_nat_ipv4_out(void *priv, struct sk_bu | ||||
|   | ||||
| @@ -26,7 +26,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | ||||
|  struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6, | ||||
| --- a/net/ipv6/ip6_output.c | ||||
| +++ b/net/ipv6/ip6_output.c | ||||
| @@ -370,7 +370,7 @@ static inline int ip6_forward_finish(str | ||||
| @@ -383,7 +383,7 @@ static inline int ip6_forward_finish(str | ||||
|  	return dst_output(net, sk, skb); | ||||
|  } | ||||
|   | ||||
| @@ -35,7 +35,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | ||||
|  { | ||||
|  	unsigned int mtu; | ||||
|  	struct inet6_dev *idev; | ||||
| @@ -390,6 +390,7 @@ static unsigned int ip6_dst_mtu_forward( | ||||
| @@ -403,6 +403,7 @@ static unsigned int ip6_dst_mtu_forward( | ||||
|   | ||||
|  	return mtu; | ||||
|  } | ||||
|   | ||||
| @@ -80,7 +80,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | ||||
|  static void nfnl_queue_net_exit_batch(struct list_head *net_exit_list) | ||||
| --- a/net/netfilter/x_tables.c | ||||
| +++ b/net/netfilter/x_tables.c | ||||
| @@ -1719,8 +1719,17 @@ static int __net_init xt_net_init(struct | ||||
| @@ -1754,8 +1754,17 @@ static int __net_init xt_net_init(struct | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
|   | ||||
| @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6, | ||||
| --- a/net/ipv6/ip6_output.c | ||||
| +++ b/net/ipv6/ip6_output.c | ||||
| @@ -370,28 +370,6 @@ static inline int ip6_forward_finish(str | ||||
| @@ -383,28 +383,6 @@ static inline int ip6_forward_finish(str | ||||
|  	return dst_output(net, sk, skb); | ||||
|  } | ||||
|   | ||||
|   | ||||
| @@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	depends on NETFILTER_ADVANCED | ||||
|  	help | ||||
|  	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most | ||||
| @@ -1037,7 +1036,6 @@ config NETFILTER_XT_TARGET_SECMARK | ||||
| @@ -1046,7 +1045,6 @@ config NETFILTER_XT_TARGET_SECMARK | ||||
|   | ||||
|  config NETFILTER_XT_TARGET_TCPMSS | ||||
|  	tristate '"TCPMSS" target support' | ||||
|   | ||||
| @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  | ||||
| --- a/include/linux/netdevice.h | ||||
| +++ b/include/linux/netdevice.h | ||||
| @@ -1386,6 +1386,7 @@ enum netdev_priv_flags { | ||||
| @@ -1410,6 +1410,7 @@ enum netdev_priv_flags { | ||||
|  	IFF_RXFH_CONFIGURED		= 1<<25, | ||||
|  	IFF_PHONY_HEADROOM		= 1<<26, | ||||
|  	IFF_MACSEC			= 1<<27, | ||||
| @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  }; | ||||
|   | ||||
|  #define IFF_802_1Q_VLAN			IFF_802_1Q_VLAN | ||||
| @@ -1415,6 +1416,7 @@ enum netdev_priv_flags { | ||||
| @@ -1439,6 +1440,7 @@ enum netdev_priv_flags { | ||||
|  #define IFF_TEAM			IFF_TEAM | ||||
|  #define IFF_RXFH_CONFIGURED		IFF_RXFH_CONFIGURED | ||||
|  #define IFF_MACSEC			IFF_MACSEC | ||||
| @@ -31,7 +31,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|   | ||||
|  /** | ||||
|   *	struct net_device - The DEVICE structure. | ||||
| @@ -1701,6 +1703,11 @@ struct net_device { | ||||
| @@ -1725,6 +1727,11 @@ struct net_device { | ||||
|  	const struct xfrmdev_ops *xfrmdev_ops; | ||||
|  #endif | ||||
|   | ||||
| @@ -43,7 +43,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	const struct header_ops *header_ops; | ||||
|   | ||||
|  	unsigned int		flags; | ||||
| @@ -1770,6 +1777,10 @@ struct net_device { | ||||
| @@ -1794,6 +1801,10 @@ struct net_device { | ||||
|  	struct mpls_dev __rcu	*mpls_ptr; | ||||
|  #endif | ||||
|   | ||||
|   | ||||
| @@ -103,75 +103,76 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
| -	indev = dev_get_by_index(net, ifindex); | ||||
| -	if (WARN_ON(!indev)) | ||||
| -		return 0; | ||||
| +	if (dev->type != ARPHRD_ETHER) | ||||
| +		return; | ||||
|   | ||||
| - | ||||
| -	mutex_lock(&nf_flow_offload_hw_mutex); | ||||
| -	ret = indev->netdev_ops->ndo_flow_offload(type, flow); | ||||
| -	mutex_unlock(&nf_flow_offload_hw_mutex); | ||||
| +	if (dev->type != ARPHRD_ETHER) | ||||
| +		return; | ||||
|   | ||||
| -	dev_put(indev); | ||||
| +	memcpy(path->eth_src, path->dev->dev_addr, ETH_ALEN); | ||||
| +	n = dst_neigh_lookup(tuple->dst_cache, &tuple->src_v4); | ||||
| +	if (!n) | ||||
| +		return; | ||||
|   | ||||
| -	dev_put(indev); | ||||
| -	return ret; | ||||
| +	memcpy(path->eth_dest, n->ha, ETH_ALEN); | ||||
| +	path->flags |= FLOW_OFFLOAD_PATH_ETHERNET; | ||||
| +	neigh_release(n); | ||||
| +} | ||||
|  } | ||||
|   | ||||
| -	return ret; | ||||
| -static void flow_offload_hw_work_add(struct flow_offload_hw *offload) | ||||
| +static int flow_offload_check_path(struct net *net, | ||||
| +				   struct flow_offload_tuple *tuple, | ||||
| +				   struct flow_offload_hw_path *path) | ||||
| +{ | ||||
|  { | ||||
| -	struct net *net; | ||||
| -	int ret; | ||||
| +	struct net_device *dev; | ||||
| + | ||||
|   | ||||
| -	if (nf_ct_is_dying(offload->ct)) | ||||
| -		return; | ||||
| +	dev = dev_get_by_index_rcu(net, tuple->iifidx); | ||||
| +	if (!dev) | ||||
| +		return -ENOENT; | ||||
| + | ||||
| +	path->dev = dev; | ||||
| +	flow_offload_check_ethernet(tuple, path); | ||||
| + | ||||
|   | ||||
| -	net = read_pnet(&offload->flow_hw_net); | ||||
| -	ret = do_flow_offload_hw(net, offload->flow, FLOW_OFFLOAD_ADD); | ||||
| -	if (ret >= 0) | ||||
| -		offload->flow->flags |= FLOW_OFFLOAD_HW; | ||||
| +	if (dev->netdev_ops->ndo_flow_offload_check) | ||||
| +		return dev->netdev_ops->ndo_flow_offload_check(path); | ||||
| + | ||||
| +	return 0; | ||||
|  } | ||||
|   | ||||
| -static void flow_offload_hw_work_add(struct flow_offload_hw *offload) | ||||
| -static void flow_offload_hw_work_del(struct flow_offload_hw *offload) | ||||
| +static int do_flow_offload_hw(struct flow_offload_hw *offload) | ||||
|  { | ||||
| -	struct net *net; | ||||
| -	struct net *net = read_pnet(&offload->flow_hw_net); | ||||
| +	struct net_device *src_dev = offload->src.dev; | ||||
| +	struct net_device *dest_dev = offload->dest.dev; | ||||
|  	int ret; | ||||
|   | ||||
| -	if (nf_ct_is_dying(offload->ct)) | ||||
| -		return; | ||||
| +	int ret; | ||||
| + | ||||
| +	ret = src_dev->netdev_ops->ndo_flow_offload(offload->type, | ||||
| +						    offload->flow, | ||||
| +						    &offload->src, | ||||
| +						    &offload->dest); | ||||
|   | ||||
| -	net = read_pnet(&offload->flow_hw_net); | ||||
| -	ret = do_flow_offload_hw(net, offload->flow, FLOW_OFFLOAD_ADD); | ||||
| -	if (ret >= 0) | ||||
| -		offload->flow->flags |= FLOW_OFFLOAD_HW; | ||||
| + | ||||
| +	/* restore devices in case the driver mangled them */ | ||||
| +	offload->src.dev = src_dev; | ||||
| +	offload->dest.dev = dest_dev; | ||||
| + | ||||
| +	return ret; | ||||
|  } | ||||
| +} | ||||
|   | ||||
| -static void flow_offload_hw_work_del(struct flow_offload_hw *offload) | ||||
| +static void flow_offload_hw_free(struct flow_offload_hw *offload) | ||||
|  { | ||||
| -	struct net *net = read_pnet(&offload->flow_hw_net); | ||||
| - | ||||
| -	do_flow_offload_hw(net, offload->flow, FLOW_OFFLOAD_DEL); | ||||
| +static void flow_offload_hw_free(struct flow_offload_hw *offload) | ||||
| +{ | ||||
| +	dev_put(offload->src.dev); | ||||
| +	dev_put(offload->dest.dev); | ||||
| +	if (offload->ct) | ||||
|   | ||||
| @@ -9,18 +9,19 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  | ||||
| --- a/net/8021q/vlan_dev.c | ||||
| +++ b/net/8021q/vlan_dev.c | ||||
| @@ -29,8 +29,10 @@ | ||||
| @@ -29,9 +29,11 @@ | ||||
|  #include <linux/net_tstamp.h> | ||||
|  #include <linux/etherdevice.h> | ||||
|  #include <linux/ethtool.h> | ||||
| +#include <linux/netfilter.h> | ||||
|  #include <linux/phy.h> | ||||
|  #include <net/arp.h> | ||||
|  #include <net/switchdev.h> | ||||
| +#include <net/netfilter/nf_flow_table.h> | ||||
|   | ||||
|  #include "vlan.h" | ||||
|  #include "vlanproc.h" | ||||
| @@ -762,6 +764,25 @@ static int vlan_dev_get_iflink(const str | ||||
| @@ -766,6 +768,25 @@ static int vlan_dev_get_iflink(const str | ||||
|  	return real_dev->ifindex; | ||||
|  } | ||||
|   | ||||
| @@ -46,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  static const struct ethtool_ops vlan_ethtool_ops = { | ||||
|  	.get_link_ksettings	= vlan_ethtool_get_link_ksettings, | ||||
|  	.get_drvinfo	        = vlan_ethtool_get_drvinfo, | ||||
| @@ -799,6 +820,7 @@ static const struct net_device_ops vlan_ | ||||
| @@ -803,6 +824,7 @@ static const struct net_device_ops vlan_ | ||||
|  	.ndo_fix_features	= vlan_dev_fix_features, | ||||
|  	.ndo_get_lock_subclass  = vlan_dev_get_lock_subclass, | ||||
|  	.ndo_get_iflink		= vlan_dev_get_iflink, | ||||
|   | ||||
| @@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  #define PPP_VERSION	"2.4.2" | ||||
|   | ||||
|  /* | ||||
| @@ -1383,12 +1386,33 @@ static void ppp_dev_priv_destructor(stru | ||||
| @@ -1382,12 +1385,33 @@ static void ppp_dev_priv_destructor(stru | ||||
|  		ppp_destroy_interface(ppp); | ||||
|  } | ||||
|   | ||||
|   | ||||
| @@ -143,7 +143,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	} | ||||
|  	return &ip6n->tnls[prio][h]; | ||||
|  } | ||||
| @@ -380,6 +391,12 @@ ip6_tnl_dev_uninit(struct net_device *de | ||||
| @@ -383,6 +394,12 @@ ip6_tnl_dev_uninit(struct net_device *de | ||||
|  	struct net *net = t->net; | ||||
|  	struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id); | ||||
|   | ||||
| @@ -156,7 +156,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	if (dev == ip6n->fb_tnl_dev) | ||||
|  		RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL); | ||||
|  	else | ||||
| @@ -776,6 +793,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t, | ||||
| @@ -779,6 +796,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t, | ||||
|  } | ||||
|  EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl); | ||||
|   | ||||
| @@ -264,7 +264,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb, | ||||
|  			 const struct tnl_ptk_info *tpi, | ||||
|  			 struct metadata_dst *tun_dst, | ||||
| @@ -828,6 +946,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl | ||||
| @@ -831,6 +949,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl | ||||
|  	skb_reset_network_header(skb); | ||||
|  	memset(skb->cb, 0, sizeof(struct inet6_skb_parm)); | ||||
|   | ||||
| @@ -292,7 +292,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net); | ||||
|   | ||||
|  	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb); | ||||
| @@ -959,6 +1098,7 @@ static void init_tel_txopt(struct ipv6_t | ||||
| @@ -962,6 +1101,7 @@ static void init_tel_txopt(struct ipv6_t | ||||
|  	opt->ops.opt_nflen = 8; | ||||
|  } | ||||
|   | ||||
| @@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  /** | ||||
|   * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own | ||||
|   *   @t: the outgoing tunnel device | ||||
| @@ -1301,6 +1441,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str | ||||
| @@ -1304,6 +1444,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str | ||||
|  { | ||||
|  	struct ip6_tnl *t = netdev_priv(dev); | ||||
|  	struct ipv6hdr *ipv6h = ipv6_hdr(skb); | ||||
| @@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	int encap_limit = -1; | ||||
|  	__u16 offset; | ||||
|  	struct flowi6 fl6; | ||||
| @@ -1363,6 +1504,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str | ||||
| @@ -1366,6 +1507,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str | ||||
|   | ||||
|  	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL); | ||||
|   | ||||
| @@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6)) | ||||
|  		return -1; | ||||
|   | ||||
| @@ -1491,6 +1644,14 @@ ip6_tnl_change(struct ip6_tnl *t, const | ||||
| @@ -1494,6 +1647,14 @@ ip6_tnl_change(struct ip6_tnl *t, const | ||||
|  	t->parms.link = p->link; | ||||
|  	t->parms.proto = p->proto; | ||||
|  	t->parms.fwmark = p->fwmark; | ||||
| @@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	dst_cache_reset(&t->dst_cache); | ||||
|  	ip6_tnl_link_config(t); | ||||
|  	return 0; | ||||
| @@ -1529,6 +1690,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ | ||||
| @@ -1532,6 +1693,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ | ||||
|  	p->flowinfo = u->flowinfo; | ||||
|  	p->link = u->link; | ||||
|  	p->proto = u->proto; | ||||
| @@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	memcpy(p->name, u->name, sizeof(u->name)); | ||||
|  } | ||||
|   | ||||
| @@ -1910,6 +2072,15 @@ static int ip6_tnl_validate(struct nlatt | ||||
| @@ -1913,6 +2075,15 @@ static int ip6_tnl_validate(struct nlatt | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| @@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  static void ip6_tnl_netlink_parms(struct nlattr *data[], | ||||
|  				  struct __ip6_tnl_parm *parms) | ||||
|  { | ||||
| @@ -1947,6 +2118,46 @@ static void ip6_tnl_netlink_parms(struct | ||||
| @@ -1950,6 +2121,46 @@ static void ip6_tnl_netlink_parms(struct | ||||
|   | ||||
|  	if (data[IFLA_IPTUN_FWMARK]) | ||||
|  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]); | ||||
| @@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  } | ||||
|   | ||||
|  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[], | ||||
| @@ -2058,6 +2269,12 @@ static void ip6_tnl_dellink(struct net_d | ||||
| @@ -2061,6 +2272,12 @@ static void ip6_tnl_dellink(struct net_d | ||||
|   | ||||
|  static size_t ip6_tnl_get_size(const struct net_device *dev) | ||||
|  { | ||||
| @@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	return | ||||
|  		/* IFLA_IPTUN_LINK */ | ||||
|  		nla_total_size(4) + | ||||
| @@ -2087,6 +2304,24 @@ static size_t ip6_tnl_get_size(const str | ||||
| @@ -2090,6 +2307,24 @@ static size_t ip6_tnl_get_size(const str | ||||
|  		nla_total_size(0) + | ||||
|  		/* IFLA_IPTUN_FWMARK */ | ||||
|  		nla_total_size(4) + | ||||
| @@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  		0; | ||||
|  } | ||||
|   | ||||
| @@ -2094,6 +2329,9 @@ static int ip6_tnl_fill_info(struct sk_b | ||||
| @@ -2097,6 +2332,9 @@ static int ip6_tnl_fill_info(struct sk_b | ||||
|  { | ||||
|  	struct ip6_tnl *tunnel = netdev_priv(dev); | ||||
|  	struct __ip6_tnl_parm *parm = &tunnel->parms; | ||||
| @@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|   | ||||
|  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || | ||||
|  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) || | ||||
| @@ -2103,9 +2341,27 @@ static int ip6_tnl_fill_info(struct sk_b | ||||
| @@ -2106,9 +2344,27 @@ static int ip6_tnl_fill_info(struct sk_b | ||||
|  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || | ||||
|  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || | ||||
|  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) || | ||||
| @@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | ||||
|  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) || | ||||
|  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) || | ||||
|  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) || | ||||
| @@ -2145,6 +2401,7 @@ static const struct nla_policy ip6_tnl_p | ||||
| @@ -2148,6 +2404,7 @@ static const struct nla_policy ip6_tnl_p | ||||
|  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 }, | ||||
|  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG }, | ||||
|  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 }, | ||||
|   | ||||
| @@ -141,7 +141,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  static const struct rt6_info ip6_blk_hole_entry_template = { | ||||
|  	.dst = { | ||||
|  		.__refcnt	= ATOMIC_INIT(1), | ||||
| @@ -2038,6 +2055,11 @@ static struct rt6_info *ip6_route_info_c | ||||
| @@ -2041,6 +2058,11 @@ static struct rt6_info *ip6_route_info_c | ||||
|  			rt->dst.output = ip6_pkt_prohibit_out; | ||||
|  			rt->dst.input = ip6_pkt_prohibit; | ||||
|  			break; | ||||
| @@ -153,7 +153,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  		case RTN_THROW: | ||||
|  		case RTN_UNREACHABLE: | ||||
|  		default: | ||||
| @@ -2763,6 +2785,17 @@ static int ip6_pkt_prohibit_out(struct n | ||||
| @@ -2766,6 +2788,17 @@ static int ip6_pkt_prohibit_out(struct n | ||||
|  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); | ||||
|  } | ||||
|   | ||||
| @@ -171,7 +171,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  /* | ||||
|   *	Allocate a dst for local (unicast / anycast) address. | ||||
|   */ | ||||
| @@ -2997,7 +3030,8 @@ static int rtm_to_fib6_config(struct sk_ | ||||
| @@ -3000,7 +3033,8 @@ static int rtm_to_fib6_config(struct sk_ | ||||
|  	if (rtm->rtm_type == RTN_UNREACHABLE || | ||||
|  	    rtm->rtm_type == RTN_BLACKHOLE || | ||||
|  	    rtm->rtm_type == RTN_PROHIBIT || | ||||
| @@ -181,7 +181,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  		cfg->fc_flags |= RTF_REJECT; | ||||
|   | ||||
|  	if (rtm->rtm_type == RTN_LOCAL) | ||||
| @@ -3487,6 +3521,9 @@ static int rt6_fill_node(struct net *net | ||||
| @@ -3490,6 +3524,9 @@ static int rt6_fill_node(struct net *net | ||||
|  		case -EACCES: | ||||
|  			rtm->rtm_type = RTN_PROHIBIT; | ||||
|  			break; | ||||
| @@ -191,7 +191,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  		case -EAGAIN: | ||||
|  			rtm->rtm_type = RTN_THROW; | ||||
|  			break; | ||||
| @@ -3805,6 +3842,8 @@ static int ip6_route_dev_notify(struct n | ||||
| @@ -3808,6 +3845,8 @@ static int ip6_route_dev_notify(struct n | ||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||
|  		net->ipv6.ip6_prohibit_entry->dst.dev = dev; | ||||
|  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); | ||||
| @@ -200,7 +200,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev; | ||||
|  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); | ||||
|  #endif | ||||
| @@ -4032,6 +4071,17 @@ static int __net_init ip6_route_net_init | ||||
| @@ -4035,6 +4074,17 @@ static int __net_init ip6_route_net_init | ||||
|  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; | ||||
|  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, | ||||
|  			 ip6_template_metrics, true); | ||||
| @@ -218,7 +218,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  #endif | ||||
|   | ||||
|  	net->ipv6.sysctl.flush_delay = 0; | ||||
| @@ -4050,6 +4100,8 @@ out: | ||||
| @@ -4053,6 +4103,8 @@ out: | ||||
|  	return ret; | ||||
|   | ||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||
| @@ -227,7 +227,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  out_ip6_prohibit_entry: | ||||
|  	kfree(net->ipv6.ip6_prohibit_entry); | ||||
|  out_ip6_null_entry: | ||||
| @@ -4067,6 +4119,7 @@ static void __net_exit ip6_route_net_exi | ||||
| @@ -4070,6 +4122,7 @@ static void __net_exit ip6_route_net_exi | ||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||
|  	kfree(net->ipv6.ip6_prohibit_entry); | ||||
|  	kfree(net->ipv6.ip6_blk_hole_entry); | ||||
| @@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | ||||
|  #endif | ||||
|  	dst_entries_destroy(&net->ipv6.ip6_dst_ops); | ||||
|  } | ||||
| @@ -4140,6 +4193,9 @@ void __init ip6_route_init_special_entri | ||||
| @@ -4143,6 +4196,9 @@ void __init ip6_route_init_special_entri | ||||
|  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); | ||||
|  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; | ||||
|  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); | ||||
|   | ||||
| @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  | ||||
| --- a/include/linux/netdevice.h | ||||
| +++ b/include/linux/netdevice.h | ||||
| @@ -1739,6 +1739,8 @@ struct net_device { | ||||
| @@ -1763,6 +1763,8 @@ struct net_device { | ||||
|  	struct netdev_hw_addr_list	mc; | ||||
|  	struct netdev_hw_addr_list	dev_addrs; | ||||
|   | ||||
|   | ||||
| @@ -41,7 +41,7 @@ Reviewed-by: Grant Grundler <grundler@chromium.org> | ||||
|  /* | ||||
|   * This structure holds all XPS maps for device.  Maps are indexed by CPU. | ||||
|   */ | ||||
| @@ -1239,6 +1249,9 @@ struct net_device_ops { | ||||
| @@ -1258,6 +1268,9 @@ struct net_device_ops { | ||||
|  						     const struct sk_buff *skb, | ||||
|  						     u16 rxq_index, | ||||
|  						     u32 flow_id); | ||||
|   | ||||
| @@ -129,7 +129,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | ||||
|  /* 802.11 specific */ | ||||
|  struct wireless_dev; | ||||
|  /* 802.15.4 specific */ | ||||
| @@ -1908,6 +1909,7 @@ struct net_device { | ||||
| @@ -1932,6 +1933,7 @@ struct net_device { | ||||
|  	struct netprio_map __rcu *priomap; | ||||
|  #endif | ||||
|  	struct phy_device	*phydev; | ||||
|   | ||||
| @@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com> | ||||
|  | ||||
| --- a/drivers/mtd/spi-nor/spi-nor.c | ||||
| +++ b/drivers/mtd/spi-nor/spi-nor.c | ||||
| @@ -2646,6 +2646,7 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||
| @@ -2650,6 +2650,7 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||
|  	struct device *dev = nor->dev; | ||||
|  	struct mtd_info *mtd = &nor->mtd; | ||||
|  	struct device_node *np = spi_nor_get_flash_node(nor); | ||||
| @@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com> | ||||
|  	int ret; | ||||
|  	int i; | ||||
|   | ||||
| @@ -2721,7 +2722,12 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||
| @@ -2725,7 +2726,12 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||
|  		spi_nor_wait_till_ready(nor); | ||||
|  	} | ||||
|   | ||||
|   | ||||
| @@ -18,7 +18,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | ||||
|   | ||||
|  #include <linux/usb/hcd.h> | ||||
|  #include <linux/usb/ch11.h> | ||||
| @@ -5072,6 +5073,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso | ||||
| @@ -5075,6 +5076,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso | ||||
|   | ||||
|  	retval = -ENOMEM; | ||||
|   | ||||
|   | ||||
| @@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	{ "w25m512jv", INFO(0xef7119, 0, 64 * 1024, 1024, | ||||
|  			SECT_4K | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ) }, | ||||
|   | ||||
| @@ -1220,6 +1272,9 @@ static int spi_nor_read(struct mtd_info | ||||
| @@ -1224,6 +1276,9 @@ static int spi_nor_read(struct mtd_info | ||||
|  	if (ret) | ||||
|  		return ret; | ||||
|   | ||||
| @@ -135,7 +135,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	while (len) { | ||||
|  		loff_t addr = from; | ||||
|   | ||||
| @@ -1244,6 +1299,18 @@ static int spi_nor_read(struct mtd_info | ||||
| @@ -1248,6 +1303,18 @@ static int spi_nor_read(struct mtd_info | ||||
|  	ret = 0; | ||||
|   | ||||
|  read_err: | ||||
| @@ -154,7 +154,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_READ); | ||||
|  	return ret; | ||||
|  } | ||||
| @@ -1345,6 +1412,10 @@ static int spi_nor_write(struct mtd_info | ||||
| @@ -1349,6 +1416,10 @@ static int spi_nor_write(struct mtd_info | ||||
|  	if (ret) | ||||
|  		return ret; | ||||
|   | ||||
| @@ -165,7 +165,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	for (i = 0; i < len; ) { | ||||
|  		ssize_t written; | ||||
|  		loff_t addr = to + i; | ||||
| @@ -1385,6 +1456,7 @@ static int spi_nor_write(struct mtd_info | ||||
| @@ -1389,6 +1460,7 @@ static int spi_nor_write(struct mtd_info | ||||
|  	} | ||||
|   | ||||
|  write_err: | ||||
| @@ -173,7 +173,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE); | ||||
|  	return ret; | ||||
|  } | ||||
| @@ -2801,8 +2873,10 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||
| @@ -2805,8 +2877,10 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||
|  	} else if (mtd->size > 0x1000000) { | ||||
|  		/* enable 4-byte addressing if the device exceeds 16MiB */ | ||||
|  		nor->addr_width = 4; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Stijn Tintel
					Stijn Tintel