From: Greg Kroah-Hartman Date: Thu, 18 May 2017 13:15:11 +0000 (+0200) Subject: fix up samsung patch in 4.11 queue X-Git-Tag: v3.18.54~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b9c50d6ceb2ecc36cb37080db28ca535029f406a;p=thirdparty%2Fkernel%2Fstable-queue.git fix up samsung patch in 4.11 queue --- diff --git a/queue-3.18/net-ipv6-add-sysctl-option-accept_ra_min_hop_limit.patch b/queue-3.18/net-ipv6-add-sysctl-option-accept_ra_min_hop_limit.patch deleted file mode 100644 index b3108cfd53d..00000000000 --- a/queue-3.18/net-ipv6-add-sysctl-option-accept_ra_min_hop_limit.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 8013d1d7eafb0589ca766db6b74026f76b7f5cb4 Mon Sep 17 00:00:00 2001 -From: Hangbin Liu -Date: Thu, 30 Jul 2015 14:28:42 +0800 -Subject: net/ipv6: add sysctl option accept_ra_min_hop_limit - -From: Hangbin Liu - -commit 8013d1d7eafb0589ca766db6b74026f76b7f5cb4 upstream. - -Commit 6fd99094de2b ("ipv6: Don't reduce hop limit for an interface") -disabled accept hop limit from RA if it is smaller than the current hop -limit for security stuff. But this behavior kind of break the RFC definition. - -RFC 4861, 6.3.4. Processing Received Router Advertisements - A Router Advertisement field (e.g., Cur Hop Limit, Reachable Time, - and Retrans Timer) may contain a value denoting that it is - unspecified. In such cases, the parameter should be ignored and the - host should continue using whatever value it is already using. - - If the received Cur Hop Limit value is non-zero, the host SHOULD set - its CurHopLimit variable to the received value. - -So add sysctl option accept_ra_min_hop_limit to let user choose the minimum -hop limit value they can accept from RA. And set default to 1 to meet RFC -standards. - -Signed-off-by: Hangbin Liu -Acked-by: YOSHIFUJI Hideaki -Signed-off-by: David S. Miller -Signed-off-by: Amit Pundir -Signed-off-by: Greg Kroah-Hartman ---- - Documentation/networking/ip-sysctl.txt | 8 ++++++++ - include/linux/ipv6.h | 1 + - include/uapi/linux/ipv6.h | 1 + - net/ipv6/addrconf.c | 10 ++++++++++ - net/ipv6/ndisc.c | 16 +++++++--------- - 5 files changed, 27 insertions(+), 9 deletions(-) - ---- a/Documentation/networking/ip-sysctl.txt -+++ b/Documentation/networking/ip-sysctl.txt -@@ -1256,6 +1256,14 @@ accept_ra_from_local - BOOLEAN - disabled if accept_ra_from_local is disabled - on a specific interface. - -+accept_ra_min_hop_limit - INTEGER -+ Minimum hop limit Information in Router Advertisement. -+ -+ Hop limit Information in Router Advertisement less than this -+ variable shall be ignored. -+ -+ Default: 1 -+ - accept_ra_pinfo - BOOLEAN - Learn Prefix Information in Router Advertisement. - ---- a/include/linux/ipv6.h -+++ b/include/linux/ipv6.h -@@ -29,6 +29,7 @@ struct ipv6_devconf { - __s32 max_desync_factor; - __s32 max_addresses; - __s32 accept_ra_defrtr; -+ __s32 accept_ra_min_hop_limit; - __s32 accept_ra_pinfo; - #ifdef CONFIG_IPV6_ROUTER_PREF - __s32 accept_ra_rtr_pref; ---- a/include/uapi/linux/ipv6.h -+++ b/include/uapi/linux/ipv6.h -@@ -164,6 +164,7 @@ enum { - DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL, - DEVCONF_SUPPRESS_FRAG_NDISC, - DEVCONF_ACCEPT_RA_FROM_LOCAL, -+ DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT, - DEVCONF_MAX - }; - ---- a/net/ipv6/addrconf.c -+++ b/net/ipv6/addrconf.c -@@ -188,6 +188,7 @@ static struct ipv6_devconf ipv6_devconf - .max_addresses = IPV6_MAX_ADDRESSES, - .accept_ra_defrtr = 1, - .accept_ra_from_local = 0, -+ .accept_ra_min_hop_limit= 1, - .accept_ra_pinfo = 1, - #ifdef CONFIG_IPV6_ROUTER_PREF - .accept_ra_rtr_pref = 1, -@@ -225,6 +226,7 @@ static struct ipv6_devconf ipv6_devconf_ - .max_addresses = IPV6_MAX_ADDRESSES, - .accept_ra_defrtr = 1, - .accept_ra_from_local = 0, -+ .accept_ra_min_hop_limit= 1, - .accept_ra_pinfo = 1, - #ifdef CONFIG_IPV6_ROUTER_PREF - .accept_ra_rtr_pref = 1, -@@ -4321,6 +4323,7 @@ static inline void ipv6_store_devconf(st - array[DEVCONF_MAX_DESYNC_FACTOR] = cnf->max_desync_factor; - array[DEVCONF_MAX_ADDRESSES] = cnf->max_addresses; - array[DEVCONF_ACCEPT_RA_DEFRTR] = cnf->accept_ra_defrtr; -+ array[DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT] = cnf->accept_ra_min_hop_limit; - array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo; - #ifdef CONFIG_IPV6_ROUTER_PREF - array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref; -@@ -5135,6 +5138,13 @@ static struct addrconf_sysctl_table - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = proc_dointvec, -+ }, -+ { -+ .procname = "accept_ra_min_hop_limit", -+ .data = &ipv6_devconf.accept_ra_min_hop_limit, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = proc_dointvec, - }, - { - .procname = "accept_ra_pinfo", ---- a/net/ipv6/ndisc.c -+++ b/net/ipv6/ndisc.c -@@ -1214,18 +1214,16 @@ static void ndisc_router_discovery(struc - - if (rt) - rt6_set_expires(rt, jiffies + (HZ * lifetime)); -- if (ra_msg->icmph.icmp6_hop_limit) { -- /* Only set hop_limit on the interface if it is higher than -- * the current hop_limit. -- */ -- if (in6_dev->cnf.hop_limit < ra_msg->icmph.icmp6_hop_limit) { -+ if (in6_dev->cnf.accept_ra_min_hop_limit < 256 && -+ ra_msg->icmph.icmp6_hop_limit) { -+ if (in6_dev->cnf.accept_ra_min_hop_limit <= ra_msg->icmph.icmp6_hop_limit) { - in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit; -+ if (rt) -+ dst_metric_set(&rt->dst, RTAX_HOPLIMIT, -+ ra_msg->icmph.icmp6_hop_limit); - } else { -- ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than current\n"); -+ ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than minimum\n"); - } -- if (rt) -- dst_metric_set(&rt->dst, RTAX_HOPLIMIT, -- ra_msg->icmph.icmp6_hop_limit); - } - - skip_defrtr: diff --git a/queue-3.18/series b/queue-3.18/series index 1092049fbbd..24392b2d91c 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -35,7 +35,6 @@ asn.1-fix-non-match-detection-failure-on-data-overrun.patch keys-fix-asn.1-indefinite-length-object-parsing.patch ext4-fix-potential-use-after-free-in-__ext4_journal_stop.patch sg-fix-double-free-when-drives-detach-during-sg_io.patch -net-ipv6-add-sysctl-option-accept_ra_min_hop_limit.patch ipv6-sctp-add-rcu-protection-around-np-opt.patch ipv6-sctp-fix-lockdep-splat-in-sctp_v6_get_dst.patch af_unix-guard-against-other-sk-in-unix_dgram_sendmsg.patch diff --git a/queue-4.11/serial-samsung-add-missing-checks-for-dma_map_single-failure.patch b/queue-4.11/serial-samsung-add-missing-checks-for-dma_map_single-failure.patch index 6a79b0f2291..fed17d852a1 100644 --- a/queue-4.11/serial-samsung-add-missing-checks-for-dma_map_single-failure.patch +++ b/queue-4.11/serial-samsung-add-missing-checks-for-dma_map_single-failure.patch @@ -41,21 +41,20 @@ Reviewed-by: Shuah Khan Signed-off-by: Greg Kroah-Hartman --- - drivers/tty/serial/samsung.c | 31 ++++++++++++++++++++++++------- - 1 file changed, 24 insertions(+), 7 deletions(-) + drivers/tty/serial/samsung.c | 30 ++++++++++++++++++++++++------ + 1 file changed, 24 insertions(+), 6 deletions(-) --- a/drivers/tty/serial/samsung.c +++ b/drivers/tty/serial/samsung.c -@@ -859,7 +859,7 @@ static void s3c24xx_serial_break_ctl(str - static int s3c24xx_serial_request_dma(struct s3c24xx_uart_port *p) +@@ -860,6 +860,7 @@ static int s3c24xx_serial_request_dma(st { struct s3c24xx_uart_dma *dma = p->dma; -- unsigned long flags; + unsigned long flags; + int ret; /* Default slave configuration parameters */ dma->rx_conf.direction = DMA_DEV_TO_MEM; -@@ -884,8 +884,8 @@ static int s3c24xx_serial_request_dma(st +@@ -884,8 +885,8 @@ static int s3c24xx_serial_request_dma(st dma->tx_chan = dma_request_chan(p->port.dev, "tx"); if (IS_ERR(dma->tx_chan)) { @@ -66,7 +65,7 @@ Signed-off-by: Greg Kroah-Hartman } dmaengine_slave_config(dma->tx_chan, &dma->tx_conf); -@@ -894,15 +894,17 @@ static int s3c24xx_serial_request_dma(st +@@ -894,15 +895,17 @@ static int s3c24xx_serial_request_dma(st dma->rx_size = PAGE_SIZE; dma->rx_buf = kmalloc(dma->rx_size, GFP_KERNEL); @@ -88,7 +87,7 @@ Signed-off-by: Greg Kroah-Hartman spin_lock_irqsave(&p->port.lock, flags); -@@ -911,8 +913,23 @@ static int s3c24xx_serial_request_dma(st +@@ -911,8 +914,23 @@ static int s3c24xx_serial_request_dma(st UART_XMIT_SIZE, DMA_TO_DEVICE); spin_unlock_irqrestore(&p->port.lock, flags);