From 86fd8cb435daf05f52468daabd41a363917485b7 Mon Sep 17 00:00:00 2001
From: Koen Vandeputte <koen.vandeputte@ncentric.com>
Date: Mon, 13 May 2019 13:41:34 +0200
Subject: [PATCH] kernel: bump 4.19 to 4.19.42

Refreshed all patches.

Remove upstreamed:
- 060-v5.1-serial-ar933x_uart-Fix-build-failure-with-disabled-c.patch
- 400-v5.2-leds-trigger-netdev-fix-refcnt-leak-on-interface-ren.patch

Compile-tested on: cns3xxx, imx6
Runtime-tested on: cns3xxx, imx6

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---
 include/kernel-version.mk                     |  4 +-
 .../140-GPIO-add-named-gpio-exports.patch     |  2 +-
 .../0036-GPIO-add-named-gpio-exports.patch    |  2 +-
 .../patches-4.19/070-i2c_support.patch        |  2 +-
 ...rt-Fix-build-failure-with-disabled-c.patch | 94 -------------------
 ...dev-fix-refcnt-leak-on-interface-ren.patch | 69 --------------
 .../hack-4.19/250-netfilter_depends.patch     |  2 +-
 .../530-jffs2_make_lzma_available.patch       |  2 +-
 .../pending-4.19/630-packet_socket_type.patch |  6 +-
 ...ng-with-source-address-failed-policy.patch | 20 ++--
 10 files changed, 20 insertions(+), 183 deletions(-)
 delete mode 100644 target/linux/generic/backport-4.19/060-v5.1-serial-ar933x_uart-Fix-build-failure-with-disabled-c.patch
 delete mode 100644 target/linux/generic/backport-4.19/400-v5.2-leds-trigger-netdev-fix-refcnt-leak-on-interface-ren.patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 43daed1729..c9c6b864b9 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -8,11 +8,11 @@ endif
 
 LINUX_VERSION-4.9 = .175
 LINUX_VERSION-4.14 = .118
-LINUX_VERSION-4.19 = .38
+LINUX_VERSION-4.19 = .42
 
 LINUX_KERNEL_HASH-4.9.175 = d98434f91f9df2bf36c7896ca747b7cf98be2e3a491073fd26e3f53cda07500c
 LINUX_KERNEL_HASH-4.14.118 = 687d73abd4b9af66ec30bdccdf96193e04316f9f5a1c7b8d74732c10b4729a15
-LINUX_KERNEL_HASH-4.19.38 = 6a3fdfa02dbc61ee8120ff0947a6eb0d6595b9bbe27e30a1b6f53b905f0bcd7f
+LINUX_KERNEL_HASH-4.19.42 = f809d76010d575979362551fda3190569502973d5e2a972e78b9093a3526da26
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
diff --git a/target/linux/apm821xx/patches-4.19/140-GPIO-add-named-gpio-exports.patch b/target/linux/apm821xx/patches-4.19/140-GPIO-add-named-gpio-exports.patch
index 6b1f7fc1cc..8e3060d768 100644
--- a/target/linux/apm821xx/patches-4.19/140-GPIO-add-named-gpio-exports.patch
+++ b/target/linux/apm821xx/patches-4.19/140-GPIO-add-named-gpio-exports.patch
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include "gpiolib.h"
  
-@@ -654,3 +656,72 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -660,3 +662,72 @@ void of_gpiochip_remove(struct gpio_chip
  	gpiochip_remove_pin_ranges(chip);
  	of_node_put(chip->of_node);
  }
diff --git a/target/linux/ath79/patches-4.19/0036-GPIO-add-named-gpio-exports.patch b/target/linux/ath79/patches-4.19/0036-GPIO-add-named-gpio-exports.patch
index c3977efa01..b3aa9fcc01 100644
--- a/target/linux/ath79/patches-4.19/0036-GPIO-add-named-gpio-exports.patch
+++ b/target/linux/ath79/patches-4.19/0036-GPIO-add-named-gpio-exports.patch
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  
  #include "gpiolib.h"
  
-@@ -654,3 +656,68 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -660,3 +662,68 @@ void of_gpiochip_remove(struct gpio_chip
  	gpiochip_remove_pin_ranges(chip);
  	of_node_put(chip->of_node);
  }
diff --git a/target/linux/cns3xxx/patches-4.19/070-i2c_support.patch b/target/linux/cns3xxx/patches-4.19/070-i2c_support.patch
index e151bf90f0..9bfb8444e6 100644
--- a/target/linux/cns3xxx/patches-4.19/070-i2c_support.patch
+++ b/target/linux/cns3xxx/patches-4.19/070-i2c_support.patch
@@ -1,6 +1,6 @@
 --- a/drivers/i2c/busses/Kconfig
 +++ b/drivers/i2c/busses/Kconfig
-@@ -458,6 +458,18 @@ config I2C_CBUS_GPIO
+@@ -459,6 +459,18 @@ config I2C_CBUS_GPIO
  	  This driver can also be built as a module.  If so, the module
  	  will be called i2c-cbus-gpio.
  
diff --git a/target/linux/generic/backport-4.19/060-v5.1-serial-ar933x_uart-Fix-build-failure-with-disabled-c.patch b/target/linux/generic/backport-4.19/060-v5.1-serial-ar933x_uart-Fix-build-failure-with-disabled-c.patch
deleted file mode 100644
index b1843842e4..0000000000
--- a/target/linux/generic/backport-4.19/060-v5.1-serial-ar933x_uart-Fix-build-failure-with-disabled-c.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 72ff51d8dd262d1fef25baedc2ac35116435be47 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
-Date: Wed, 6 Mar 2019 17:54:03 +0100
-Subject: [PATCH] serial: ar933x_uart: Fix build failure with disabled console
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Andrey has reported on OpenWrt's bug tracking system[1], that he
-currently can't use ar93xx_uart as pure serial UART without console
-(CONFIG_SERIAL_8250_CONSOLE and CONFIG_SERIAL_AR933X_CONSOLE undefined),
-because compilation ends with following error:
-
- ar933x_uart.c: In function 'ar933x_uart_console_write':
- ar933x_uart.c:550:14: error: 'struct uart_port' has no
-                               member named 'sysrq'
-
-So this patch moves all the code related to console handling behind
-series of CONFIG_SERIAL_AR933X_CONSOLE ifdefs.
-
-1. https://bugs.openwrt.org/index.php?do=details&task_id=2152
-
-Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Cc: Jiri Slaby <jslaby@suse.com>
-Cc: Andrey Batyiev <batyiev@gmail.com>
-Reported-by: Andrey Batyiev <batyiev@gmail.com>
-Tested-by: Andrey Batyiev <batyiev@gmail.com>
-Signed-off-by: Petr Å tetiar <ynezz@true.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/tty/serial/ar933x_uart.c | 24 ++++++++----------------
- 1 file changed, 8 insertions(+), 16 deletions(-)
-
---- a/drivers/tty/serial/ar933x_uart.c
-+++ b/drivers/tty/serial/ar933x_uart.c
-@@ -49,11 +49,6 @@ struct ar933x_uart_port {
- 	struct clk		*clk;
- };
- 
--static inline bool ar933x_uart_console_enabled(void)
--{
--	return IS_ENABLED(CONFIG_SERIAL_AR933X_CONSOLE);
--}
--
- static inline unsigned int ar933x_uart_read(struct ar933x_uart_port *up,
- 					    int offset)
- {
-@@ -508,6 +503,7 @@ static const struct uart_ops ar933x_uart
- 	.verify_port	= ar933x_uart_verify_port,
- };
- 
-+#ifdef CONFIG_SERIAL_AR933X_CONSOLE
- static struct ar933x_uart_port *
- ar933x_console_ports[CONFIG_SERIAL_AR933X_NR_UARTS];
- 
-@@ -604,14 +600,7 @@ static struct console ar933x_uart_consol
- 	.index		= -1,
- 	.data		= &ar933x_uart_driver,
- };
--
--static void ar933x_uart_add_console_port(struct ar933x_uart_port *up)
--{
--	if (!ar933x_uart_console_enabled())
--		return;
--
--	ar933x_console_ports[up->port.line] = up;
--}
-+#endif /* CONFIG_SERIAL_AR933X_CONSOLE */
- 
- static struct uart_driver ar933x_uart_driver = {
- 	.owner		= THIS_MODULE,
-@@ -700,7 +689,9 @@ static int ar933x_uart_probe(struct plat
- 	baud = ar933x_uart_get_baud(port->uartclk, 0, AR933X_UART_MAX_STEP);
- 	up->max_baud = min_t(unsigned int, baud, AR933X_UART_MAX_BAUD);
- 
--	ar933x_uart_add_console_port(up);
-+#ifdef CONFIG_SERIAL_AR933X_CONSOLE
-+	ar933x_console_ports[up->port.line] = up;
-+#endif
- 
- 	ret = uart_add_one_port(&ar933x_uart_driver, &up->port);
- 	if (ret)
-@@ -749,8 +740,9 @@ static int __init ar933x_uart_init(void)
- {
- 	int ret;
- 
--	if (ar933x_uart_console_enabled())
--		ar933x_uart_driver.cons = &ar933x_uart_console;
-+#ifdef CONFIG_SERIAL_AR933X_CONSOLE
-+	ar933x_uart_driver.cons = &ar933x_uart_console;
-+#endif
- 
- 	ret = uart_register_driver(&ar933x_uart_driver);
- 	if (ret)
diff --git a/target/linux/generic/backport-4.19/400-v5.2-leds-trigger-netdev-fix-refcnt-leak-on-interface-ren.patch b/target/linux/generic/backport-4.19/400-v5.2-leds-trigger-netdev-fix-refcnt-leak-on-interface-ren.patch
deleted file mode 100644
index 851e13ba2e..0000000000
--- a/target/linux/generic/backport-4.19/400-v5.2-leds-trigger-netdev-fix-refcnt-leak-on-interface-ren.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From dd7590a3ab3f0804ed5e930295e2caa5979e3958 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Thu, 28 Feb 2019 22:57:33 +0100
-Subject: [PATCH] leds: trigger: netdev: fix refcnt leak on interface rename
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Renaming a netdev-trigger-tracked interface was resulting in an
-unbalanced dev_hold().
-
-Example:
-> iw phy phy0 interface add foo type __ap
-> echo netdev > trigger
-> echo foo > device_name
-> ip link set foo name bar
-> iw dev bar del
-[  237.355366] unregister_netdevice: waiting for bar to become free. Usage count = 1
-[  247.435362] unregister_netdevice: waiting for bar to become free. Usage count = 1
-[  257.545366] unregister_netdevice: waiting for bar to become free. Usage count = 1
-
-Above problem was caused by trigger checking a dev->name which obviously
-changes after renaming an interface. It meant missing all further events
-including the NETDEV_UNREGISTER which is required for calling dev_put().
-
-This change fixes that by:
-1) Comparing device struct *address* for notification-filtering purposes
-2) Dropping unneeded NETDEV_CHANGENAME code (no behavior change)
-
-Fixes: 06f502f57d0d ("leds: trigger: Introduce a NETDEV trigger")
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Acked-by: Pavel Machek <pavel@ucw.cz>
-Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
----
- drivers/leds/trigger/ledtrig-netdev.c | 13 +++++--------
- 1 file changed, 5 insertions(+), 8 deletions(-)
-
---- a/drivers/leds/trigger/ledtrig-netdev.c
-+++ b/drivers/leds/trigger/ledtrig-netdev.c
-@@ -301,11 +301,11 @@ static int netdev_trig_notify(struct not
- 		container_of(nb, struct led_netdev_data, notifier);
- 
- 	if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE
--	    && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER
--	    && evt != NETDEV_CHANGENAME)
-+	    && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
- 		return NOTIFY_DONE;
- 
--	if (strcmp(dev->name, trigger_data->device_name))
-+	if (!(dev == trigger_data->net_dev ||
-+	      (evt == NETDEV_REGISTER && !strcmp(dev->name, trigger_data->device_name))))
- 		return NOTIFY_DONE;
- 
- 	cancel_delayed_work_sync(&trigger_data->work);
-@@ -320,12 +320,9 @@ static int netdev_trig_notify(struct not
- 		dev_hold(dev);
- 		trigger_data->net_dev = dev;
- 		break;
--	case NETDEV_CHANGENAME:
- 	case NETDEV_UNREGISTER:
--		if (trigger_data->net_dev) {
--			dev_put(trigger_data->net_dev);
--			trigger_data->net_dev = NULL;
--		}
-+		dev_put(trigger_data->net_dev);
-+		trigger_data->net_dev = NULL;
- 		break;
- 	case NETDEV_UP:
- 	case NETDEV_CHANGE:
diff --git a/target/linux/generic/hack-4.19/250-netfilter_depends.patch b/target/linux/generic/hack-4.19/250-netfilter_depends.patch
index b29ca5190e..cb744bd8ab 100644
--- a/target/linux/generic/hack-4.19/250-netfilter_depends.patch
+++ b/target/linux/generic/hack-4.19/250-netfilter_depends.patch
@@ -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
-@@ -1076,7 +1075,6 @@ config NETFILTER_XT_TARGET_SECMARK
+@@ -1077,7 +1076,6 @@ config NETFILTER_XT_TARGET_SECMARK
  
  config NETFILTER_XT_TARGET_TCPMSS
  	tristate '"TCPMSS" target support'
diff --git a/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch b/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch
index f0b4bdf036..625967342e 100644
--- a/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch
+++ b/target/linux/generic/pending-4.19/530-jffs2_make_lzma_available.patch
@@ -244,7 +244,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
 +}
 --- a/fs/jffs2/super.c
 +++ b/fs/jffs2/super.c
-@@ -371,14 +371,41 @@ static int __init init_jffs2_fs(void)
+@@ -374,14 +374,41 @@ static int __init init_jffs2_fs(void)
  	BUILD_BUG_ON(sizeof(struct jffs2_raw_inode) != 68);
  	BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
  
diff --git a/target/linux/generic/pending-4.19/630-packet_socket_type.patch b/target/linux/generic/pending-4.19/630-packet_socket_type.patch
index a0d177586a..333d4f5739 100644
--- a/target/linux/generic/pending-4.19/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-4.19/630-packet_socket_type.patch
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -3233,6 +3235,7 @@ static int packet_create(struct net *net
+@@ -3237,6 +3239,7 @@ static int packet_create(struct net *net
  	mutex_init(&po->pg_vec_lock);
  	po->rollover = NULL;
  	po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -3844,6 +3847,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3848,6 +3851,16 @@ packet_setsockopt(struct socket *sock, i
  		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
  		return 0;
  	}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -3896,6 +3909,13 @@ static int packet_getsockopt(struct sock
+@@ -3900,6 +3913,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR:
  		val = po->has_vnet_hdr;
  		break;
diff --git a/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 51cc20667c..d727edeb20 100644
--- a/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  static const struct rt6_info ip6_blk_hole_entry_template = {
  	.dst = {
  		.__refcnt	= ATOMIC_INIT(1),
-@@ -903,6 +917,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -900,6 +914,7 @@ static const int fib6_prop[RTN_MAX + 1]
  	[RTN_BLACKHOLE]	= -EINVAL,
  	[RTN_UNREACHABLE] = -EHOSTUNREACH,
  	[RTN_PROHIBIT]	= -EACCES,
@@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	[RTN_THROW]	= -EAGAIN,
  	[RTN_NAT]	= -EINVAL,
  	[RTN_XRESOLVE]	= -EINVAL,
-@@ -940,6 +955,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -937,6 +952,10 @@ static void ip6_rt_init_dst_reject(struc
  		rt->dst.output = ip6_pkt_prohibit_out;
  		rt->dst.input = ip6_pkt_prohibit;
  		break;
@@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  	case RTN_THROW:
  	case RTN_UNREACHABLE:
  	default:
-@@ -3769,6 +3788,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -3758,6 +3777,17 @@ static int ip6_pkt_prohibit_out(struct n
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -4216,7 +4246,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4205,7 +4235,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 ||
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -5060,6 +5091,8 @@ static int ip6_route_dev_notify(struct n
+@@ -5053,6 +5084,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);
@@ -194,7 +194,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
-@@ -5071,6 +5104,7 @@ static int ip6_route_dev_notify(struct n
+@@ -5064,6 +5097,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -5265,6 +5299,15 @@ static int __net_init ip6_route_net_init
+@@ -5258,6 +5292,15 @@ 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;
-@@ -5283,6 +5326,8 @@ out:
+@@ -5276,6 +5319,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:
-@@ -5303,6 +5348,7 @@ static void __net_exit ip6_route_net_exi
+@@ -5296,6 +5341,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);
  }
-@@ -5379,6 +5425,9 @@ void __init ip6_route_init_special_entri
+@@ -5372,6 +5418,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);
-- 
2.30.2