diff --git linux-libre-4.9.265-gnu/Makefile linux-libre-4.9.266-gnu/Makefile
index 53356fc247c7..670e85cf2956 100644
--- linux-libre-4.9.265-gnu/Makefile
+++ linux-libre-4.9.266-gnu/Makefile
@@ -1,6 +1,6 @@
 VERSION = 4
 PATCHLEVEL = 9
-SUBLEVEL = 265
+SUBLEVEL = 266
 EXTRAVERSION = -gnu
 NAME = Roaring Lionus
 
diff --git linux-libre-4.9.265-gnu/arch/ia64/kernel/mca.c linux-libre-4.9.266-gnu/arch/ia64/kernel/mca.c
index 9509cc73b9c6..64ae9cde8bdb 100644
--- linux-libre-4.9.265-gnu/arch/ia64/kernel/mca.c
+++ linux-libre-4.9.266-gnu/arch/ia64/kernel/mca.c
@@ -1858,7 +1858,7 @@ ia64_mca_cpu_init(void *cpu_data)
 			data = mca_bootmem();
 			first_time = 0;
 		} else
-			data = (void *)__get_free_pages(GFP_KERNEL,
+			data = (void *)__get_free_pages(GFP_ATOMIC,
 							get_order(sz));
 		if (!data)
 			panic("Could not allocate MCA memory for cpu %d\n",
diff --git linux-libre-4.9.265-gnu/arch/x86/Makefile linux-libre-4.9.266-gnu/arch/x86/Makefile
index 9f0099c46c88..9ebbd4892557 100644
--- linux-libre-4.9.265-gnu/arch/x86/Makefile
+++ linux-libre-4.9.266-gnu/arch/x86/Makefile
@@ -34,7 +34,7 @@ REALMODE_CFLAGS	:= $(M16_CFLAGS) -g -Os -D__KERNEL__ \
 		   -DDISABLE_BRANCH_PROFILING \
 		   -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \
 		   -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
-		   -mno-mmx -mno-sse
+		   -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none)
 
 REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -ffreestanding)
 REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -fno-stack-protector)
