diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 5f8653ffe86ebaa7b80f906c5b32c3b6a30c77ef..5f0b84a0c0a69ff745826ed38a6fb7efbc5445f2 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -7,14 +7,14 @@ LINUX_VERSION-3.8  = .13
 LINUX_VERSION-3.10 = .58
 LINUX_VERSION-3.13 = .7
 LINUX_VERSION-3.14 = .18
-LINUX_VERSION-3.18 = -rc2
+LINUX_VERSION-3.18 = -rc4
 
 LINUX_KERNEL_MD5SUM-3.3.8   = f1058f64eed085deb44f10cee8541d50
 LINUX_KERNEL_MD5SUM-3.8.13  = 2af19d06cd47ec459519159cdd10542d
 LINUX_KERNEL_MD5SUM-3.10.58 = 3ff3478b6351143cef22d4b81cf48b01
 LINUX_KERNEL_MD5SUM-3.13.7  = 370adced5e5c1cb1d0d621c2dae2723f
 LINUX_KERNEL_MD5SUM-3.14.18 = 3b002a06d0964d8101abec768c2d4eef
-LINUX_KERNEL_MD5SUM-3.18-rc2 = 85c45de0ec6f0f9678e4d82549851448
+LINUX_KERNEL_MD5SUM-3.18-rc4 = 5bf4da5308bafbfb7620bb685fc1ecba
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
diff --git a/target/linux/bcm53xx/config-3.18 b/target/linux/bcm53xx/config-3.18
index e31a24f0dac87e282c2c024e6a2bb0ae76808880..3d6f3cdef76d30cd99b50bb6bc5bd88355b267e6 100644
--- a/target/linux/bcm53xx/config-3.18
+++ b/target/linux/bcm53xx/config-3.18
@@ -50,7 +50,6 @@ CONFIG_ARM_THUMB=y
 # CONFIG_ARM_THUMBEE is not set
 CONFIG_ARM_VIRT_EXT=y
 CONFIG_ATAGS=y
-# CONFIG_ATMEL_PIT is not set
 # CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
 CONFIG_AUTO_ZRELADDR=y
 CONFIG_B53=y
@@ -68,7 +67,6 @@ CONFIG_BCMA_HOST_PCI=y
 CONFIG_BCMA_HOST_PCI_POSSIBLE=y
 CONFIG_BCMA_HOST_SOC=y
 CONFIG_BGMAC=y
-# CONFIG_BUILD_BIN2C is not set
 CONFIG_CACHE_L2X0=y
 CONFIG_CACHE_PL310=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -97,7 +95,6 @@ CONFIG_CRC16=y
 CONFIG_CRYPTO_DEFLATE=y
 CONFIG_CRYPTO_LZO=y
 CONFIG_CRYPTO_XZ=y
-# CONFIG_CXL_BASE is not set
 CONFIG_DCACHE_WORD_ACCESS=y
 CONFIG_DEBUG_BCM_5301X=y
 CONFIG_DEBUG_INFO=y
@@ -116,7 +113,6 @@ CONFIG_DEBUG_UNCOMPRESS=y
 CONFIG_DEBUG_USER=y
 CONFIG_DTC=y
 CONFIG_EARLY_PRINTK=y
-# CONFIG_EM_TIMER_STI is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_GENERIC_BUG=y
@@ -201,14 +197,11 @@ CONFIG_MDIO_BOARDINFO=y
 CONFIG_MIGHT_HAVE_CACHE_L2X0=y
 CONFIG_MIGHT_HAVE_PCI=y
 CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MODULE_COMPRESS is not set
 CONFIG_MTD_BCM47XX_PARTS=y
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_BCM=y
 CONFIG_MTD_NAND_ECC=y
-# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
 # CONFIG_MTD_PHYSMAP_OF is not set
-# CONFIG_MTD_SM_COMMON is not set
 CONFIG_MTD_SPI_BCM53XXSPIFLASH=y
 CONFIG_MTD_SPI_NOR=y
 # CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
