Update to 3.16.7-ctk2; drop patches applied upstream
svn path=/dists/sid/linux/; revision=22129
This commit is contained in:
parent
c2bcb2baef
commit
71fe02b042
|
@ -1,4 +1,4 @@
|
||||||
linux (3.16.7-ckt1-1) UNRELEASED; urgency=medium
|
linux (3.16.7-ckt2-1) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
* New upstream stable update:
|
* New upstream stable update:
|
||||||
http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt1
|
http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt1
|
||||||
|
@ -110,6 +110,131 @@ linux (3.16.7-ckt1-1) UNRELEASED; urgency=medium
|
||||||
- fs: allow open(dir, O_TMPFILE|..., 0) with mode 0
|
- fs: allow open(dir, O_TMPFILE|..., 0) with mode 0
|
||||||
- [arm*] tracing/syscalls: Ignore numbers outside NR_syscalls' range
|
- [arm*] tracing/syscalls: Ignore numbers outside NR_syscalls' range
|
||||||
- nfs: fix kernel warning when removing proc entry
|
- nfs: fix kernel warning when removing proc entry
|
||||||
|
http://kernel.ubuntu.com/stable/ChangeLog-3.16.7-ckt2
|
||||||
|
- rbd: Fix error recovery in rbd_obj_read_sync()
|
||||||
|
- regulator: max77693: Fix use of uninitialized regulator config
|
||||||
|
- xhci: no switching back on non-ULT Haswell (regression in 3.12)
|
||||||
|
- Btrfs: fix kfree on list_head in btrfs_lookup_csums_range error cleanup
|
||||||
|
- ocfs2: fix breakage in o2net_send_tcp_msg() (regression in 3.15)
|
||||||
|
- [armhf] phy: omap-usb2: Enable runtime PM of omap-usb2 phy properly
|
||||||
|
(regression in 3.16)
|
||||||
|
- USB: cdc-acm: add quirk for control-line state requests
|
||||||
|
(regression in 3.16)
|
||||||
|
- sysfs: driver core: Fix glue dir race condition by gdp_mutex
|
||||||
|
- drm/nouveau: make sure display hardware is reinitialised on runtime
|
||||||
|
resume (regression in 3.15)
|
||||||
|
- drm/nv50/disp: fix dpms regression on certain boards
|
||||||
|
- drm/nouveau/bios: memset dcb struct to zero before parsing
|
||||||
|
- GFS2: Make rename not save dirent location (regression in 3.14)
|
||||||
|
- netfilter: ipset: off by one in ip_set_nfnl_get_byindex()
|
||||||
|
- netfilter: nf_tables: check for NULL in nf_tables_newchain pcpu stats
|
||||||
|
allocation (regression in 3.16)
|
||||||
|
- netfilter: nfnetlink_log: fix maximum packet length logged to userspace
|
||||||
|
- netfilter: nft_compat: fix wrong target lookup in nft_target_select_ops()
|
||||||
|
- mmc: core: sdio: Fix unconditional wake_up_process() on sdio thread
|
||||||
|
(regression in 3.16)
|
||||||
|
- mmc: don't request CD IRQ until mmc_start_host()
|
||||||
|
- fs: make cont_expand_zero interruptible
|
||||||
|
- UBIFS: fix a race condition
|
||||||
|
- [x86] fpu: __restore_xstate_sig()->math_state_restore() needs
|
||||||
|
preempt_disable()
|
||||||
|
- [x86] fpu: shift drop_init_fpu() from save_xstate_sig() to
|
||||||
|
handle_signal()
|
||||||
|
- perf: Fix unclone_ctx() vs. locking
|
||||||
|
- evm: properly handle INTEGRITY_NOXATTRS EVM status
|
||||||
|
- [alpha] vfs: missing data dependency barrier in prepend_name()
|
||||||
|
- jffs2: kill wbuf_queued/wbuf_dwork_lock
|
||||||
|
- fix misuses of f_count() in ppp and netlink
|
||||||
|
- sched: Use dl_bw_of() under RCU read lock
|
||||||
|
- [s390*] topology: call set_sched_topology early
|
||||||
|
- [armhf] mfd: ti_am335x_tscadc: Fix TSC operation after ADC continouous
|
||||||
|
mode (regression in 3.14)
|
||||||
|
- [armhf] mfd: ti_am335x_tscadc: Fix TSC resume (regression in 3.14)
|
||||||
|
- selinux: fix inode security list corruption
|
||||||
|
- blk-mq: fix potential hang if rolling wakeup depth is too high
|
||||||
|
(regression in 3.16)
|
||||||
|
- block: fix alignment_offset math that assumes io_min is a power-of-2
|
||||||
|
- drm/nouveau/gpio: rename g92 class to g94 (regression in 3.16)
|
||||||
|
- [x86] drm/i915: Do not leak pages when freeing userptr objects
|
||||||
|
- media: v4l2-common: fix overflow in v4l_bound_align_image()
|
||||||
|
- sched: Use rq->rd in sched_setaffinity() under RCU read lock
|
||||||
|
- [powerpc*] use device_online/offline() instead of cpu_up/down()
|
||||||
|
(regression in 3.11)
|
||||||
|
- xen-blkback: fix leak on grant map error path
|
||||||
|
- net: skb_fclone_busy() needs to detect orphaned skb (regression in 3.16)
|
||||||
|
- rbd: avoid format-security warning inside alloc_workqueue()
|
||||||
|
- rbd: fix error return code in rbd_dev_device_setup()
|
||||||
|
- media: ttusb-dec: buffer overflow in ioctl (CVE-2014-8884)
|
||||||
|
- dm raid: ensure superblock's size matches device's logical block size
|
||||||
|
- ahci: disable MSI instead of NCQ on Samsung pci-e SSDs on macbooks
|
||||||
|
(Closes: #772435)
|
||||||
|
- mac80211: properly flush delayed scan work on interface removal
|
||||||
|
- [i386] microcode, AMD: Fix early ucode loading on 32-bit
|
||||||
|
(regression in 3.14)
|
||||||
|
- [armhf] mvebu: armada xp: Generalize use of i2c quirk
|
||||||
|
(regression in 3.12)
|
||||||
|
- mac80211: fix use-after-free in defragmentation
|
||||||
|
- iwlwifi: fix RFkill while calibrating (regression in 3.16)
|
||||||
|
- tun: Fix csum_start with VLAN acceleration (regression in 3.12)
|
||||||
|
- macvtap: Fix csum_start when VLAN tags are present
|
||||||
|
- dm thin: grab a virtual cell before looking up the mapping
|
||||||
|
- [x86] KVM: Fix uninitialized op->type for some immediate values
|
||||||
|
- [powerpc*] hwrng: pseries - port to new read API and fix stack corruption
|
||||||
|
- drm/radeon: set correct CE ram size for CIK
|
||||||
|
- drm/radeon: make sure mode init is complete in bandwidth_update
|
||||||
|
- cpufreq: Avoid crash in resume on SMP without OPP (regresion in 3.12)
|
||||||
|
- [i386] microcode, AMD: Fix ucode patch stashing on 32-bit
|
||||||
|
(regression in 3.14)
|
||||||
|
- [armhf] mfd: twl4030-power: Fix poweroff with PM configuration enabled
|
||||||
|
(regression in 3.16)
|
||||||
|
- [hppa] Use compat layer for msgctl, shmat, shmctl and semtimedop syscalls
|
||||||
|
- tracing: Do not busy wait in buffer splice (regresion in 3.16)
|
||||||
|
- param: fix crash on bad kernel arguments (regression in 3.16)
|
||||||
|
- audit: keep inode pinned
|
||||||
|
- drm/radeon: add locking around atombios scratch space usage
|
||||||
|
- nfs: fix pnfs direct write memory leak
|
||||||
|
- nfs: Fix use of uninitialized variable in nfs_getattr()
|
||||||
|
- NFSv4: Ensure that we remove NFSv4.0 delegations when state has expired
|
||||||
|
- NFSv4.1: nfs41_clear_delegation_stateid shouldn't trust
|
||||||
|
NFS_DELEGATED_STATE
|
||||||
|
- NFSv4: Fix races between nfs_remove_bad_delegation() and delegation
|
||||||
|
return
|
||||||
|
- NFSv4: Ensure that we call FREE_STATEID when NFSv4.x stateids are revoked
|
||||||
|
- NFS: Don't try to reclaim delegation open state if recovery failed
|
||||||
|
- [arm64] efi: Fix stub cache maintenance
|
||||||
|
- [arm64] __clear_user: handle exceptions on strb
|
||||||
|
- [arm64] Correct the race condition in aarch64_insn_patch_text_sync()
|
||||||
|
- Fix thinko in iov_iter_single_seg_count
|
||||||
|
- libceph: do not crash on large auth tickets
|
||||||
|
- [armel,armhf] 8191/1: decompressor: ensure I-side picks up relocated code
|
||||||
|
- zram: avoid kunmap_atomic() of a NULL pointer
|
||||||
|
- firewire: cdev: prevent kernel stack leaking into ioctl arguments
|
||||||
|
- md: Always set RECOVERY_NEEDED when clearing RECOVERY_FROZEN
|
||||||
|
(regression in 3.13)
|
||||||
|
- vxlan: Do not reuse sockets for a different address family
|
||||||
|
- net: sctp: fix NULL pointer dereference in af->from_addr_param on
|
||||||
|
malformed packet
|
||||||
|
- net: sctp: fix memory leak in auth key management
|
||||||
|
- [armel,m68k] ipv6: fix IPV6_PKTINFO with v4 mapped (regression in 3.15)
|
||||||
|
- netlink: Properly unbind in error conditions. (regression in 3.16)
|
||||||
|
- smsc911x: power-up phydev before doing a software reset.
|
||||||
|
(regression in 3.14)
|
||||||
|
- [sparc*] sunvdc: limit each sg segment to a page
|
||||||
|
- [sparc*] vio: fix reuse of vio_dring slot
|
||||||
|
- drm/radeon: initialize sadb to NULL in the audio code
|
||||||
|
- [x86] KVM: Don't report guest userspace emulation error to userspace
|
||||||
|
- crypto: caam - remove duplicated sg copy functions
|
||||||
|
- audit: correct AUDIT_GET_FEATURE return message type
|
||||||
|
- memory-hotplug: Remove "weak" from memory_block_size_bytes() declaration
|
||||||
|
(regression in 3.14)
|
||||||
|
- [s390*] vmcore: Remove "weak" from function declarations
|
||||||
|
- [s390*] clocksource: Remove "weak" from clocksource_default_clock()
|
||||||
|
declaration
|
||||||
|
- IB/core: Clear AH attr variable to prevent garbage data
|
||||||
|
- [amd64] x32, audit: Fix x32's AUDIT_ARCH wrt audit
|
||||||
|
- [armhf] dts: am335x-evm: Fix 5th NAND partition's name
|
||||||
|
(regression in 3.15)
|
||||||
|
- dell-wmi: Fix access out of memory
|
||||||
|
|
||||||
[ Ben Hutchings ]
|
[ Ben Hutchings ]
|
||||||
* [x86] Complete Thunderbolt support on Apple computers (Closes: #768653)
|
* [x86] Complete Thunderbolt support on Apple computers (Closes: #768653)
|
||||||
|
@ -133,8 +258,6 @@ linux (3.16.7-ckt1-1) UNRELEASED; urgency=medium
|
||||||
* [device-tree] Reserve memreserve regions even if they partially overlap
|
* [device-tree] Reserve memreserve regions even if they partially overlap
|
||||||
with an existing reservation. Fixes boot on Midway.
|
with an existing reservation. Fixes boot on Midway.
|
||||||
* [arm64] Enable reboot on the Xgene platform.
|
* [arm64] Enable reboot on the Xgene platform.
|
||||||
* [armhf] Fixup cache maintenance during boot time relocation. Fixes boot on
|
|
||||||
various platforms.
|
|
||||||
|
|
||||||
-- Ben Hutchings <ben@decadent.org.uk> Sun, 09 Nov 2014 10:13:09 +0000
|
-- Ben Hutchings <ben@decadent.org.uk> Sun, 09 Nov 2014 10:13:09 +0000
|
||||||
|
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
From: Benjamin Coddington <bcodding@redhat.com>
|
|
||||||
Date: Tue, 23 Sep 2014 12:26:19 -0400
|
|
||||||
Subject: [1/2] SUNRPC: Don't wake tasks during connection abort
|
|
||||||
Origin: https://git.kernel.org/linus/a743419f420a64d442280845c0377a915b76644f
|
|
||||||
Bug-Debian: https://bugs.debian.org/767219
|
|
||||||
|
|
||||||
When aborting a connection to preserve source ports, don't wake the task in
|
|
||||||
xs_error_report. This allows tasks with RPC_TASK_SOFTCONN to succeed if the
|
|
||||||
connection needs to be re-established since it preserves the task's status
|
|
||||||
instead of setting it to the status of the aborting kernel_connect().
|
|
||||||
|
|
||||||
This may also avoid a potential conflict on the socket's lock.
|
|
||||||
|
|
||||||
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
|
|
||||||
Cc: stable@vger.kernel.org # 3.14+
|
|
||||||
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
|
|
||||||
---
|
|
||||||
include/linux/sunrpc/xprt.h | 1 +
|
|
||||||
net/sunrpc/xprtsock.c | 4 ++++
|
|
||||||
2 files changed, 5 insertions(+)
|
|
||||||
|
|
||||||
--- a/include/linux/sunrpc/xprt.h
|
|
||||||
+++ b/include/linux/sunrpc/xprt.h
|
|
||||||
@@ -357,6 +357,7 @@ int xs_swapper(struct rpc_xprt *xprt,
|
|
||||||
#define XPRT_CONNECTION_ABORT (7)
|
|
||||||
#define XPRT_CONNECTION_CLOSE (8)
|
|
||||||
#define XPRT_CONGESTED (9)
|
|
||||||
+#define XPRT_CONNECTION_REUSE (10)
|
|
||||||
|
|
||||||
static inline void xprt_set_connected(struct rpc_xprt *xprt)
|
|
||||||
{
|
|
||||||
--- a/net/sunrpc/xprtsock.c
|
|
||||||
+++ b/net/sunrpc/xprtsock.c
|
|
||||||
@@ -842,6 +842,8 @@ static void xs_error_report(struct sock
|
|
||||||
dprintk("RPC: xs_error_report client %p, error=%d...\n",
|
|
||||||
xprt, -err);
|
|
||||||
trace_rpc_socket_error(xprt, sk->sk_socket, err);
|
|
||||||
+ if (test_bit(XPRT_CONNECTION_REUSE, &xprt->state))
|
|
||||||
+ goto out;
|
|
||||||
xprt_wake_pending_tasks(xprt, err);
|
|
||||||
out:
|
|
||||||
read_unlock_bh(&sk->sk_callback_lock);
|
|
||||||
@@ -2241,7 +2243,9 @@ static void xs_tcp_setup_socket(struct w
|
|
||||||
abort_and_exit = test_and_clear_bit(XPRT_CONNECTION_ABORT,
|
|
||||||
&xprt->state);
|
|
||||||
/* "close" the socket, preserving the local port */
|
|
||||||
+ set_bit(XPRT_CONNECTION_REUSE, &xprt->state);
|
|
||||||
xs_tcp_reuse_connection(transport);
|
|
||||||
+ clear_bit(XPRT_CONNECTION_REUSE, &xprt->state);
|
|
||||||
|
|
||||||
if (abort_and_exit)
|
|
||||||
goto out_eagain;
|
|
|
@ -1,34 +0,0 @@
|
||||||
From: Benjamin Coddington <bcodding@redhat.com>
|
|
||||||
Date: Tue, 23 Sep 2014 12:26:20 -0400
|
|
||||||
Subject: [2/2] lockd: Try to reconnect if statd has moved
|
|
||||||
Origin: https://git.kernel.org/linus/173b3afceebe76fa2205b2c8808682d5b541fe3c
|
|
||||||
Bug-Debian: https://bugs.debian.org/767219
|
|
||||||
|
|
||||||
If rpc.statd is restarted, upcalls to monitor hosts can fail with
|
|
||||||
ECONNREFUSED. In that case force a lookup of statd's new port and retry the
|
|
||||||
upcall.
|
|
||||||
|
|
||||||
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
|
|
||||||
Cc: stable@vger.kernel.org
|
|
||||||
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
|
|
||||||
---
|
|
||||||
fs/lockd/mon.c | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
|
|
||||||
index daa8e75..9106f42 100644
|
|
||||||
--- a/fs/lockd/mon.c
|
|
||||||
+++ b/fs/lockd/mon.c
|
|
||||||
@@ -159,6 +159,12 @@ static int nsm_mon_unmon(struct nsm_handle *nsm, u32 proc, struct nsm_res *res,
|
|
||||||
|
|
||||||
msg.rpc_proc = &clnt->cl_procinfo[proc];
|
|
||||||
status = rpc_call_sync(clnt, &msg, RPC_TASK_SOFTCONN);
|
|
||||||
+ if (status == -ECONNREFUSED) {
|
|
||||||
+ dprintk("lockd: NSM upcall RPC failed, status=%d, forcing rebind\n",
|
|
||||||
+ status);
|
|
||||||
+ rpc_force_rebind(clnt);
|
|
||||||
+ status = rpc_call_sync(clnt, &msg, RPC_TASK_SOFTCONN);
|
|
||||||
+ }
|
|
||||||
if (status < 0)
|
|
||||||
dprintk("lockd: NSM upcall RPC failed, status=%d\n",
|
|
||||||
status);
|
|
|
@ -1,75 +0,0 @@
|
||||||
From 2c2a9cbd64387d6b70ac5db013e9bfe9412c7354 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Karl Beldan <karl.beldan@rivierawaves.com>
|
|
||||||
Date: Wed, 5 Nov 2014 15:32:59 +0100
|
|
||||||
Subject: [PATCH] net: mv643xx_eth: reclaim TX skbs only when released by the
|
|
||||||
HW
|
|
||||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=2c2a9cbd64387d6b70ac5db013e9bfe9412c7354
|
|
||||||
|
|
||||||
ATM, txq_reclaim will dequeue and free an skb for each tx desc released
|
|
||||||
by the hw that has TX_LAST_DESC set. However, in case of TSO, each
|
|
||||||
hw desc embedding the last part of a segment has TX_LAST_DESC set,
|
|
||||||
losing the one-to-one 'last skb frag'/'TX_LAST_DESC set' correspondance,
|
|
||||||
which causes data corruption.
|
|
||||||
|
|
||||||
Fix this by checking TX_ENABLE_INTERRUPT instead of TX_LAST_DESC, and
|
|
||||||
warn when trying to dequeue from an empty txq (which can be symptomatic
|
|
||||||
of releasing skbs prematurely).
|
|
||||||
|
|
||||||
Fixes: 3ae8f4e0b98 ('net: mv643xx_eth: Implement software TSO')
|
|
||||||
Reported-by: Slawomir Gajzner <slawomir.gajzner@gmail.com>
|
|
||||||
Reported-by: Julien D'Ascenzio <jdascenzio@yahoo.fr>
|
|
||||||
Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
|
|
||||||
Cc: Ian Campbell <ijc@hellion.org.uk>
|
|
||||||
Cc: Eric Dumazet <eric.dumazet@gmail.com>
|
|
||||||
Cc: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
|
|
||||||
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/marvell/mv643xx_eth.c | 18 ++++++++++--------
|
|
||||||
1 file changed, 10 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
|
||||||
index b151a94..d44560d 100644
|
|
||||||
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
|
|
||||||
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
|
|
||||||
@@ -1047,7 +1047,6 @@ static int txq_reclaim(struct tx_queue *txq, int budget, int force)
|
|
||||||
int tx_index;
|
|
||||||
struct tx_desc *desc;
|
|
||||||
u32 cmd_sts;
|
|
||||||
- struct sk_buff *skb;
|
|
||||||
|
|
||||||
tx_index = txq->tx_used_desc;
|
|
||||||
desc = &txq->tx_desc_area[tx_index];
|
|
||||||
@@ -1066,19 +1065,22 @@ static int txq_reclaim(struct tx_queue *txq, int budget, int force)
|
|
||||||
reclaimed++;
|
|
||||||
txq->tx_desc_count--;
|
|
||||||
|
|
||||||
- skb = NULL;
|
|
||||||
- if (cmd_sts & TX_LAST_DESC)
|
|
||||||
- skb = __skb_dequeue(&txq->tx_skb);
|
|
||||||
+ if (!IS_TSO_HEADER(txq, desc->buf_ptr))
|
|
||||||
+ dma_unmap_single(mp->dev->dev.parent, desc->buf_ptr,
|
|
||||||
+ desc->byte_cnt, DMA_TO_DEVICE);
|
|
||||||
+
|
|
||||||
+ if (cmd_sts & TX_ENABLE_INTERRUPT) {
|
|
||||||
+ struct sk_buff *skb = __skb_dequeue(&txq->tx_skb);
|
|
||||||
+
|
|
||||||
+ if (!WARN_ON(!skb))
|
|
||||||
+ dev_kfree_skb(skb);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (cmd_sts & ERROR_SUMMARY) {
|
|
||||||
netdev_info(mp->dev, "tx error\n");
|
|
||||||
mp->dev->stats.tx_errors++;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (!IS_TSO_HEADER(txq, desc->buf_ptr))
|
|
||||||
- dma_unmap_single(mp->dev->dev.parent, desc->buf_ptr,
|
|
||||||
- desc->byte_cnt, DMA_TO_DEVICE);
|
|
||||||
- dev_kfree_skb(skb);
|
|
||||||
}
|
|
||||||
|
|
||||||
__netif_tx_unlock_bh(nq);
|
|
||||||
--
|
|
||||||
1.7.10.4
|
|
||||||
|
|
|
@ -1,112 +0,0 @@
|
||||||
From 238962ac71910d6c20162ea5230685fead1836a4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Will Deacon <will.deacon@arm.com>
|
|
||||||
Date: Tue, 4 Nov 2014 11:40:46 +0100
|
|
||||||
Subject: [PATCH] ARM: 8191/1: decompressor: ensure I-side picks up relocated
|
|
||||||
code
|
|
||||||
Origin: https://git.kernel.org/linus/238962ac71910d6c20162ea5230685fead1836a4
|
|
||||||
|
|
||||||
To speed up decompression, the decompressor sets up a flat, cacheable
|
|
||||||
mapping of memory. However, when there is insufficient space to hold
|
|
||||||
the page tables for this mapping, we don't bother to enable the caches
|
|
||||||
and subsequently skip all the cache maintenance hooks.
|
|
||||||
|
|
||||||
Skipping the cache maintenance before jumping to the relocated code
|
|
||||||
allows the processor to predict the branch and populate the I-cache
|
|
||||||
with stale data before the relocation loop has completed (since a
|
|
||||||
bootloader may have SCTLR.I set, which permits normal, cacheable
|
|
||||||
instruction fetches regardless of SCTLR.M).
|
|
||||||
|
|
||||||
This patch moves the cache maintenance check into the maintenance
|
|
||||||
routines themselves, allowing the v6/v7 versions to invalidate the
|
|
||||||
I-cache regardless of the MMU state.
|
|
||||||
|
|
||||||
Cc: <stable@vger.kernel.org>
|
|
||||||
Reported-by: Marc Carino <marc.ceeeee@gmail.com>
|
|
||||||
Tested-by: Julien Grall <julien.grall@linaro.org>
|
|
||||||
Signed-off-by: Will Deacon <will.deacon@arm.com>
|
|
||||||
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|
||||||
---
|
|
||||||
arch/arm/boot/compressed/head.S | 20 ++++++++++++++++----
|
|
||||||
1 file changed, 16 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
|
|
||||||
index 413fd94..68be901 100644
|
|
||||||
--- a/arch/arm/boot/compressed/head.S
|
|
||||||
+++ b/arch/arm/boot/compressed/head.S
|
|
||||||
@@ -397,8 +397,7 @@ dtb_check_done:
|
|
||||||
add sp, sp, r6
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- tst r4, #1
|
|
||||||
- bleq cache_clean_flush
|
|
||||||
+ bl cache_clean_flush
|
|
||||||
|
|
||||||
adr r0, BSYM(restart)
|
|
||||||
add r0, r0, r6
|
|
||||||
@@ -1047,6 +1046,8 @@ cache_clean_flush:
|
|
||||||
b call_cache_fn
|
|
||||||
|
|
||||||
__armv4_mpu_cache_flush:
|
|
||||||
+ tst r4, #1
|
|
||||||
+ movne pc, lr
|
|
||||||
mov r2, #1
|
|
||||||
mov r3, #0
|
|
||||||
mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache
|
|
||||||
@@ -1064,6 +1065,8 @@ __armv4_mpu_cache_flush:
|
|
||||||
mov pc, lr
|
|
||||||
|
|
||||||
__fa526_cache_flush:
|
|
||||||
+ tst r4, #1
|
|
||||||
+ movne pc, lr
|
|
||||||
mov r1, #0
|
|
||||||
mcr p15, 0, r1, c7, c14, 0 @ clean and invalidate D cache
|
|
||||||
mcr p15, 0, r1, c7, c5, 0 @ flush I cache
|
|
||||||
@@ -1072,13 +1075,16 @@ __fa526_cache_flush:
|
|
||||||
|
|
||||||
__armv6_mmu_cache_flush:
|
|
||||||
mov r1, #0
|
|
||||||
- mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D
|
|
||||||
+ tst r4, #1
|
|
||||||
+ mcreq p15, 0, r1, c7, c14, 0 @ clean+invalidate D
|
|
||||||
mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB
|
|
||||||
- mcr p15, 0, r1, c7, c15, 0 @ clean+invalidate unified
|
|
||||||
+ mcreq p15, 0, r1, c7, c15, 0 @ clean+invalidate unified
|
|
||||||
mcr p15, 0, r1, c7, c10, 4 @ drain WB
|
|
||||||
mov pc, lr
|
|
||||||
|
|
||||||
__armv7_mmu_cache_flush:
|
|
||||||
+ tst r4, #1
|
|
||||||
+ bne iflush
|
|
||||||
mrc p15, 0, r10, c0, c1, 5 @ read ID_MMFR1
|
|
||||||
tst r10, #0xf << 16 @ hierarchical cache (ARMv7)
|
|
||||||
mov r10, #0
|
|
||||||
@@ -1139,6 +1145,8 @@ iflush:
|
|
||||||
mov pc, lr
|
|
||||||
|
|
||||||
__armv5tej_mmu_cache_flush:
|
|
||||||
+ tst r4, #1
|
|
||||||
+ movne pc, lr
|
|
||||||
1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate D cache
|
|
||||||
bne 1b
|
|
||||||
mcr p15, 0, r0, c7, c5, 0 @ flush I cache
|
|
||||||
@@ -1146,6 +1154,8 @@ __armv5tej_mmu_cache_flush:
|
|
||||||
mov pc, lr
|
|
||||||
|
|
||||||
__armv4_mmu_cache_flush:
|
|
||||||
+ tst r4, #1
|
|
||||||
+ movne pc, lr
|
|
||||||
mov r2, #64*1024 @ default: 32K dcache size (*2)
|
|
||||||
mov r11, #32 @ default: 32 byte line size
|
|
||||||
mrc p15, 0, r3, c0, c0, 1 @ read cache type
|
|
||||||
@@ -1179,6 +1189,8 @@ no_cache_id:
|
|
||||||
|
|
||||||
__armv3_mmu_cache_flush:
|
|
||||||
__armv3_mpu_cache_flush:
|
|
||||||
+ tst r4, #1
|
|
||||||
+ movne pc, lr
|
|
||||||
mov r1, #0
|
|
||||||
mcr p15, 0, r1, c7, c0, 0 @ invalidate whole cache v3
|
|
||||||
mov pc, lr
|
|
||||||
--
|
|
||||||
2.1.3
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
From: Ben Hutchings <ben@decadent.org.uk>
|
|
||||||
Date: Sat, 26 Jul 2014 15:03:11 +0100
|
|
||||||
Subject: x86: Reject x32 executables if x32 ABI not supported
|
|
||||||
Forwarded: http://mid.gmane.org/1406431195.29010.154.camel@deadeye.wl.decadent.org.uk
|
|
||||||
|
|
||||||
It is currently possible to execve() an x32 executable on an x86_64
|
|
||||||
kernel that has only ia32 compat enabled. However all its syscalls
|
|
||||||
will fail, even _exit(). This usually causes it to segfault.
|
|
||||||
|
|
||||||
Change the ELF compat architecture check so that x32 executables are
|
|
||||||
rejected if we don't support the x32 ABI.
|
|
||||||
|
|
||||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
||||||
---
|
|
||||||
arch/x86/include/asm/elf.h | 5 +++--
|
|
||||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/x86/include/asm/elf.h
|
|
||||||
+++ b/arch/x86/include/asm/elf.h
|
|
||||||
@@ -155,8 +155,9 @@ do { \
|
|
||||||
#define elf_check_arch(x) \
|
|
||||||
((x)->e_machine == EM_X86_64)
|
|
||||||
|
|
||||||
-#define compat_elf_check_arch(x) \
|
|
||||||
- (elf_check_arch_ia32(x) || (x)->e_machine == EM_X86_64)
|
|
||||||
+#define compat_elf_check_arch(x) \
|
|
||||||
+ (elf_check_arch_ia32(x) || \
|
|
||||||
+ (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64))
|
|
||||||
|
|
||||||
#if __USER32_DS != __USER_DS
|
|
||||||
# error "The following code assumes __USER32_DS == __USER_DS"
|
|
|
@ -51,7 +51,6 @@ bugfix/arm/omap-musb-choice.patch
|
||||||
bugfix/mips/disable-advansys.patch
|
bugfix/mips/disable-advansys.patch
|
||||||
bugfix/arm/ixp4xx_iobe.patch
|
bugfix/arm/ixp4xx_iobe.patch
|
||||||
bugfix/m68k/ethernat-kconfig.patch
|
bugfix/m68k/ethernat-kconfig.patch
|
||||||
bugfix/x86/x86-reject-x32-executables-if-x32-abi-not-supported.patch
|
|
||||||
bugfix/s390/s390-3215-fix-hanging-console-issue.patch
|
bugfix/s390/s390-3215-fix-hanging-console-issue.patch
|
||||||
bugfix/arm64/arm64-crypto-fix-makefile-rule-for-aes-glue-.o.patch
|
bugfix/arm64/arm64-crypto-fix-makefile-rule-for-aes-glue-.o.patch
|
||||||
bugfix/s390/s390-3215-fix-tty-output-containing-tabs.patch
|
bugfix/s390/s390-3215-fix-tty-output-containing-tabs.patch
|
||||||
|
@ -60,7 +59,6 @@ bugfix/x86/drm-i915-Add-some-L3-registers-to-the-parser-whiteli.patch
|
||||||
bugfix/parisc/parisc-reduce-sigrtmin-from-37-to-32-to-behave-like-.patch
|
bugfix/parisc/parisc-reduce-sigrtmin-from-37-to-32-to-behave-like-.patch
|
||||||
bugfix/arm64/arm64-add-missing-dts-entry-for-X-Gene-platform.patch
|
bugfix/arm64/arm64-add-missing-dts-entry-for-X-Gene-platform.patch
|
||||||
bugfix/arm64/arm64-removed-using-of-the-mask-attribute-in-the-dts.patch
|
bugfix/arm64/arm64-removed-using-of-the-mask-attribute-in-the-dts.patch
|
||||||
bugfix/arm/decompressor-ensure-I-side-picks-up-reloc.patch
|
|
||||||
|
|
||||||
# Arch features
|
# Arch features
|
||||||
features/mips/MIPS-Support-hard-limit-of-cpu-count-nr_cpu_ids.patch
|
features/mips/MIPS-Support-hard-limit-of-cpu-count-nr_cpu_ids.patch
|
||||||
|
@ -135,12 +133,9 @@ bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch
|
||||||
bugfix/all/fold-swapping-d_name.hash-into-switch_names.patch
|
bugfix/all/fold-swapping-d_name.hash-into-switch_names.patch
|
||||||
bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch
|
bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch
|
||||||
bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch
|
bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch
|
||||||
bugfix/all/SUNRPC-Don-t-wake-tasks-during-connection-abort.patch
|
|
||||||
bugfix/all/lockd-Try-to-reconnect-if-statd-has-moved.patch
|
|
||||||
bugfix/all/HID-i2c-hid-call-the-hid-driver-s-suspend-and-resume.patch
|
bugfix/all/HID-i2c-hid-call-the-hid-driver-s-suspend-and-resume.patch
|
||||||
bugfix/all/drivers-net-Disable-UFO-through-virtio.patch
|
bugfix/all/drivers-net-Disable-UFO-through-virtio.patch
|
||||||
bugfix/all/drivers-net-ipv6-Select-IPv6-fragment-idents-for-vir.patch
|
bugfix/all/drivers-net-ipv6-Select-IPv6-fragment-idents-for-vir.patch
|
||||||
bugfix/all/net-mv643xx_eth-reclaim-TX-skbs-only-when-released-b.patch
|
|
||||||
bugfix/all/xen-netback-Adding-debugfs-io_ring_qX-files.patch
|
bugfix/all/xen-netback-Adding-debugfs-io_ring_qX-files.patch
|
||||||
bugfix/all/xen-netback-Using-a-new-state-bit-instead-of-carrier.patch
|
bugfix/all/xen-netback-Using-a-new-state-bit-instead-of-carrier.patch
|
||||||
bugfix/all/xen-netback-Turn-off-the-carrier-if-the-guest-is-not.patch
|
bugfix/all/xen-netback-Turn-off-the-carrier-if-the-guest-is-not.patch
|
||||||
|
|
Loading…
Reference in New Issue