diff --git linux-libre-4.9.265-gnu/arch/x86/net/bpf_jit_comp.c linux-libre-4.9.266-gnu/arch/x86/net/bpf_jit_comp.c
index eb5734112cb4..1d1434f9c5a6 100644
--- linux-libre-4.9.265-gnu/arch/x86/net/bpf_jit_comp.c
+++ linux-libre-4.9.266-gnu/arch/x86/net/bpf_jit_comp.c
@@ -1082,7 +1082,16 @@ common_load:
 		}
 
 		if (image) {
-			if (unlikely(proglen + ilen > oldproglen)) {
+			/*
+			 * When populating the image, assert that:
+			 *
+			 *  i) We do not write beyond the allocated space, and
+			 * ii) addrs[i] did not change from the prior run, in order
+			 *     to validate assumptions made for computing branch
+			 *     displacements.
+			 */
+			if (unlikely(proglen + ilen > oldproglen ||
+				     proglen + ilen != addrs[i])) {
 				pr_err("bpf_jit_compile fatal error\n");
 				return -EFAULT;
 			}
diff --git linux-libre-4.9.265-gnu/drivers/gpu/drm/msm/msm_fence.c linux-libre-4.9.266-gnu/drivers/gpu/drm/msm/msm_fence.c
index a9b9b1c95a2e..9dbd17be51f7 100644
--- linux-libre-4.9.265-gnu/drivers/gpu/drm/msm/msm_fence.c
+++ linux-libre-4.9.266-gnu/drivers/gpu/drm/msm/msm_fence.c
@@ -56,7 +56,7 @@ int msm_wait_fence(struct msm_fence_context *fctx, uint32_t fence,
 	int ret;
 
 	if (fence > fctx->last_fence) {
-		DRM_ERROR("%s: waiting on invalid fence: %u (of %u)\n",
+		DRM_ERROR_RATELIMITED("%s: waiting on invalid fence: %u (of %u)\n",
 				fctx->name, fence, fctx->last_fence);
 		return -EINVAL;
 	}
diff --git linux-libre-4.9.265-gnu/drivers/isdn/hardware/mISDN/mISDNipac.c linux-libre-4.9.266-gnu/drivers/isdn/hardware/mISDN/mISDNipac.c
index 8d338ba366d0..01a1afde5d3c 100644
--- linux-libre-4.9.265-gnu/drivers/isdn/hardware/mISDN/mISDNipac.c
+++ linux-libre-4.9.266-gnu/drivers/isdn/hardware/mISDN/mISDNipac.c
@@ -711,7 +711,7 @@ isac_release(struct isac_hw *isac)
 {
 	if (isac->type & IPAC_TYPE_ISACX)
 		WriteISAC(isac, ISACX_MASK, 0xff);
-	else
+	else if (isac->type != 0)
 		WriteISAC(isac, ISAC_MASK, 0xff);
 	if (isac->dch.timer.function != NULL) {
 		del_timer(&isac->dch.timer);
diff --git linux-libre-4.9.265-gnu/drivers/net/can/flexcan.c linux-libre-4.9.266-gnu/drivers/net/can/flexcan.c
index b18bb0334ded..dcad5213eb34 100644
--- linux-libre-4.9.265-gnu/drivers/net/can/flexcan.c
+++ linux-libre-4.9.266-gnu/drivers/net/can/flexcan.c
@@ -379,9 +379,15 @@ static int flexcan_chip_disable(struct flexcan_priv *priv)
 static int flexcan_chip_freeze(struct flexcan_priv *priv)
 {
 	struct flexcan_regs __iomem *regs = priv->regs;
-	unsigned int timeout = 1000 * 1000 * 10 / priv->can.bittiming.bitrate;
+	unsigned int timeout;
+	u32 bitrate = priv->can.bittiming.bitrate;
 	u32 reg;
 
+	if (bitrate)
+		timeout = 1000 * 1000 * 10 / bitrate;
+	else
+		timeout = FLEXCAN_TIMEOUT_US / 10;
+
 	reg = flexcan_read(&regs->mcr);
 	reg |= FLEXCAN_MCR_FRZ | FLEXCAN_MCR_HALT;
 	flexcan_write(reg, &regs->mcr);
diff --git linux-libre-4.9.265-gnu/drivers/net/ethernet/marvell/pxa168_eth.c linux-libre-4.9.266-gnu/drivers/net/ethernet/marvell/pxa168_eth.c
index 5d5000c8edf1..09cb0ac701e1 100644
--- linux-libre-4.9.265-gnu/drivers/net/ethernet/marvell/pxa168_eth.c
+++ linux-libre-4.9.266-gnu/drivers/net/ethernet/marvell/pxa168_eth.c
@@ -1571,8 +1571,8 @@ static int pxa168_eth_remove(struct platform_device *pdev)
 
 	mdiobus_unregister(pep->smi_bus);
 	mdiobus_free(pep->smi_bus);
-	unregister_netdev(dev);
 	cancel_work_sync(&pep->tx_timeout_task);
+	unregister_netdev(dev);
 	free_netdev(dev);
 	return 0;
 }
diff --git linux-libre-4.9.265-gnu/drivers/target/target_core_pscsi.c linux-libre-4.9.266-gnu/drivers/target/target_core_pscsi.c
index ef1c8c158f66..079db0bd3917 100644
--- linux-libre-4.9.265-gnu/drivers/target/target_core_pscsi.c
+++ linux-libre-4.9.266-gnu/drivers/target/target_core_pscsi.c
@@ -951,6 +951,14 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
 
 	return 0;
 fail:
+	if (bio)
+		bio_put(bio);
+	while (req->bio) {
+		bio = req->bio;
+		req->bio = bio->bi_next;
+		bio_put(bio);
+	}
+	req->biotail = NULL;
 	return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
 }
 
diff --git linux-libre-4.9.265-gnu/fs/cifs/file.c linux-libre-4.9.266-gnu/fs/cifs/file.c
index 24508b69e78b..e2ce90fc504e 100644
--- linux-libre-4.9.265-gnu/fs/cifs/file.c
+++ linux-libre-4.9.266-gnu/fs/cifs/file.c
@@ -163,6 +163,7 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
 			goto posix_open_ret;
 		}
 	} else {
+		cifs_revalidate_mapping(*pinode);
 		cifs_fattr_to_inode(*pinode, &fattr);
 	}
 
diff --git linux-libre-4.9.265-gnu/fs/cifs/smb2misc.c linux-libre-4.9.266-gnu/fs/cifs/smb2misc.c
index bddb2d7b3982..075b285bbd3e 100644
--- linux-libre-4.9.265-gnu/fs/cifs/smb2misc.c
+++ linux-libre-4.9.266-gnu/fs/cifs/smb2misc.c
@@ -651,8 +651,8 @@ smb2_is_valid_oplock_break(char *buffer, struct TCP_Server_Info *server)
 		}
 	}
 	spin_unlock(&cifs_tcp_ses_lock);
-	cifs_dbg(FYI, "Can not process oplock break for non-existent connection\n");
-	return false;
+	cifs_dbg(FYI, "No file id matched, oplock break ignored\n");
+	return true;
 }
 
 void
diff --git linux-libre-4.9.265-gnu/init/Kconfig linux-libre-4.9.266-gnu/init/Kconfig
index 0a615bdc203a..07570008e2fd 100644
--- linux-libre-4.9.265-gnu/init/Kconfig
+++ linux-libre-4.9.266-gnu/init/Kconfig
@@ -65,8 +65,7 @@ config CROSS_COMPILE
 
 config COMPILE_TEST
 	bool "Compile also drivers which will not load"
-	depends on !UML
-	default n
+	depends on HAS_IOMEM
 	help
 	  Some drivers can be compiled on a different platform than they are
 	  intended to be run on. Despite they cannot be loaded there (or even
diff --git linux-libre-4.9.265-gnu/net/mac80211/main.c linux-libre-4.9.266-gnu/net/mac80211/main.c
index e3bbfb20ae82..f31fd21d59ba 100644
--- linux-libre-4.9.265-gnu/net/mac80211/main.c
+++ linux-libre-4.9.266-gnu/net/mac80211/main.c
@@ -906,8 +906,19 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
 			continue;
 
 		if (!dflt_chandef.chan) {
+			/*
+			 * Assign the first enabled channel to dflt_chandef
+			 * from the list of channels
+			 */
+			for (i = 0; i < sband->n_channels; i++)
+				if (!(sband->channels[i].flags &
+						IEEE80211_CHAN_DISABLED))
+					break;
+			/* if none found then use the first anyway */
+			if (i == sband->n_channels)
+				i = 0;
 			cfg80211_chandef_create(&dflt_chandef,
-						&sband->channels[0],
+						&sband->channels[i],
 						NL80211_CHAN_NO_HT);
 			/* init channel we're on */
 			if (!local->use_chanctx && !local->_oper_chandef.chan) {
diff --git linux-libre-4.9.265-gnu/sound/pci/hda/patch_realtek.c linux-libre-4.9.266-gnu/sound/pci/hda/patch_realtek.c
index 79c45046edc6..7b94170aa5ec 100644
--- linux-libre-4.9.265-gnu/sound/pci/hda/patch_realtek.c
+++ linux-libre-4.9.266-gnu/sound/pci/hda/patch_realtek.c
@@ -6285,7 +6285,6 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
 	SND_HDA_PIN_QUIRK(0x10ec0299, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
 		ALC225_STANDARD_PINS,
 		{0x12, 0xb7a60130},
-		{0x13, 0xb8a61140},
 		{0x17, 0x90170110}),
 	{}
 };