@@ -222,8 +215,6 @@ CONFIG_MULTI_IRQ_HANDLER=y
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NET_FLOW_LIMIT=y
-# CONFIG_NET_PTP_CLASSIFY is not set
-# CONFIG_NET_UDP_TUNNEL is not set
 CONFIG_NO_BOOTMEM=y
 CONFIG_NR_CPUS=4
 CONFIG_OF=y
@@ -264,9 +255,6 @@ CONFIG_SCHED_HRTICK=y
 # CONFIG_SCSI_DMA is not set
 CONFIG_SERIAL_EARLYCON=y
 CONFIG_SERIAL_OF_PLATFORM=y
-# CONFIG_SH_TIMER_CMT is not set
-# CONFIG_SH_TIMER_MTU2 is not set
-# CONFIG_SH_TIMER_TMU is not set
 CONFIG_SMP=y
 CONFIG_SMP_ON_UP=y
 CONFIG_SPARSE_IRQ=y
@@ -288,7 +276,6 @@ CONFIG_UBIFS_FS_XZ=y
 CONFIG_UBIFS_FS_ZLIB=y
 CONFIG_UID16=y
 CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-# CONFIG_UPROBES is not set
 CONFIG_USB_SUPPORT=y
 CONFIG_USE_OF=y
 CONFIG_VECTORS_BASE=0xffff0000
diff --git a/target/linux/bcm53xx/patches-3.18/402-mtd-spi-nor-allow-NULL-as-spi_device_id-in-spi_nor_s.patch b/target/linux/bcm53xx/patches-3.18/402-mtd-spi-nor-allow-NULL-as-spi_device_id-in-spi_nor_s.patch
index de1e50625545682aee5916752356b266e61836cb..b72e2e26134ce275f4a01a623e6835e6c776bbf3 100644
--- a/target/linux/bcm53xx/patches-3.18/402-mtd-spi-nor-allow-NULL-as-spi_device_id-in-spi_nor_s.patch
+++ b/target/linux/bcm53xx/patches-3.18/402-mtd-spi-nor-allow-NULL-as-spi_device_id-in-spi_nor_s.patch
@@ -1,8 +1,8 @@
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -926,29 +926,23 @@ int spi_nor_scan(struct spi_nor *nor, co
- 	if (ret)
- 		return ret;
+@@ -931,29 +931,23 @@ int spi_nor_scan(struct spi_nor *nor, co
+ 	if (!id)
+ 		return -ENOENT;
  
 -	info = (void *)id->driver_data;
 -
diff --git a/target/linux/bcm53xx/patches-3.18/403-mtd-spi-nor-refactor-wait-till-ready.patch b/target/linux/bcm53xx/patches-3.18/403-mtd-spi-nor-refactor-wait-till-ready.patch
index c274a7e80c14272789ac779ec7f1d460ff87f31c..08e53a74182802d25c083da04fdc00974341c725 100644
--- a/target/linux/bcm53xx/patches-3.18/403-mtd-spi-nor-refactor-wait-till-ready.patch
+++ b/target/linux/bcm53xx/patches-3.18/403-mtd-spi-nor-refactor-wait-till-ready.patch
@@ -36,7 +36,7 @@
  		return ret;
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -163,81 +163,69 @@ static inline int set_4byte(struct spi_n
+@@ -165,81 +165,69 @@ static inline int set_4byte(struct spi_n
  		return nor->write_reg(nor, SPINOR_OP_BRWR, nor->cmd_buf, 1, 0);
  	}
  }
@@ -154,7 +154,7 @@
  	return nor->write_reg(nor, SPINOR_OP_CHIP_ERASE, NULL, 0, 0);
  }
  
-@@ -290,6 +278,8 @@ static int spi_nor_erase(struct mtd_info
+@@ -292,6 +280,8 @@ static int spi_nor_erase(struct mtd_info
  	if (ret)
  		return ret;
  
@@ -163,7 +163,7 @@
  	/* whole-chip erase? */
  	if (len == mtd->size) {
  		if (erase_chip(nor)) {
-@@ -297,6 +287,10 @@ static int spi_nor_erase(struct mtd_info
+@@ -299,6 +289,10 @@ static int spi_nor_erase(struct mtd_info
  			goto erase_err;
  		}
  
@@ -174,7 +174,7 @@
  	/* REVISIT in some cases we could speed up erasing large regions
  	 * by using SPINOR_OP_SE instead of SPINOR_OP_BE_4K.  We may have set up
  	 * to use "small sector erase", but that's not always optimal.
-@@ -312,9 +306,15 @@ static int spi_nor_erase(struct mtd_info
+@@ -314,9 +308,15 @@ static int spi_nor_erase(struct mtd_info
  
  			addr += mtd->erasesize;
  			len -= mtd->erasesize;
@@ -190,7 +190,7 @@
  	spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_ERASE);
  
  	instr->state = MTD_ERASE_DONE;
-@@ -339,11 +339,6 @@ static int spi_nor_lock(struct mtd_info
+@@ -341,11 +341,6 @@ static int spi_nor_lock(struct mtd_info
  	if (ret)
  		return ret;
  
@@ -202,7 +202,7 @@
  	status_old = read_sr(nor);
  
  	if (offset < mtd->size - (mtd->size / 2))
-@@ -386,11 +381,6 @@ static int spi_nor_unlock(struct mtd_inf
+@@ -388,11 +383,6 @@ static int spi_nor_unlock(struct mtd_inf
  	if (ret)
  		return ret;
  
@@ -214,7 +214,7 @@
  	status_old = read_sr(nor);
  
  	if (offset+len > mtd->size - (mtd->size / 64))
-@@ -703,11 +693,6 @@ static int sst_write(struct mtd_info *mt
+@@ -704,11 +694,6 @@ static int sst_write(struct mtd_info *mt
  	if (ret)
  		return ret;
  
@@ -226,7 +226,7 @@
  	write_enable(nor);
  
  	nor->sst_write_second = false;
-@@ -719,7 +704,7 @@ static int sst_write(struct mtd_info *mt
+@@ -720,7 +705,7 @@ static int sst_write(struct mtd_info *mt
  
  		/* write one byte. */
  		nor->write(nor, to, 1, retlen, buf);
@@ -235,7 +235,7 @@
  		if (ret)
  			goto time_out;
  	}
-@@ -731,7 +716,7 @@ static int sst_write(struct mtd_info *mt
+@@ -732,7 +717,7 @@ static int sst_write(struct mtd_info *mt
  
  		/* write two bytes. */
  		nor->write(nor, to, 2, retlen, buf + actual);
@@ -244,7 +244,7 @@
  		if (ret)
  			goto time_out;
  		to += 2;
-@@ -740,7 +725,7 @@ static int sst_write(struct mtd_info *mt
+@@ -741,7 +726,7 @@ static int sst_write(struct mtd_info *mt
  	nor->sst_write_second = false;
  
  	write_disable(nor);
@@ -253,7 +253,7 @@
  	if (ret)
  		goto time_out;
  
-@@ -751,7 +736,7 @@ static int sst_write(struct mtd_info *mt
+@@ -752,7 +737,7 @@ static int sst_write(struct mtd_info *mt
  		nor->program_opcode = SPINOR_OP_BP;
  		nor->write(nor, to, 1, retlen, buf + actual);
  
@@ -262,7 +262,7 @@
  		if (ret)
  			goto time_out;
  		write_disable(nor);
-@@ -779,11 +764,6 @@ static int spi_nor_write(struct mtd_info
+@@ -780,11 +765,6 @@ static int spi_nor_write(struct mtd_info
  	if (ret)
  		return ret;
  
@@ -274,7 +274,7 @@
  	write_enable(nor);
  
  	page_offset = to & (nor->page_size - 1);
-@@ -802,16 +782,20 @@ static int spi_nor_write(struct mtd_info
+@@ -803,16 +783,20 @@ static int spi_nor_write(struct mtd_info
  			if (page_size > nor->page_size)
  				page_size = nor->page_size;
  
@@ -297,7 +297,7 @@
  }
  
  static int macronix_quad_enable(struct spi_nor *nor)
-@@ -824,7 +808,7 @@ static int macronix_quad_enable(struct s
+@@ -825,7 +809,7 @@ static int macronix_quad_enable(struct s
  	nor->cmd_buf[0] = val | SR_QUAD_EN_MX;
  	nor->write_reg(nor, SPINOR_OP_WRSR, nor->cmd_buf, 1, 0);
  
@@ -306,7 +306,7 @@
  		return 1;
  
  	ret = read_sr(nor);
-@@ -906,8 +890,6 @@ static int spi_nor_check(struct spi_nor
+@@ -907,8 +891,6 @@ static int spi_nor_check(struct spi_nor
  
  	if (!nor->read_id)
  		nor->read_id = spi_nor_read_id;
@@ -315,7 +315,7 @@
  
  	return 0;
  }
-@@ -978,9 +960,8 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -983,9 +965,8 @@ int spi_nor_scan(struct spi_nor *nor, co
  	else
  		mtd->_write = spi_nor_write;
  
diff --git a/target/linux/bcm53xx/patches-3.18/404-mtd-bcm53xxspiflash-new-driver-for-SPI-flahes-on-Bro.patch b/target/linux/bcm53xx/patches-3.18/404-mtd-bcm53xxspiflash-new-driver-for-SPI-flahes-on-Bro.patch
index 9a9d903f825ac41349e3c13dccf889a67d473e43..80e1d324d7392ea856f6e93f7fc3b30e4fdcc487 100644
--- a/target/linux/bcm53xx/patches-3.18/404-mtd-bcm53xxspiflash-new-driver-for-SPI-flahes-on-Bro.patch
+++ b/target/linux/bcm53xx/patches-3.18/404-mtd-bcm53xxspiflash-new-driver-for-SPI-flahes-on-Bro.patch
@@ -198,11 +198,11 @@
 +	return ERR_PTR(-ENODEV);
 +
 +found_name:
-+	id = spi_nor_match_id(name);
-+	if (!id) {
-+		dev_err(dev, "No matching entry for %s flash\n", name);
-+		return ERR_PTR(-ENOENT);
-+	}
++//	id = spi_nor_match_id(name);
++//	if (!id) {
++//		dev_err(dev, "No matching entry for %s flash\n", name);
++//		return ERR_PTR(-ENOENT);
++//	}
 +
 +	return id;
 +}
@@ -235,7 +235,7 @@
 +	b53sf->nor.read_id = bcm53xxspiflash_read_id;
 +	b53sf->nor.priv = b53sf;
 +
-+	err = spi_nor_scan(&b53sf->nor, NULL, SPI_NOR_NORMAL);
++	err = spi_nor_scan(&b53sf->nor, "w25q128", SPI_NOR_NORMAL);
 +	if (err)
 +		return err;
 +
diff --git a/target/linux/bcm53xx/patches-3.18/405-mtd-bcm53xxspiflash-try-using-JEDEC-as-one-of-method.patch b/target/linux/bcm53xx/patches-3.18/405-mtd-bcm53xxspiflash-try-using-JEDEC-as-one-of-method.patch
index 04d0058d75a6b4ad10c48c0984974029d4265e29..d97441f586345ed0d5ba320d0a021c480c91f103 100644
--- a/target/linux/bcm53xx/patches-3.18/405-mtd-bcm53xxspiflash-try-using-JEDEC-as-one-of-method.patch
+++ b/target/linux/bcm53xx/patches-3.18/405-mtd-bcm53xxspiflash-try-using-JEDEC-as-one-of-method.patch
@@ -9,19 +9,19 @@
 +	return spi_nor_read_id(nor);
  
  found_name:
- 	id = spi_nor_match_id(name);
+ //	id = spi_nor_match_id(name);
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -630,7 +630,7 @@ const struct spi_device_id spi_nor_ids[]
+@@ -631,7 +631,7 @@ static const struct spi_device_id spi_no
+ 	{ },
  };
- EXPORT_SYMBOL_GPL(spi_nor_ids);
  
 -static const struct spi_device_id *spi_nor_read_id(struct spi_nor *nor)
 +const struct spi_device_id *spi_nor_read_id(struct spi_nor *nor)
  {
  	int			tmp;
  	u8			id[5];
-@@ -661,6 +661,7 @@ static const struct spi_device_id *spi_n
+@@ -662,6 +662,7 @@ static const struct spi_device_id *spi_n
  	dev_err(nor->dev, "unrecognized JEDEC id %06x\n", jedec);
  	return ERR_PTR(-ENODEV);
  }
diff --git a/target/linux/brcm47xx/patches-3.18/027-mtd-bcm47xxpart-get-nvram.patch b/target/linux/brcm47xx/patches-3.18/027-mtd-bcm47xxpart-get-nvram.patch
index 0b3874b329f119d324e916d2f72393e5b5f443f8..47f51ef8b06e16cbdf60036bb270049086db6467 100644
--- a/target/linux/brcm47xx/patches-3.18/027-mtd-bcm47xxpart-get-nvram.patch
+++ b/target/linux/brcm47xx/patches-3.18/027-mtd-bcm47xxpart-get-nvram.patch
@@ -1,6 +1,6 @@
 --- a/drivers/mtd/bcm47xxpart.c
 +++ b/drivers/mtd/bcm47xxpart.c
-@@ -89,6 +89,7 @@ static int bcm47xxpart_parse(struct mtd_
+@@ -93,6 +93,7 @@ static int bcm47xxpart_parse(struct mtd_
  	int trx_part = -1;
  	int last_trx_part = -1;
  	int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
@@ -8,7 +8,7 @@
  
  	if (blocksize <= 0x10000)
  		blocksize = 0x10000;
-@@ -269,12 +270,23 @@ static int bcm47xxpart_parse(struct mtd_
+@@ -281,12 +282,23 @@ static int bcm47xxpart_parse(struct mtd_
  		if (buf[0] == NVRAM_HEADER) {
  			bcm47xxpart_add_part(&parts[curr_part++], "nvram",
  					     master->size - blocksize, 0);
diff --git a/target/linux/generic/config-3.18 b/target/linux/generic/config-3.18
index 21e58674aaf26008af186bd1344765fd49a26af3..ad8ea95e9d4d47af59e3c85ce863e4bdfa3fee61 100644
--- a/target/linux/generic/config-3.18
+++ b/target/linux/generic/config-3.18
@@ -104,6 +104,7 @@ CONFIG_AIO=y
 # CONFIG_AL3320A is not set
 # CONFIG_ALCHEMY_GPIO_INDIRECT is not set
 # CONFIG_ALIM7101_WDT is not set
+CONFIG_ALLOW_DEV_COREDUMP=y
 # CONFIG_ALTERA_STAPL is not set
 # CONFIG_ALTERA_TSE is not set
 # CONFIG_ALX is not set
@@ -468,7 +469,9 @@ CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_BOOT_RAW=y
 # CONFIG_BPCTL is not set
+CONFIG_BPF=y
 # CONFIG_BPF_JIT is not set
+CONFIG_BPF_SYSCALL=y
 # CONFIG_BPQETHER is not set
 CONFIG_BQL=y
 CONFIG_BRANCH_PROFILE_NONE=y
diff --git a/target/linux/generic/patches-3.18/204-module_strip.patch b/target/linux/generic/patches-3.18/204-module_strip.patch
index e63ef152d4a3453748cdece299b548215ddd27df..ed95eafd0d4bcfcb87671149c335d771917d367f 100644
--- a/target/linux/generic/patches-3.18/204-module_strip.patch
+++ b/target/linux/generic/patches-3.18/204-module_strip.patch
@@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1973,6 +1973,13 @@ config MODULE_COMPRESS_XZ
+@@ -1987,6 +1987,13 @@ config MODULE_COMPRESS_XZ
  
  endchoice
  
diff --git a/target/linux/generic/patches-3.18/220-gc_sections.patch b/target/linux/generic/patches-3.18/220-gc_sections.patch
index 86727f1661ea412ed926fa1bb8d9dbf14be197ae..105d1e7691058018a6d2d29838cf29526ce56dcb 100644
--- a/target/linux/generic/patches-3.18/220-gc_sections.patch
+++ b/target/linux/generic/patches-3.18/220-gc_sections.patch
@@ -25,9 +25,9 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 +KBUILD_CFLAGS_KERNEL		+= -ffunction-sections -fdata-sections
 +endif
 +
- cflags-y += -ffreestanding
- 
  #
+ # pass -msoft-float to GAS if it supports it.  However on newer binutils
+ # (specifically newer than 2.24.51.20140728) we then also need to explicitly
 --- a/arch/mips/kernel/vmlinux.lds.S
 +++ b/arch/mips/kernel/vmlinux.lds.S
 @@ -67,7 +67,7 @@ SECTIONS
diff --git a/target/linux/generic/patches-3.18/304-mips_disable_fpu.patch b/target/linux/generic/patches-3.18/304-mips_disable_fpu.patch
index e3fadb92420a3eadbe07d68029a2d118308d6de5..85cc65cd7cf2e20c3eef84df0bd5d392257375ed 100644
--- a/target/linux/generic/patches-3.18/304-mips_disable_fpu.patch
+++ b/target/linux/generic/patches-3.18/304-mips_disable_fpu.patch
@@ -49,7 +49,7 @@ v2: incorporated changes suggested by Jonas Gorski
  	select OF
 --- a/arch/mips/Makefile
 +++ b/arch/mips/Makefile
-@@ -266,7 +266,7 @@ OBJCOPYFLAGS		+= --remove-section=.regin
+@@ -275,7 +275,7 @@ OBJCOPYFLAGS		+= --remove-section=.regin
  head-y := arch/mips/kernel/head.o
  
  libs-y			+= arch/mips/lib/
diff --git a/target/linux/generic/patches-3.18/472-mtd-m25p80-add-support-for-Winbond-W25X05-flash.patch b/target/linux/generic/patches-3.18/472-mtd-m25p80-add-support-for-Winbond-W25X05-flash.patch
index a8c97c24e250c7653ea140f10e73af6fa005901f..6bf516c71bcb5e8108b88790e7bb13650a14721d 100644
--- a/target/linux/generic/patches-3.18/472-mtd-m25p80-add-support-for-Winbond-W25X05-flash.patch
+++ b/target/linux/generic/patches-3.18/472-mtd-m25p80-add-support-for-Winbond-W25X05-flash.patch
@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -614,6 +614,7 @@ const struct spi_device_id spi_nor_ids[]
+@@ -616,6 +616,7 @@ static const struct spi_device_id spi_no
  	{ "m25px80",    INFO(0x207114,  0, 64 * 1024, 16, 0) },
  
  	/* Winbond -- w25x "blocks" are 64K, "sectors" are 4KiB */
diff --git a/target/linux/generic/patches-3.18/642-bridge_port_isolate.patch b/target/linux/generic/patches-3.18/642-bridge_port_isolate.patch
index a927827e7961c39cfd590a577ad4590e5880d888..c98b94796c6277fbe490c8a73d4154793f9eaa70 100644
--- a/target/linux/generic/patches-3.18/642-bridge_port_isolate.patch
+++ b/target/linux/generic/patches-3.18/642-bridge_port_isolate.patch
@@ -56,7 +56,7 @@
  		skb = NULL;
 --- a/net/bridge/br_forward.c
 +++ b/net/bridge/br_forward.c
-@@ -116,7 +116,7 @@ void br_deliver(const struct net_bridge_
+@@ -117,7 +117,7 @@ EXPORT_SYMBOL_GPL(br_deliver);
  /* called with rcu_read_lock */
  void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
  {
@@ -65,7 +65,7 @@
  		if (skb0)
  			deliver_clone(to, skb, __br_forward);
  		else
-@@ -172,7 +172,7 @@ static void br_flood(struct net_bridge *
+@@ -173,7 +173,7 @@ static void br_flood(struct net_bridge *
  		     struct sk_buff *skb0,
  		     void (*__packet_hook)(const struct net_bridge_port *p,
  					   struct sk_buff *skb),
@@ -74,7 +74,7 @@
  {
  	struct net_bridge_port *p;
  	struct net_bridge_port *prev;
-@@ -180,6 +180,8 @@ static void br_flood(struct net_bridge *
+@@ -181,6 +181,8 @@ static void br_flood(struct net_bridge *
  	prev = NULL;
  
  	list_for_each_entry_rcu(p, &br->port_list, list) {
@@ -83,7 +83,7 @@
  		/* Do not flood unicast traffic to ports that turn it off */
  		if (unicast && !(p->flags & BR_FLOOD))
  			continue;
-@@ -206,14 +208,14 @@ out:
+@@ -207,14 +209,14 @@ out:
  /* called with rcu_read_lock */
  void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, bool unicast)
  {
diff --git a/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch
index e5af533bc723ddd2f493e443b5fbe5d04a1d1003..e8b21e50607d9ecb16a6207405071396746913a6 100644
--- a/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch
+++ b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch
@@ -52,7 +52,7 @@
  
  int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
  		      u32 banned_flags)
-@@ -5433,6 +5432,9 @@ int __init addrconf_init(void)
+@@ -5434,6 +5433,9 @@ int __init addrconf_init(void)
  
  	ipv6_addr_label_rtnl_register();
  
@@ -62,7 +62,7 @@
  	return 0;
  errout:
  	rtnl_af_unregister(&inet6_ops);
-@@ -5452,6 +5454,9 @@ void addrconf_cleanup(void)
+@@ -5453,6 +5455,9 @@ void addrconf_cleanup(void)
  	struct net_device *dev;
  	int i;
  
diff --git a/target/linux/generic/patches-3.18/645-bridge_multicast_to_unicast.patch b/target/linux/generic/patches-3.18/645-bridge_multicast_to_unicast.patch
index 97a7f7f8de2cc40a626d2387b8aeafdf3ac4f4ee..35ed5cb4039c94b036d6cb03f5a51f50fc9773f3 100644
--- a/target/linux/generic/patches-3.18/645-bridge_multicast_to_unicast.patch
+++ b/target/linux/generic/patches-3.18/645-bridge_multicast_to_unicast.patch
@@ -291,7 +291,7 @@
  	rcu_assign_pointer(*pp, p);
 --- a/net/bridge/br_forward.c
 +++ b/net/bridge/br_forward.c
-@@ -167,6 +167,29 @@ out:
+@@ -168,6 +168,29 @@ out:
  	return p;
  }
  
@@ -321,7 +321,7 @@
  /* called under bridge lock */
  static void br_flood(struct net_bridge *br, struct sk_buff *skb,
  		     struct sk_buff *skb0,
-@@ -231,6 +254,7 @@ static void br_multicast_flood(struct ne
+@@ -232,6 +255,7 @@ static void br_multicast_flood(struct ne
  	struct net_bridge_port *prev = NULL;
  	struct net_bridge_port_group *p;
  	struct hlist_node *rp;
@@ -329,7 +329,7 @@
  
  	rp = rcu_dereference(hlist_first_rcu(&br->router_list));
  	p = mdst ? rcu_dereference(mdst->ports) : NULL;
-@@ -241,10 +265,19 @@ static void br_multicast_flood(struct ne
+@@ -242,10 +266,19 @@ static void br_multicast_flood(struct ne
  		rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
  			     NULL;
  
diff --git a/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch b/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch
index 4bea5af59b136ab1fbca2eaf6531eb2f3e558209..6b25a2e8f5a8cb9a03b2a9ae3983ee35ed4fda0c 100644
--- a/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch
+++ b/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch
@@ -1,6 +1,6 @@
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
-@@ -1705,27 +1705,7 @@ void netlink_detachskb(struct sock *sk,
+@@ -1715,27 +1715,7 @@ void netlink_detachskb(struct sock *sk,
  
  static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
  {
diff --git a/target/linux/generic/patches-3.18/655-increase_skb_pad.patch b/target/linux/generic/patches-3.18/655-increase_skb_pad.patch
index ea27cd28bd0d99509148d24508c5d55be95e87bc..96da16788aa11cef6d4c234ba4d0a0ab48506696 100644
--- a/target/linux/generic/patches-3.18/655-increase_skb_pad.patch
+++ b/target/linux/generic/patches-3.18/655-increase_skb_pad.patch
@@ -1,6 +1,6 @@
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2014,7 +2014,7 @@ static inline int pskb_network_may_pull(
+@@ -2022,7 +2022,7 @@ static inline int pskb_network_may_pull(
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
diff --git a/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch
index 6471a853cc7d4615b4ac81156169972c02a155a0..48277930d426f023060b3dd91a9c1069644f3eeb 100644
--- a/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch
+++ b/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch
@@ -14,7 +14,7 @@ when needed.
 
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2059,6 +2059,24 @@ static inline void pskb_trim_unique(stru
+@@ -2067,6 +2067,24 @@ static inline void pskb_trim_unique(stru
  	BUG_ON(err);
  }
  
diff --git a/target/linux/generic/patches-3.18/721-phy_packets.patch b/target/linux/generic/patches-3.18/721-phy_packets.patch
index 779ab4d0f22af318992ffb6b3089f0c03b98a262..0e21ff30809d7a5a661d06ab2dd794471a4dbb5e 100644
--- a/target/linux/generic/patches-3.18/721-phy_packets.patch
+++ b/target/linux/generic/patches-3.18/721-phy_packets.patch
@@ -41,7 +41,7 @@
   */
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2044,6 +2044,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2052,6 +2052,10 @@ static inline int pskb_trim(struct sk_bu
  	return (len < skb->len) ? __pskb_trim(skb, len) : 0;
  }
  
@@ -52,7 +52,7 @@
  /**
   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *	@skb: buffer to alter
-@@ -2170,16 +2174,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2178,16 +2182,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
diff --git a/target/linux/generic/patches-3.18/863-gpiommc.patch b/target/linux/generic/patches-3.18/863-gpiommc.patch
index 380f33782da4a1ae4e8cf8e9dead645317727e04..cdd1aea57655e16cae65289f15db945cee33e722 100644
--- a/target/linux/generic/patches-3.18/863-gpiommc.patch
+++ b/target/linux/generic/patches-3.18/863-gpiommc.patch
@@ -830,7 +830,7 @@
 +be done automatically.
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -4263,6 +4263,11 @@ T:	git git://linuxtv.org/anttip/media_tr
+@@ -4265,6 +4265,11 @@ T:	git git://linuxtv.org/anttip/media_tr
  S:	Maintained
  F:	drivers/media/usb/hackrf/
  
diff --git a/target/linux/generic/patches-3.18/903-debloat_direct_io.patch b/target/linux/generic/patches-3.18/903-debloat_direct_io.patch
index 4bceec96cf4d020df10c3fb3909a8ef0c0313b2d..c633ed1e0930cfe059849e151ad04e5cf7ee5f89 100644
--- a/target/linux/generic/patches-3.18/903-debloat_direct_io.patch
+++ b/target/linux/generic/patches-3.18/903-debloat_direct_io.patch
@@ -26,7 +26,7 @@
  endif
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -2526,12 +2526,25 @@ enum {
+@@ -2530,12 +2530,25 @@ enum {
  	DIO_ASYNC_EXTEND = 0x04,
  };
  
diff --git a/target/linux/generic/patches-3.18/950-vm_exports.patch b/target/linux/generic/patches-3.18/950-vm_exports.patch
index d8dc186fb02ae472e4f2f71d79742734a5a1a560..0291957bf0bc0b4b90d98657f70c44944a49440c 100644
--- a/target/linux/generic/patches-3.18/950-vm_exports.patch
+++ b/target/linux/generic/patches-3.18/950-vm_exports.patch
@@ -52,7 +52,7 @@
   * When we die, we re-parent all our children, and try to:
 --- a/kernel/sched/core.c
 +++ b/kernel/sched/core.c
-@@ -3147,6 +3147,7 @@ int can_nice(const struct task_struct *p
+@@ -3188,6 +3188,7 @@ int can_nice(const struct task_struct *p
  	return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
  		capable(CAP_SYS_NICE));
  }
@@ -62,7 +62,7 @@
  
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -1403,6 +1403,7 @@ void zap_page_range(struct vm_area_struc
+@@ -1404,6 +1404,7 @@ void zap_page_range(struct vm_area_struc
  	mmu_notifier_invalidate_range_end(mm, start, end);
  	tlb_finish_mmu(&tlb, start, end);
  }