From: Greg Kroah-Hartman Date: Mon, 19 Jun 2017 01:13:37 +0000 (+0800) Subject: 4.11-stable patches X-Git-Tag: v4.11.7~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9b6df01ad70054550b04500db4866119d7bd83ab;p=thirdparty%2Fkernel%2Fstable-queue.git 4.11-stable patches added patches: alarmtimer-rate-limit-periodic-intervals.patch mips-.its-targets-depend-on-vmlinux.patch mips-fix-bnezc-jialc-return-address-calculation.patch virtio_balloon-disable-viommu-support.patch --- diff --git a/queue-4.11/alarmtimer-rate-limit-periodic-intervals.patch b/queue-4.11/alarmtimer-rate-limit-periodic-intervals.patch new file mode 100644 index 00000000000..7a955a4b838 --- /dev/null +++ b/queue-4.11/alarmtimer-rate-limit-periodic-intervals.patch @@ -0,0 +1,60 @@ +From ff86bf0c65f14346bf2440534f9ba5ac232c39a0 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner +Date: Tue, 30 May 2017 23:15:35 +0200 +Subject: alarmtimer: Rate limit periodic intervals + +From: Thomas Gleixner + +commit ff86bf0c65f14346bf2440534f9ba5ac232c39a0 upstream. + +The alarmtimer code has another source of potentially rearming itself too +fast. Interval timers with a very samll interval have a similar CPU hog +effect as the previously fixed overflow issue. + +The reason is that alarmtimers do not implement the normal protection +against this kind of problem which the other posix timer use: + + timer expires -> queue signal -> deliver signal -> rearm timer + +This scheme brings the rearming under scheduler control and prevents +permanently firing timers which hog the CPU. + +Bringing this scheme to the alarm timer code is a major overhaul because it +lacks all the necessary mechanisms completely. + +So for a quick fix limit the interval to one jiffie. This is not +problematic in practice as alarmtimers are usually backed by an RTC for +suspend which have 1 second resolution. It could be therefor argued that +the resolution of this clock should be set to 1 second in general, but +that's outside the scope of this fix. + +Signed-off-by: Thomas Gleixner +Cc: Peter Zijlstra +Cc: Kostya Serebryany +Cc: syzkaller +Cc: John Stultz +Cc: Dmitry Vyukov +Link: http://lkml.kernel.org/r/20170530211655.896767100@linutronix.de +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/time/alarmtimer.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/kernel/time/alarmtimer.c ++++ b/kernel/time/alarmtimer.c +@@ -660,6 +660,14 @@ static int alarm_timer_set(struct k_itim + + /* start the timer */ + timr->it.alarm.interval = timespec_to_ktime(new_setting->it_interval); ++ ++ /* ++ * Rate limit to the tick as a hot fix to prevent DOS. Will be ++ * mopped up later. ++ */ ++ if (timr->it.alarm.interval < TICK_NSEC) ++ timr->it.alarm.interval = TICK_NSEC; ++ + exp = timespec_to_ktime(new_setting->it_value); + /* Convert (if necessary) to absolute time */ + if (flags != TIMER_ABSTIME) { diff --git a/queue-4.11/mips-.its-targets-depend-on-vmlinux.patch b/queue-4.11/mips-.its-targets-depend-on-vmlinux.patch new file mode 100644 index 00000000000..9dc09344378 --- /dev/null +++ b/queue-4.11/mips-.its-targets-depend-on-vmlinux.patch @@ -0,0 +1,55 @@ +From bcd7c45e0d5a82be9a64b90050f0e09d41a50758 Mon Sep 17 00:00:00 2001 +From: Paul Burton +Date: Fri, 2 Jun 2017 12:02:08 -0700 +Subject: MIPS: .its targets depend on vmlinux + +From: Paul Burton + +commit bcd7c45e0d5a82be9a64b90050f0e09d41a50758 upstream. + +The .its targets require information about the kernel binary, such as +its entry point, which is extracted from the vmlinux ELF. We therefore +require that the ELF is built before the .its files are generated. +Declare this requirement in the Makefile such that make will ensure this +is always the case, otherwise in corner cases we can hit issues as the +.its is generated with an incorrect (either invalid or stale) entry +point. + +Signed-off-by: Paul Burton +Fixes: cf2a5e0bb4c6 ("MIPS: Support generating Flattened Image Trees (.itb)") +Cc: linux-mips@linux-mips.org +Patchwork: https://patchwork.linux-mips.org/patch/16179/ +Signed-off-by: Ralf Baechle +Signed-off-by: Greg Kroah-Hartman + +--- + arch/mips/boot/Makefile | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/arch/mips/boot/Makefile ++++ b/arch/mips/boot/Makefile +@@ -128,19 +128,19 @@ quiet_cmd_cpp_its_S = ITS $@ + -DADDR_BITS=$(ADDR_BITS) \ + -DADDR_CELLS=$(itb_addr_cells) + +-$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE ++$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE + $(call if_changed_dep,cpp_its_S,none,vmlinux.bin) + +-$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE ++$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE + $(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz) + +-$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE ++$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE + $(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2) + +-$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE ++$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE + $(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma) + +-$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE ++$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE + $(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo) + + quiet_cmd_itb-image = ITB $@ diff --git a/queue-4.11/mips-fix-bnezc-jialc-return-address-calculation.patch b/queue-4.11/mips-fix-bnezc-jialc-return-address-calculation.patch new file mode 100644 index 00000000000..0cd7f463285 --- /dev/null +++ b/queue-4.11/mips-fix-bnezc-jialc-return-address-calculation.patch @@ -0,0 +1,45 @@ +From 1a73d9310e093fc3adffba4d0a67b9fab2ee3f63 Mon Sep 17 00:00:00 2001 +From: Paul Burton +Date: Fri, 2 Jun 2017 11:35:01 -0700 +Subject: MIPS: Fix bnezc/jialc return address calculation + +From: Paul Burton + +commit 1a73d9310e093fc3adffba4d0a67b9fab2ee3f63 upstream. + +The code handling the pop76 opcode (ie. bnezc & jialc instructions) in +__compute_return_epc_for_insn() needs to set the value of $31 in the +jialc case, which is encoded with rs = 0. However its check to +differentiate bnezc (rs != 0) from jialc (rs = 0) was unfortunately +backwards, meaning that if we emulate a bnezc instruction we clobber $31 +& if we emulate a jialc instruction it actually behaves like a jic +instruction. + +Fix this by inverting the check of rs to match the way the instructions +are actually encoded. + +Signed-off-by: Paul Burton +Fixes: 28d6f93d201d ("MIPS: Emulate the new MIPS R6 BNEZC and JIALC instructions") +Cc: linux-mips@linux-mips.org +Patchwork: https://patchwork.linux-mips.org/patch/16178/ +Signed-off-by: Ralf Baechle +Signed-off-by: Greg Kroah-Hartman + +--- + arch/mips/kernel/branch.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/arch/mips/kernel/branch.c ++++ b/arch/mips/kernel/branch.c +@@ -804,8 +804,10 @@ int __compute_return_epc_for_insn(struct + break; + } + /* Compact branch: BNEZC || JIALC */ +- if (insn.i_format.rs) ++ if (!insn.i_format.rs) { ++ /* JIALC: set $31/ra */ + regs->regs[31] = epc + 4; ++ } + regs->cp0_epc += 8; + break; + #endif diff --git a/queue-4.11/series b/queue-4.11/series index e2f993de76c..dd18eda2ee0 100644 --- a/queue-4.11/series +++ b/queue-4.11/series @@ -68,3 +68,7 @@ iio-adc-meson-saradc-fix-potential-crash-in-meson_sar_adc_clear_fifo.patch sched-core-idle_task_exit-shouldn-t-use-switch_mm_irqs_off.patch genirq-release-resources-in-__setup_irq-error-path.patch alarmtimer-prevent-overflow-of-relative-timers.patch +alarmtimer-rate-limit-periodic-intervals.patch +virtio_balloon-disable-viommu-support.patch +mips-fix-bnezc-jialc-return-address-calculation.patch +mips-.its-targets-depend-on-vmlinux.patch diff --git a/queue-4.11/virtio_balloon-disable-viommu-support.patch b/queue-4.11/virtio_balloon-disable-viommu-support.patch new file mode 100644 index 00000000000..8d2162ec587 --- /dev/null +++ b/queue-4.11/virtio_balloon-disable-viommu-support.patch @@ -0,0 +1,46 @@ +From e41b1355508debe45fda33ef8c03ff3ba5d206b9 Mon Sep 17 00:00:00 2001 +From: "Michael S. Tsirkin" +Date: Tue, 13 Jun 2017 20:56:44 +0300 +Subject: virtio_balloon: disable VIOMMU support + +From: Michael S. Tsirkin + +commit e41b1355508debe45fda33ef8c03ff3ba5d206b9 upstream. + +virtio balloon bypasses the DMA API entirely so does not support the +VIOMMU right now. It's not clear we need that support, for now let's +just make sure we don't pretend to support it. + +Cc: Wei Wang +Fixes: 1a937693993f ("virtio: new feature to detect IOMMU device quirk") +Signed-off-by: Michael S. Tsirkin +Acked-by: Jason Wang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/virtio/virtio_balloon.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/virtio/virtio_balloon.c ++++ b/drivers/virtio/virtio_balloon.c +@@ -664,6 +664,12 @@ static int virtballoon_restore(struct vi + } + #endif + ++static int virtballoon_validate(struct virtio_device *vdev) ++{ ++ __virtio_clear_bit(vdev, VIRTIO_F_IOMMU_PLATFORM); ++ return 0; ++} ++ + static unsigned int features[] = { + VIRTIO_BALLOON_F_MUST_TELL_HOST, + VIRTIO_BALLOON_F_STATS_VQ, +@@ -676,6 +682,7 @@ static struct virtio_driver virtio_ballo + .driver.name = KBUILD_MODNAME, + .driver.owner = THIS_MODULE, + .id_table = id_table, ++ .validate = virtballoon_validate, + .probe = virtballoon_probe, + .remove = virtballoon_remove, + .config_changed = virtballoon_changed,