Update to 4.6.2

This commit is contained in:
Ben Hutchings 2016-06-09 03:20:18 +01:00
parent 0111b51fe6
commit 1537ff1314
10 changed files with 145 additions and 146 deletions

118
debian/changelog vendored
View File

@ -1,3 +1,121 @@
linux (4.6.2-1) UNRELEASED; urgency=medium
* New upstream stable update:
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.6.2
- f2fs: fix deadlock when flush inline data
- [mips*] math-emu: Fix jalr emulation when rd == $0
- [mips*] Avoid using unwind_stack() with usermode
- [mips*] Fix siginfo.h to use strict posix types
- [mips*] Fix uapi include in exported asm/siginfo.h
- [mips*] Fix watchpoint restoration
- [mips*] Flush highmem pages in __flush_dcache_page
- [mips*] Handle highmem pages in __update_cache
- [mips*] Sync icache & dcache in set_pte_at
- [mips*] Reserve nosave data for hibernation
- [mips*el/loongson-3] Reserve 32MB for RS780E integrated GPU
- [mips*] Use copy_s.fmt rather than copy_u.fmt
- [mips*] Prevent "restoration" of MSA context in non-MSA kernels
- [mips*] ptrace: Fix FP context restoration FCSR regression
- [mips*] ptrace: Prevent writes to read-only FCSR bits
- [mips*] lib: Mark intrinsics notrace
- [mips*] VDSO: Build with `-fno-strict-aliasing'
- affs: fix remount failure when there are no options changed
- ASoC: ak4642: Enable cache usage to fix crashes on resume
- Input: uinput - handle compat ioctl for UI_SET_PHYS
- Input: xpad - move pending clear to the correct location
- Input: xpad - prevent spurious input from wired Xbox 360 controllers
- [armhf] sun4i: dt: Enable dram gate 5 (tve0 clock) for simplefb TV output
- [armhf] sun7i: dt: Enable dram gate 5 (tve0 clock) for simplefb TV output
- [armhf] mvebu: fix GPIO config on the Linksys boards
- [armhf] dts: exynos: Add interrupt line to MAX8997 PMIC on
exynos4210-trats
- ath9k: Fix LED polarity for some Mini PCI AR9220 MB92 cards.
- ath10k: fix firmware assert in monitor mode
- ath10k: fix rx_channel during hw reconfigure
- ath10k: fix kernel panic, move arvifs list head init before htt init
- ath5k: Change led pin configuration for compaq c700 laptop
- [armhf] hwrng: exynos - Fix unbalanced PM runtime put on timeout
error path
- rtlwifi: Fix logic error in enter/exit power-save mode
- rtlwifi: pci: use dev_kfree_skb_irq instead of kfree_skb in
rtl_pci_reset_trx_ring
- Revert "lpfc: Delete unnecessary checks before the function call
mempool_destroy"
- aacraid: Start adapter after updating number of MSIX vectors
- aacraid: Relinquish CPU during timeout wait
- aacraid: Fix for aac_command_thread hang
- aacraid: Fix for KDUMP driver hang
- regulator: Try to resolve regulators supplies on registration
- hwmon: (ads7828) Enable internal reference
- [x86] mfd: intel_quark_i2c_gpio: Remove clock tree on error path
- [x86] mfd: intel-lpss: Save register context on suspend
- [x86] mfd: intel_soc_pmic_core: Terminate panel control GPIO lookup
table correctly
- PM / Runtime: Fix error path in pm_runtime_force_resume()
- cpuidle: Indicate when a device has been unregistered
- cpuidle: Fix cpuidle_state_is_coupled() argument in cpuidle_enter()
- [armhf] clk: bcm2835: Fix PLL poweron
- [armhf] clk: bcm2835: pll_off should only update CM_PLL_ANARST
- [armhf] clk: bcm2835: divider value has to be 1 or more
- [armhf] clk: bcm2835: correctly enable fractional clock support
- [armhf] pinctrl: exynos5440: Use off-stack memory for pinctrl_gpio_range
- PCI: Disable all BAR sizing for devices with non-compliant BARs
- media: v4l2-compat-ioctl32: fix missing reserved field copy in
put_v4l2_create32
- PKCS#7: fix missing break on OID_sha224 case
- mm: use phys_addr_t for reserve_bootmem_region() arguments
- mm/compaction.c: fix zoneindex in kcompactd()
- wait/ptrace: assume __WALL if the child is traced
- batman-adv: Fix double neigh_node_put in batadv_v_ogm_route_update
- [powerpc*] book3s64: Fix branching to OOL handlers in relocatable kernel
- [powerpc*] eeh: Don't report error in eeh_pe_reset_and_recover()
- [powerpc*] Revert "powerpc/eeh: Fix crash in eeh_add_device_early()
on Cell"
- [powerpc*] eeh: Restore initial state in eeh_pe_reset_and_recover()
- xen/events: Don't move disabled irqs
- xen: use same main loop for counting and remapping pages
- sunrpc: fix stripping of padded MIC tokens
- [x86] drm/gma500: Fix possible out of bounds read
- [x86] drm/vmwgfx: Kill some lockdep warnings
- [x86] drm/amdgpu: use drm_mode_vrefresh() rather than mode->vrefresh
- [x86] drm/amdgpu: Fix hdmi deep color support.
- [x86] drm/i915/fbdev: Fix num_connector references in
intel_fb_initial_config()
- drm/fb_helper: Fix references to dev->mode_config.num_connector
- [x86] drm/i915: Discard previous atomic state on resume if connectors
change
- drm/atomic: Verify connector->funcs != NULL when clearing states
- Bluetooth: 6lowpan: Fix memory corruption of ipv6 destination address
- [x86] drm/i915/psr: Try to program link training times correctly
- [x86] drm/i915: Respect DP++ adaptor TMDS clock limit
- [x86] drm/i915: Enable/disable TMDS output buffers in DP++ adaptor
as needed
- [x86] drm/i915: Don't leave old junk in ilk active watermarks on readout
- [x86] drm/i915: Fix watermarks for VLV/CHV
- [armhf] drm/imx: Match imx-ipuv3-crtc components using device node in
platform data
- [x86] drm/i915: Pass the correct crtc state to .update_plane()
- ext4: fix data exposure after a crash
- ext4: fix hang when processing corrupted orphaned inode list
- ext4: clean up error handling when orphan list is corrupted
- ext4: fix check of dqget() return value in ext4_ioctl_setproject()
- ext4: fix oops on corrupted filesystem
- ext4: address UBSAN warning in mb_find_order_for_block()
- nfs: avoid race that crashes nfs_init_commit
- PM / sleep: Handle failures in device_suspend_late() consistently
- mm: thp: avoid false positive VM_BUG_ON_PAGE in page_move_anon_rmap()
- xfs: disallow rw remount on fs with unknown ro-compat features
- xfs: Don't wrap growfs AGFL indexes
- xfs: remove xfs_fs_evict_inode()
- xfs: xfs_iflush_cluster fails to abort on error
- xfs: fix inode validity check in xfs_iflush_cluster
- xfs: skip stale inodes in xfs_iflush_cluster
- [armhf] drm: msm: remove unused variable
- IB/hfi1: Fix hard lockup due to not using save/restore spin lock
- regulator: Fix deadlock during regulator registration
-- Ben Hutchings <ben@decadent.org.uk> Thu, 09 Jun 2016 02:56:01 +0100
linux (4.6.1-1) unstable; urgency=medium
* New upstream stable update:

View File

@ -1,3 +1,8 @@
[abi]
ignore-changes:
# Should not be used from OOT
module:drivers/gpu/drm/imx/*
[base]
flavours:
armmp

View File

@ -1,5 +1,8 @@
[abi]
abiname: 1
ignore-changes:
# Should not be used from OOT
module:drivers/net/wireless/realtek/rtlwifi/*
[base]
arches:

View File

@ -1,3 +1,9 @@
[abi]
ignore-changes:
# Was called by inline function flush_icache_page, which doesn't seem
# to be used OOT
__flush_icache_page
[base]
flavours:
4kc-malta

View File

@ -1,3 +1,9 @@
[abi]
ignore-changes:
# Was called by inline function flush_icache_page, which doesn't seem
# to be used OOT
__flush_icache_page
[base]
flavours:
5kc-malta

View File

@ -1,3 +1,9 @@
[abi]
ignore-changes:
# Was called by inline function flush_icache_page, which doesn't seem
# to be used OOT
__flush_icache_page
[base]
flavours:
4kc-malta

View File

@ -1,42 +0,0 @@
From: Paul Burton <paul.burton@imgtec.com>
Date: Thu, 21 Apr 2016 12:43:57 +0100
Subject: [1/2] MIPS: Disable preemption during prctl(PR_SET_FP_MODE, ...)
Origin: https://git.kernel.org/linus/bd239f1e1429e7781096bf3884bdb1b2b1bb4f28
Whilst a PR_SET_FP_MODE prctl is performed there are decisions made
based upon whether the task is executing on the current CPU. This may
change if we're preempted, so disable preemption to avoid such changes
for the lifetime of the mode switch.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Fixes: 9791554b45a2 ("MIPS,prctl: add PR_[GS]ET_FP_MODE prctl options for MIPS")
Cc: stable <stable@vger.kernel.org> # v4.0+
---
arch/mips/kernel/process.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 92880ce..ce55ea0 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -601,6 +601,9 @@ int mips_set_process_fp_mode(struct task_struct *task, unsigned int value)
if (!(value & PR_FP_MODE_FR) && cpu_has_fpu && cpu_has_mips_r6)
return -EOPNOTSUPP;
+ /* Proceed with the mode switch */
+ preempt_disable();
+
/* Save FP & vector context, then disable FPU & MSA */
if (task->signal == current->signal)
lose_fpu(1);
@@ -659,6 +662,7 @@ int mips_set_process_fp_mode(struct task_struct *task, unsigned int value)
/* Allow threads to use FP again */
atomic_set(&task->mm->context.fp_mode_switching, 0);
+ preempt_enable();
return 0;
}
--
2.8.1

View File

@ -1,101 +0,0 @@
From: Paul Burton <paul.burton@imgtec.com>
Date: Thu, 21 Apr 2016 12:43:58 +0100
Subject: [2/2] MIPS: Force CPUs to lose FP context during mode switches
Origin: https://git.kernel.org/linus/6b8322576e9d325b65c54fbef64e4e8690ad70ce
Commit 9791554b45a2 ("MIPS,prctl: add PR_[GS]ET_FP_MODE prctl options
for MIPS") added support for the PR_SET_FP_MODE prctl, which allows a
userland program to modify its FP mode at runtime. This is most notably
required if dynamic linking leads to the FP mode requirement changing at
runtime from that indicated in the initial executable's ELF header. In
order to avoid overhead in the general FP context restore code, it aimed
to have threads in the process become unable to enable the FPU during a
mode switch & have the thread calling the prctl syscall wait for all
other threads in the process to be context switched at least once. Once
that happens we can know that no thread in the process whose mode will
be switched has live FP context, and it's safe to perform the mode
switch. However in the (rare) case of modeswitches occurring in
multithreaded programs this can lead to indeterminate delays for the
thread invoking the prctl syscall, and the code monitoring for those
context switches was woefully inadequate for all but the simplest cases.
Fix this by broadcasting an IPI if other CPUs may have live FP context
for an affected thread, with a handler causing those CPUs to relinquish
their FPU ownership. Threads will then be allowed to continue running
but will stall on the wait_on_atomic_t in enable_restore_fp_context if
they attempt to use FP again whilst the mode switch is still in
progress. The end result is less fragile poking at scheduler context
switch counts & a more expedient completion of the mode switch.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Fixes: 9791554b45a2 ("MIPS,prctl: add PR_[GS]ET_FP_MODE prctl options for MIPS")
Cc: stable <stable@vger.kernel.org> # v4.0+
---
arch/mips/kernel/process.c | 40 +++++++++++++++++-----------------------
1 file changed, 17 insertions(+), 23 deletions(-)
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index ce55ea0..e1b36a4 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -580,11 +580,19 @@ int mips_get_process_fp_mode(struct task_struct *task)
return value;
}
+static void prepare_for_fp_mode_switch(void *info)
+{
+ struct mm_struct *mm = info;
+
+ if (current->mm == mm)
+ lose_fpu(1);
+}
+
int mips_set_process_fp_mode(struct task_struct *task, unsigned int value)
{
const unsigned int known_bits = PR_FP_MODE_FR | PR_FP_MODE_FRE;
- unsigned long switch_count;
struct task_struct *t;
+ int max_users;
/* Check the value is valid */
if (value & ~known_bits)
@@ -613,31 +621,17 @@ int mips_set_process_fp_mode(struct task_struct *task, unsigned int value)
smp_mb__after_atomic();
/*
- * If there are multiple online CPUs then wait until all threads whose
- * FP mode is about to change have been context switched. This approach
- * allows us to only worry about whether an FP mode switch is in
- * progress when FP is first used in a tasks time slice. Pretty much all
- * of the mode switch overhead can thus be confined to cases where mode
- * switches are actually occurring. That is, to here. However for the
- * thread performing the mode switch it may take a while...
+ * If there are multiple online CPUs then force any which are running
+ * threads in this process to lose their FPU context, which they can't
+ * regain until fp_mode_switching is cleared later.
*/
if (num_online_cpus() > 1) {
- spin_lock_irq(&task->sighand->siglock);
-
- for_each_thread(task, t) {
- if (t == current)
- continue;
-
- switch_count = t->nvcsw + t->nivcsw;
-
- do {
- spin_unlock_irq(&task->sighand->siglock);
- cond_resched();
- spin_lock_irq(&task->sighand->siglock);
- } while ((t->nvcsw + t->nivcsw) == switch_count);
- }
+ /* No need to send an IPI for the local CPU */
+ max_users = (task->mm == current->mm) ? 1 : 0;
- spin_unlock_irq(&task->sighand->siglock);
+ if (atomic_read(&current->mm->mm_users) > max_users)
+ smp_call_function(prepare_for_fp_mode_switch,
+ (void *)current->mm, 1);
}
/*

View File

@ -58,7 +58,7 @@ use of $(ARCH) needs to be moved after this.
export KCONFIG_CONFIG
@@ -367,6 +331,44 @@ AFLAGS_KERNEL =
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im
CFLAGS_KCOV = -fsanitize-coverage=trace-pc
+-include $(obj)/.kernelvariables

View File

@ -45,8 +45,6 @@ bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch
# Arch bug fixes
bugfix/mips/MIPS-Allow-emulation-for-unaligned-LSDXC1-instructions.patch
bugfix/mips/MIPS-Disable-preemption-during-prctl-PR_SET_FP_MODE.patch
bugfix/mips/MIPS-Force-CPUs-to-lose-FP-context-during-mode-switc.patch
bugfix/powerpc/powerpc-fix-sstep-compile-on-powerpcspe.patch
bugfix/arm/dwc3-exynos-fix-deferred-probing-storm.patch