LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .119
-LINUX_VERSION-4.9 = .122
LINUX_VERSION-4.14 = .65
+LINUX_VERSION-4.9 = .123
LINUX_KERNEL_HASH-3.18.119 = 2bab623ed868b679eac224f62212cc285264061bedf1e32897f72e35aa26160d
-LINUX_KERNEL_HASH-4.9.122 = a46f90876b2cdb8ca1626e6489e76f8706dfd593a9d44fc91e68df47db6cf86c
LINUX_KERNEL_HASH-4.14.65 = 12980c406bb9be670db58a88464d1c36cafd3c1d4d5ee09e8ecfa71e5eb5a5ec
+LINUX_KERNEL_HASH-4.9.123 = 8d12ceab9f8cbfd0555c881b35ed4384cf3ea8e223d894c030b04786005e5071
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
/**
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
* @t: the outgoing tunnel device
-@@ -1298,6 +1438,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1294,6 +1434,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
{
struct ip6_tnl *t = netdev_priv(dev);
struct ipv6hdr *ipv6h = ipv6_hdr(skb);
int encap_limit = -1;
__u16 offset;
struct flowi6 fl6;
-@@ -1356,6 +1497,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1352,6 +1493,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
fl6.flowi6_mark = skb->mark;
}
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
return -1;
-@@ -1483,6 +1636,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1479,6 +1632,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
t->parms.flowinfo = p->flowinfo;
t->parms.link = p->link;
t->parms.proto = p->proto;
dst_cache_reset(&t->dst_cache);
ip6_tnl_link_config(t);
return 0;
-@@ -1521,6 +1682,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1517,6 +1678,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
p->flowinfo = u->flowinfo;
p->link = u->link;
p->proto = u->proto;
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1898,6 +2060,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1894,6 +2056,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -1932,6 +2103,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1928,6 +2099,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_COLLECT_METADATA])
parms->collect_md = true;
}
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2045,6 +2256,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2041,6 +2252,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2072,6 +2289,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2068,6 +2285,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(2) +
/* IFLA_IPTUN_COLLECT_METADATA */
nla_total_size(0) +
0;
}
-@@ -2079,6 +2314,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2075,6 +2310,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2087,9 +2325,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2083,9 +2321,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
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) ||
-@@ -2127,6 +2383,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2123,6 +2379,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
unsigned int custom_divisor;
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
-@@ -384,6 +384,20 @@ static unsigned int mem16_serial_in(stru
+@@ -383,6 +383,20 @@ static unsigned int mem16_serial_in(stru
return readw(p->membase + offset);
}
static void mem32_serial_out(struct uart_port *p, int offset, int value)
{
offset = offset << p->regshift;
-@@ -456,6 +470,11 @@ static void set_io_from_upio(struct uart
+@@ -455,6 +469,11 @@ static void set_io_from_upio(struct uart
p->serial_out = mem32be_serial_out;
break;
#ifdef CONFIG_SERIAL_8250_RT288X
case UPIO_AU:
p->serial_in = au_serial_in;
-@@ -483,6 +502,7 @@ serial_port_out_sync(struct uart_port *p
+@@ -482,6 +501,7 @@ serial_port_out_sync(struct uart_port *p
case UPIO_MEM16:
case UPIO_MEM32:
case UPIO_MEM32BE:
case UPIO_AU:
p->serial_out(p, offset, value);
p->serial_in(p, UART_LCR); /* safe, no side-effects */
-@@ -2760,6 +2780,7 @@ static int serial8250_request_std_resour
+@@ -2759,6 +2779,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:
if (!port->mapbase)
break;
-@@ -2798,6 +2819,7 @@ static void serial8250_release_std_resou
+@@ -2797,6 +2818,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM: