diff --git a/target/linux/generic/patches-4.9/220-gc_sections.patch b/target/linux/generic/patches-4.9/220-gc_sections.patch
index 570083a50916909cab41b5821d0fb1728ef98dae..e8a834fbebc58f4310b0574e69a7969dc60a9bc8 100644
--- a/target/linux/generic/patches-4.9/220-gc_sections.patch
+++ b/target/linux/generic/patches-4.9/220-gc_sections.patch
@@ -63,6 +63,15 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  			 VMLINUX_SYMBOL(__stop_syscalls_metadata) = .;
  #else
  #define TRACE_SYSCALLS()
+@@ -156,7 +156,7 @@
+ #ifdef CONFIG_SERIAL_EARLYCON
+ #define EARLYCON_TABLE() STRUCT_ALIGN();			\
+ 			 VMLINUX_SYMBOL(__earlycon_table) = .;	\
+-			 *(__earlycon_table)			\
++			 KEEP(*(__earlycon_table))		\
+ 			 VMLINUX_SYMBOL(__earlycon_table_end) = .;
+ #else
+ #define EARLYCON_TABLE()
 @@ -169,8 +169,8 @@
  #define _OF_TABLE_1(name)						\
  	. = ALIGN(8);							\
diff --git a/target/linux/generic/patches-4.9/721-phy_packets.patch b/target/linux/generic/patches-4.9/721-phy_packets.patch
index 22ca7df862a80fc42e276a4afc5e9b9c58ce7629..46e8574b9bcd087adea45e6a5ceedb6226f41df6 100644
--- a/target/linux/generic/patches-4.9/721-phy_packets.patch
+++ b/target/linux/generic/patches-4.9/721-phy_packets.patch
@@ -28,7 +28,7 @@
  	const struct header_ops *header_ops;
  
  	unsigned int		flags;
-@@ -1779,6 +1782,10 @@ struct net_device {
+@@ -1779,6 +1786,10 @@ struct net_device {
  	struct mpls_dev __rcu	*mpls_ptr;
  #endif