From 3bbce43ea7fdd73b13a3d79c5ea8bd071d2b9592 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 23 Oct 2015 01:37:19 +0100 Subject: [PATCH] Update to 4.2.4 Drop patches applied upstream. Fix two ABI changes. --- debian/changelog | 260 +++++++++++++++++- ...hm-IPC-objects-before-doing-ipc_addi.patch | 117 -------- ...handle-escaped-paths-in-prepend_path.patch | 58 ---- ...-loop-implementation-of-systime-read.patch | 61 ---- ...ack-use-nf_ct_tmpl_free-in-ct-synpro.patch | 100 ------- ...at-fix-potential-null-deref-at-probe.patch | 79 ------ ...-handle-paths-that-are-unreachable-f.patch | 104 ------- ...id-unreachable-code-on-little-endian.patch | 49 ---- ...x-build-on-pre-r2-little-endian-cpus.patch | 117 -------- ...isable-power_save_node-for-thinkpads.patch | 80 ------ .../signal-fix-abi-change-in-4.2.4.patch | 47 ++++ .../target-fix-abi-change-in-4.2.4.patch | 17 ++ debian/patches/series | 12 +- 13 files changed, 326 insertions(+), 775 deletions(-) delete mode 100644 debian/patches/bugfix/all/Initialize-msg-shm-IPC-objects-before-doing-ipc_addi.patch delete mode 100644 debian/patches/bugfix/all/dcache-handle-escaped-paths-in-prepend_path.patch delete mode 100644 debian/patches/bugfix/all/e1000e-fix-tight-loop-implementation-of-systime-read.patch delete mode 100644 debian/patches/bugfix/all/netfilter-conntrack-use-nf_ct_tmpl_free-in-ct-synpro.patch delete mode 100644 debian/patches/bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch delete mode 100644 debian/patches/bugfix/all/vfs-test-for-and-handle-paths-that-are-unreachable-f.patch delete mode 100644 debian/patches/bugfix/mips/bpf-avoid-unreachable-code-on-little-endian.patch delete mode 100644 debian/patches/bugfix/mips/bpf-fix-build-on-pre-r2-little-endian-cpus.patch delete mode 100644 debian/patches/bugfix/x86/alsa-hda-disable-power_save_node-for-thinkpads.patch create mode 100644 debian/patches/debian/signal-fix-abi-change-in-4.2.4.patch create mode 100644 debian/patches/debian/target-fix-abi-change-in-4.2.4.patch diff --git a/debian/changelog b/debian/changelog index 9205db33a..1cb7c5a5d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,262 @@ -linux (4.2.3-3) UNRELEASED; urgency=medium +linux (4.2.4-1) UNRELEASED; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.2.4 + - [armhf] KVM: Fix incorrect device to IPA mapping + - [x86] KVM: vmx: fix VPID is 0000H in non-root operation + - kvm: don't try to register to KVM_FAST_MMIO_BUS for non mmio eventfd + - kvm: fix zero length mmio searching + - kvm: factor out core eventfd assign/deassign logic + - kvm: fix double free for fast mmio eventfd + - [armhf] KVM: Disable virtual timer even if the guest is not using it + - kvm: svm: reset mmu on VCPU reset + - [x86] KVM: trap AMD MSRs for the TSeg base and mask + - [powerpc*] KVM: Book3S: Take the kvm->srcu lock in + kvmppc_h_logical_ci_load/store() + - [powerpc*] KVM: Book3S HV: Pass the correct trap argument to + kvmhv_commence_exit + - [x86] Revert "KVM: x86: apply guest MTRR virtualization on host reserved + pages" + - [x86] Revert "KVM: SVM: use NPT page attributes" + - [x86] Revert "KVM: SVM: Sync g_pat with guest-written PAT value" + - time: Fix timekeeping_freqadjust()'s incorrect use of abs() instead of + abs64() + - target/iscsi: Fix np_ip bracket issue by removing np_ip + - scsi: fix scsi_error_handler vs. scsi_host_dev_release race + - target: Attach EXTENDED_COPY local I/O descriptors to xcopy_pt_sess + - target: Fix PR registration + APTPL RCU conversion regression + - iser-target: remove command with state ISTATE_REMOVE + - iser-target: Put the reference on commands waiting for unsol data + - toshiba_acpi: Fix hotkeys registration on some toshiba models + - [x86] perf/intel: Fix constraint access + - [x86] locking/qspinlock: Fix performance regression under unaccelerated + VMs + - [x86] locking/qspinlock: Only emit the test-and-set fallback when + building guest support + - [armhf] 8401/1: perf: Set affinity for PPI based PMUs + - perf hists: Update the column width for the "srcline" sort key + - perf stat: Get correct cpu id for print_aggr + - perf tools: Add missing forward declaration of struct map to probe-event.h + - perf tools: Add empty Build files for architectures lacking them + - perf tools: Fix parse_events_add_pmu caller + - perf header: Fixup reading of HEADER_NRCPUS feature + - perf probe: Use existing routine to look for a kernel module by + dso->short_name + - watchdog: sunxi: fix activation of system reset + - watchdog: imgpdc: Unregister restart handler on remove + - sched: access local runqueue directly in single_task_running + - hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for most + chips + - [armhf] fix Thumb2 signal handling when ARMv6 is enabled + - [armel,armhf] 8429/1: disable GCC SRA optimization + - [powerpc*] windfarm: decrement client count when unregistering + - [armhf] dts: omap5-uevm.dts: fix i2c5 pinctrl offsets + - [armhf] dts: omap3-beagle: make i2c3, ddc and tfp410 gpio work again + - [armhf] EXYNOS: reset Little cores when cpu is up + - [armhf] dts: sunxi: Raise minimum CPU voltage for sun7i-a20 to meet SoC + specifications + - [armhf] dts: Fix wrong clock binding for sysmmu_fimd1_1 on exynos5420 + - [armhf] dts: fix usb pin control for imx-rex dts + - dax: fix O_DIRECT I/O to the last block of a blockdev + - blockdev: don't set S_DAX for misaligned partitions + - block: blkg_destroy_all() should clear q->root_blkg and ->root_rl.blkg + - dmaengine: at_xdmac: change block increment addressing mode + - dmaengine: at_xdmac: clean used descriptor + - dmaengine: dw: properly read DWC_PARAMS register + - dmaengine: at_xdmac: fix bug in prep_dma_cyclic + - pmem: add proper fencing to pmem_rw_page() + - [x86] apic: Serialize LVTT and TSC_DEADLINE writes + - [x86] alternatives: Make optimize_nops() interrupt safe and synced + - [i386] platform: Fix Geode LX timekeeping in the generic x86 build + - [x86] ioapic: Force affinity setting in setup_ioapic_dest() + - [x86] pci/intel_mid_pci: Work around for IRQ0 assignment + - [x86] paravirt: Replace the paravirt nop with a bona fide empty function + - [amd64] nmi: Fix a paravirt stack-clobbering bug in the NMI code + - [x86] Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS + - [x86] efi: Fix boot crash by mapping EFI memmap entries bottom-up at + runtime, instead of top-down + - [x86] kexec: Fix kexec crash in syscall kexec_file_load() + - [x86] process: Add proper bound checks in 64bit get_wchan() + - [x86] mm: Set NX on gap between __ex_table and rodata + - [x86] xen: Support kexec/kdump in HVM guests by doing a soft reset + - leds:lp55xx: Correct Kconfig dependency for f/w user helper + - leds/led-class: Add missing put_device() + - sched/core: Fix TASK_DEAD race in finish_task_switch() + - [s390x] compat: correct uc_sigmask of the compat signal frame + - [s390x] boot/decompression: disable floating point in decompressor + - Revert "cgroup: simplify threadgroup locking" + - Revert "sched, cgroup: replace signal_struct->group_rwsem with a global + percpu_rwsem" + - memcg: make mem_cgroup_read_stat() unsigned + - spi: Fix documentation of spi_alloc_master() + - spi: bcm2835: BUG: fix wrong use of PAGE_MASK + - spi: spidev: fix possible NULL dereference + - mm: migrate: hugetlb: putback destination hugepage to active list + - lib/iommu-common.c: do not try to deref a null iommu->lazy_flush() + pointer when n < pool->hint + - ocfs2/dlm: fix deadlock when dispatch assert master + - mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy a + fault + - memcg: fix dirty page migration + - [armhf] ALSA: hda/tegra - async probe for avoiding module loading deadlock + - ALSA: synth: Fix conflicting OSS device registration on AWE32 + - ALSA: hda: Add dock support for ThinkPad T550 + - ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 + - ALSA: hda - Disable power_save_node for IDT 92HD73xx chips + - ASoC: pxa: pxa2xx-ac97: fix dma requestor lines + - ASoC: dwc: correct irq clear method + - ASoC: db1200: Fix DAI link format for db1300 and db1550 + - ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe + - ASoC: tas2552: fix dBscale-min declaration + - btrfs: skip waiting on ordered range for special files + - Btrfs: fix read corruption of compressed and shared extents + - Btrfs: update fix for read corruption of compressed and shared extents + - PCI: Fix devfn for VPD access through function 0 + - PCI: Use function 0 VPD for identical functions, regular VPD for others + - PCI: Clear IORESOURCE_UNSET when clipping a bridge window + - dm thin: disable discard support for thin devices if pool's is disabled + - dm crypt: constrain crypt device's max_segment_size to PAGE_SIZE + - ath10k: fix dma_mapping_error() handling + - svcrdma: Fix send_reply() scatter/gather set-up + - md/raid0: update queue parameter in a safer location. + - md/raid0: apply base queue limits *before* disk_stack_limits + - dm raid: fix round up of default region size + - netfilter: nfnetlink: work around wrong endianess in res_id field + - netfilter: nf_tables: Use 32 bit addressing register from + nft_type_to_reg() + - netfilter: ipset: Out of bound access in hash:net* types fixed + - netfilter: ipset: Fixing unnamed union init + - netfilter: nf_log: wait for rcu grace after logger unregistration + - netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC + - netfilter: nf_log: don't zap all loggers on unregister + - regulator: core: Correct return value check in regulator_resolve_supply + - regulator: axp20x: Fix enable bit indexes for DCDC4 and DCDC5 + - regulator: core: Handle probe deferral from DT when resolving supplies + - Bluetooth: Delay check for conn->smp in smp_conn_security() + - nfs: fix v4.2 SEEK on files over 2 gigs + - NFS: Do cleanup before resetting pageio read/write to mds + - NFSv4: Recovery of recalled read delegations is broken + - nfs: fix pg_test page count calculation + - NFS: Fix a write performance regression + - cifs: Fix sec=krb5 on smb3 mounts + - cifs: disabling oplocks/leases via module parm enable_oplocks broken for + SMB3 + - cifs: Do not fall back to SMBWriteX in set_file_size error cases + - drm/qxl: only report first monitor as connected if we have no state + - drm/qxl: recreate the primary surface when the bo is not primary + - drm/amdgpu: fix overflow on 32bit systems + - drm/amdgpu: Disable UVD PG + - drm/amdgpu: fix the UVD suspend sequence order + - drm/amdgpu: make UVD handle checking more strict + - drm/amdgpu: Fix max_vblank_count value for current display engines + - drm/amdgpu: Restore LCD backlight level on resume + - [x86] drm/i915/bios: handle MIPI Sequence Block v3+ gracefully + - drm: Reject DRI1 hw lock ioctl functions for kms drivers + - drm/radeon: Restore LCD backlight level on resume (>= R5xx) + - drm/dp/mst: fixup handling hotplug on port removal. + - drm/dp/mst: drop cancel work sync in the mstb destroy path (v2) + - xhci: give command abortion one more chance before killing xhci + - xhci: Move xhci_pme_quirk() behind #ifdef CONFIG_PM + - usb: xhci: lock mutex on xhci_stop + - usb: xhci: Clear XHCI_STATE_DYING on start + - usb: xhci: stop everything on the first call to xhci_stop + - usb: xhci: exit early in xhci_setup_device() if we're halted or dying + - xhci: change xhci 1.0 only restrictions to support xhci 1.1 + - xhci: init command timeout timer earlier to avoid deleting it + uninitialized + - usb: xhci: Add support for URB_ZERO_PACKET to bulk/sg transfers + - batman-adv: Make DAT capability changes atomic + - thermal: cpu_cooling: don't call kcalloc() under rcu_read_lock + - thermal: cpu_cooling: free power table on error or when unregistering + - [x86] hv: util: checking the wrong variable + - mmc: dw_mmc: handle data blocks > than 4kB if IDMAC is used + - usb: chipidea: imx: fix a typo for imx6sx + - cifs: use server timestamp for ntlmv2 authentication + - [armhf] irqchip/gic-v3-its: Add missing cache flushes + - docs: update HOWTO for 3.x -> 4.x versioning + - extcon: Fix signedness bugs about break error handling + - extcon: Fix attached value returned by is_extcon_changed + - [armhf] mtd: pxa3xx_nand: add a default chunk size + - mtd: nand: sunxi: fix sunxi_nand_chips_cleanup() + - mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions + - hpsa: fix an sprintf() overflow in the reset handler + - PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS + - device property: fix potential NULL pointer dereference + - ath10k: fix per-vif queue locking + - ath10k: reject 11b tx fragmentation configuration + - ath10k: fix peer limit enforcement + - ath10k: wake up offchannel queue properly + - ath10k: wake up queue upon vif creation + - pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers + - ipr: Enable SIS pipe commands for SIS-32 devices. + - regmap: debugfs: Ensure we don't underflow when printing access masks + - regmap: debugfs: Don't bother actually printing when calculating max + length + - security: fix typo in security_task_prctl + - usb: musb: dsps: fix polling in device-only mode + - usb: chipidea: udc: using the correct stall implementation + - usb: Use the USB_SS_MULT() macro to get the burst multiplier. + - usb: phy: phy-generic: Fix reset behaviour on legacy boot + - usb: musb: cppi41: allow it to work again + - USB: chaoskey read offset bug + - usb: Add device quirk for Logitech PTZ cameras + - USB: Add reset-resume quirk for two Plantronics usb headphones. + - [armel,armhf] crypto: marvell - properly handle + CRYPTO_TFM_REQ_MAY_BACKLOG-flagged requests + - cpu/cacheinfo: Fix teardown path + - cpufreq: dt: Tolerance applies on both sides of target voltage + - [mips*] Fix console output for Fulong2e system + - [mips*] bootmem: Fix mapstart calculation for contiguous maps + - [mips*] dma-default: Fix 32-bit fall back to GFP_DMA + - [mips*] CPS: Stop dangling delay slot from has_mt. + - [mips*] CPS: Don't include MT code in non-MT kernels. + - [mips*] CPS: #ifdef on CONFIG_MIPS_MT_SMP rather than CONFIG_MIPS_MT + - batman-adv: Make NC capability changes atomic + - batman-adv: Make TT capability changes atomic + - batman-adv: Make MCAST capability changes atomic + - batman-adv: Fix potential synchronization issues in mcast tvlv handler + - batman-adv: Fix potentially broken skb network header access + - [powerpc*] MSI: Fix race condition in tearing down MSI interrupts + - rsi: Fix possible leak when loading firmware + - UBIFS: Kill unneeded locking in ubifs_init_security + - UBI: Validate data_size + - UBI: return ENOSPC if no enough space available + - net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected + - iscsi-target: Avoid OFMarker + IFMarker negotiation + - mmc: core: Don't return an error for CD/WP GPIOs when GPIOLIB is unset + - mmc: core: fix dead loop of mmc_retune + - [arm64] efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME + regions + - [arm64] ftrace: fix function_graph tracer panic + - [arm64] readahead: fault retry breaks mmap file read random detection + - [m68k] Define asmlinkage_protect + - xen/blkback: free requests on disconnection + - net/xen-netfront: only napi_synchronize() if running + - igb: do not re-init SR-IOV during probe + - genirq: Fix race in register_irq_proc() + - clocksource: Fix abs() usage w/ 64bit values + - md/bitmap: don't pass -1 to bitmap_storage_alloc. + - nfs/filelayout: Fix NULL reference caused by double freeing of fh_array + - cpufreq: acpi_cpufreq: prevent crash on reading freqdomain_cpus + - [armhf] clk: ti: fix dual-registration of uart4_ick + - [armhf] clk: ti: clk-7xx: Remove hardwired ABE clock configuration + - [armhf] clk: samsung: fix cpu clock's flags checking + - namei: results of d_is_negative() should be checked after dentry + revalidation + - dm: fix AB-BA deadlock in __dm_destroy() + - dm cache: fix NULL pointer when switching from cleaner policy + - staging: speakup: fix speakup-r regression + - tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c + - drivers/tty: require read access for controlling terminal + - serial: 8250: add uart_config entry for PORT_RT2880 + - serial: atmel: fix error path of probe function + - mm/slab: fix unexpected index mapping result of kmalloc_size(INDEX_NODE+1) + - blk-mq: avoid setting hctx->tags->cpumask before allocation + - sched/preempt: Fix cond_resched_lock() and cond_resched_softirq() + - 3w-9xxx: don't unmap bounce buffered commands + - sched/preempt, xen: Use need_resched() instead of should_resched() + - sched/preempt, powerpc, kvm: Use need_resched() instead of + should_resched() [ Salvatore Bonaccorso ] * KEYS: Fix race between key destruction and finding a keyring by name diff --git a/debian/patches/bugfix/all/Initialize-msg-shm-IPC-objects-before-doing-ipc_addi.patch b/debian/patches/bugfix/all/Initialize-msg-shm-IPC-objects-before-doing-ipc_addi.patch deleted file mode 100644 index b4964de99..000000000 --- a/debian/patches/bugfix/all/Initialize-msg-shm-IPC-objects-before-doing-ipc_addi.patch +++ /dev/null @@ -1,117 +0,0 @@ -From: Linus Torvalds -Date: Wed, 30 Sep 2015 12:48:40 -0400 -Subject: Initialize msg/shm IPC objects before doing ipc_addid() -Origin: https://git.kernel.org/linus/b9a532277938798b53178d5a66af6e2915cb27cf - -As reported by Dmitry Vyukov, we really shouldn't do ipc_addid() before -having initialized the IPC object state. Yes, we initialize the IPC -object in a locked state, but with all the lockless RCU lookup work, -that IPC object lock no longer means that the state cannot be seen. - -We already did this for the IPC semaphore code (see commit e8577d1f0329: -"ipc/sem.c: fully initialize sem_array before making it visible") but we -clearly forgot about msg and shm. - -Reported-by: Dmitry Vyukov -Cc: Manfred Spraul -Cc: Davidlohr Bueso -Cc: stable@vger.kernel.org -Signed-off-by: Linus Torvalds ---- - ipc/msg.c | 14 +++++++------- - ipc/shm.c | 13 +++++++------ - ipc/util.c | 8 ++++---- - 3 files changed, 18 insertions(+), 17 deletions(-) - -diff --git a/ipc/msg.c b/ipc/msg.c -index 66c4f56..1471db9 100644 ---- a/ipc/msg.c -+++ b/ipc/msg.c -@@ -137,13 +137,6 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params) - return retval; - } - -- /* ipc_addid() locks msq upon success. */ -- id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni); -- if (id < 0) { -- ipc_rcu_putref(msq, msg_rcu_free); -- return id; -- } -- - msq->q_stime = msq->q_rtime = 0; - msq->q_ctime = get_seconds(); - msq->q_cbytes = msq->q_qnum = 0; -@@ -153,6 +146,13 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params) - INIT_LIST_HEAD(&msq->q_receivers); - INIT_LIST_HEAD(&msq->q_senders); - -+ /* ipc_addid() locks msq upon success. */ -+ id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni); -+ if (id < 0) { -+ ipc_rcu_putref(msq, msg_rcu_free); -+ return id; -+ } -+ - ipc_unlock_object(&msq->q_perm); - rcu_read_unlock(); - -diff --git a/ipc/shm.c b/ipc/shm.c -index 222131e..4178727 100644 ---- a/ipc/shm.c -+++ b/ipc/shm.c -@@ -551,12 +551,6 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) - if (IS_ERR(file)) - goto no_file; - -- id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni); -- if (id < 0) { -- error = id; -- goto no_id; -- } -- - shp->shm_cprid = task_tgid_vnr(current); - shp->shm_lprid = 0; - shp->shm_atim = shp->shm_dtim = 0; -@@ -565,6 +559,13 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) - shp->shm_nattch = 0; - shp->shm_file = file; - shp->shm_creator = current; -+ -+ id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni); -+ if (id < 0) { -+ error = id; -+ goto no_id; -+ } -+ - list_add(&shp->shm_clist, ¤t->sysvshm.shm_clist); - - /* -diff --git a/ipc/util.c b/ipc/util.c -index be42300..0f401d9 100644 ---- a/ipc/util.c -+++ b/ipc/util.c -@@ -237,6 +237,10 @@ int ipc_addid(struct ipc_ids *ids, struct kern_ipc_perm *new, int size) - rcu_read_lock(); - spin_lock(&new->lock); - -+ current_euid_egid(&euid, &egid); -+ new->cuid = new->uid = euid; -+ new->gid = new->cgid = egid; -+ - id = idr_alloc(&ids->ipcs_idr, new, - (next_id < 0) ? 0 : ipcid_to_idx(next_id), 0, - GFP_NOWAIT); -@@ -249,10 +253,6 @@ int ipc_addid(struct ipc_ids *ids, struct kern_ipc_perm *new, int size) - - ids->in_use++; - -- current_euid_egid(&euid, &egid); -- new->cuid = new->uid = euid; -- new->gid = new->cgid = egid; -- - if (next_id < 0) { - new->seq = ids->seq++; - if (ids->seq > IPCID_SEQ_MAX) --- -2.6.0 - diff --git a/debian/patches/bugfix/all/dcache-handle-escaped-paths-in-prepend_path.patch b/debian/patches/bugfix/all/dcache-handle-escaped-paths-in-prepend_path.patch deleted file mode 100644 index 9b4e9136a..000000000 --- a/debian/patches/bugfix/all/dcache-handle-escaped-paths-in-prepend_path.patch +++ /dev/null @@ -1,58 +0,0 @@ -From: "Eric W. Biederman" -Date: Sat, 15 Aug 2015 13:36:12 -0500 -Subject: dcache: Handle escaped paths in prepend_path -Origin: https://git.kernel.org/linus/cde93be45a8a90d8c264c776fab63487b5038a65 - -A rename can result in a dentry that by walking up d_parent -will never reach it's mnt_root. For lack of a better term -I call this an escaped path. - -prepend_path is called by four different functions __d_path, -d_absolute_path, d_path, and getcwd. - -__d_path only wants to see paths are connected to the root it passes -in. So __d_path needs prepend_path to return an error. - -d_absolute_path similarly wants to see paths that are connected to -some root. Escaped paths are not connected to any mnt_root so -d_absolute_path needs prepend_path to return an error greater -than 1. So escaped paths will be treated like paths on lazily -unmounted mounts. - -getcwd needs to prepend "(unreachable)" so getcwd also needs -prepend_path to return an error. - -d_path is the interesting hold out. d_path just wants to print -something, and does not care about the weird cases. Which raises -the question what should be printed? - -Given that / should result in -ENOENT I -believe it is desirable for escaped paths to be printed as empty -paths. As there are not really any meaninful path components when -considered from the perspective of a mount tree. - -So tweak prepend_path to return an empty path with an new error -code of 3 when it encounters an escaped path. - -Signed-off-by: "Eric W. Biederman" -Signed-off-by: Al Viro ---- - fs/dcache.c | 7 +++++++ - 1 file changed, 7 insertions(+) - ---- a/fs/dcache.c -+++ b/fs/dcache.c -@@ -2927,6 +2927,13 @@ restart: - - if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) { - struct mount *parent = ACCESS_ONCE(mnt->mnt_parent); -+ /* Escaped? */ -+ if (dentry != vfsmnt->mnt_root) { -+ bptr = *buffer; -+ blen = *buflen; -+ error = 3; -+ break; -+ } - /* Global root? */ - if (mnt != parent) { - dentry = ACCESS_ONCE(mnt->mnt_mountpoint); diff --git a/debian/patches/bugfix/all/e1000e-fix-tight-loop-implementation-of-systime-read.patch b/debian/patches/bugfix/all/e1000e-fix-tight-loop-implementation-of-systime-read.patch deleted file mode 100644 index 12f6aa264..000000000 --- a/debian/patches/bugfix/all/e1000e-fix-tight-loop-implementation-of-systime-read.patch +++ /dev/null @@ -1,61 +0,0 @@ -From: Raanan Avargil -Date: Sun, 19 Jul 2015 16:33:20 +0300 -Subject: e1000e: Fix tight loop implementation of systime read algorithm -Origin: https://git.kernel.org/linus/37b12910dd11d9ab969f2c310dc9160b7f3e3405 - -Change the algorithm. Read systimel twice and check for overflow. -If there was no overflow, use the first value. -If there was an overflow, read systimeh again and use the second -systimel value. - -Signed-off-by: Raanan Avargil -Tested-by: Aaron Brown -Signed-off-by: Jeff Kirsher ---- - drivers/net/ethernet/intel/e1000e/netdev.c | 31 ++++++++++++++++++++---------- - 1 file changed, 21 insertions(+), 10 deletions(-) - -diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c -index 24b7269..96a8166 100644 ---- a/drivers/net/ethernet/intel/e1000e/netdev.c -+++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -4280,18 +4280,29 @@ static cycle_t e1000e_cyclecounter_read(const struct cyclecounter *cc) - struct e1000_adapter *adapter = container_of(cc, struct e1000_adapter, - cc); - struct e1000_hw *hw = &adapter->hw; -+ u32 systimel_1, systimel_2, systimeh; - cycle_t systim, systim_next; -- /* SYSTIMH latching upon SYSTIML read does not work well. To fix that -- * we don't want to allow overflow of SYSTIML and a change to SYSTIMH -- * to occur between reads, so if we read a vale close to overflow, we -- * wait for overflow to occur and read both registers when its safe. -+ /* SYSTIMH latching upon SYSTIML read does not work well. -+ * This means that if SYSTIML overflows after we read it but before -+ * we read SYSTIMH, the value of SYSTIMH has been incremented and we -+ * will experience a huge non linear increment in the systime value -+ * to fix that we test for overflow and if true, we re-read systime. - */ -- u32 systim_overflow_latch_fix = 0x3FFFFFFF; -- -- do { -- systim = (cycle_t)er32(SYSTIML); -- } while (systim > systim_overflow_latch_fix); -- systim |= (cycle_t)er32(SYSTIMH) << 32; -+ systimel_1 = er32(SYSTIML); -+ systimeh = er32(SYSTIMH); -+ systimel_2 = er32(SYSTIML); -+ /* Check for overflow. If there was no overflow, use the values */ -+ if (systimel_1 < systimel_2) { -+ systim = (cycle_t)systimel_1; -+ systim |= (cycle_t)systimeh << 32; -+ } else { -+ /* There was an overflow, read again SYSTIMH, and use -+ * systimel_2 -+ */ -+ systimeh = er32(SYSTIMH); -+ systim = (cycle_t)systimel_2; -+ systim |= (cycle_t)systimeh << 32; -+ } - - if ((hw->mac.type == e1000_82574) || (hw->mac.type == e1000_82583)) { - u64 incvalue, time_delta, rem, temp; diff --git a/debian/patches/bugfix/all/netfilter-conntrack-use-nf_ct_tmpl_free-in-ct-synpro.patch b/debian/patches/bugfix/all/netfilter-conntrack-use-nf_ct_tmpl_free-in-ct-synpro.patch deleted file mode 100644 index 9434985e4..000000000 --- a/debian/patches/bugfix/all/netfilter-conntrack-use-nf_ct_tmpl_free-in-ct-synpro.patch +++ /dev/null @@ -1,100 +0,0 @@ -From: Daniel Borkmann -Date: Mon, 31 Aug 2015 19:11:02 +0200 -Subject: netfilter: conntrack: use nf_ct_tmpl_free in CT/synproxy error paths -Origin: https://git.kernel.org/linus/9cf94eab8b309e8bcc78b41dd1561c75b537dd0b -Bug-Debian: https://bugs.debian.org/800445 - -Commit 0838aa7fcfcd ("netfilter: fix netns dependencies with conntrack -templates") migrated templates to the new allocator api, but forgot to -update error paths for them in CT and synproxy to use nf_ct_tmpl_free() -instead of nf_conntrack_free(). - -Due to that, memory is being freed into the wrong kmemcache, but also -we drop the per net reference count of ct objects causing an imbalance. - -In Brad's case, this leads to a wrap-around of net->ct.count and thus -lets __nf_conntrack_alloc() refuse to create a new ct object: - - [ 10.340913] xt_addrtype: ipv6 does not support BROADCAST matching - [ 10.810168] nf_conntrack: table full, dropping packet - [ 11.917416] r8169 0000:07:00.0 eth0: link up - [ 11.917438] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready - [ 12.815902] nf_conntrack: table full, dropping packet - [ 15.688561] nf_conntrack: table full, dropping packet - [ 15.689365] nf_conntrack: table full, dropping packet - [ 15.690169] nf_conntrack: table full, dropping packet - [ 15.690967] nf_conntrack: table full, dropping packet - [...] - -With slab debugging, it also reports the wrong kmemcache (kmalloc-512 vs. -nf_conntrack_ffffffff81ce75c0) and reports poison overwrites, etc. Thus, -to fix the problem, export and use nf_ct_tmpl_free() instead. - -Fixes: 0838aa7fcfcd ("netfilter: fix netns dependencies with conntrack templates") -Reported-by: Brad Jackson -Signed-off-by: Daniel Borkmann -Signed-off-by: Pablo Neira Ayuso ---- - include/net/netfilter/nf_conntrack.h | 1 + - net/netfilter/nf_conntrack_core.c | 3 ++- - net/netfilter/nf_synproxy_core.c | 2 +- - net/netfilter/xt_CT.c | 2 +- - 4 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h -index 37cd391..4023c4c 100644 ---- a/include/net/netfilter/nf_conntrack.h -+++ b/include/net/netfilter/nf_conntrack.h -@@ -292,6 +292,7 @@ extern unsigned int nf_conntrack_hash_rnd; - void init_nf_conntrack_hash_rnd(void); - - struct nf_conn *nf_ct_tmpl_alloc(struct net *net, u16 zone, gfp_t flags); -+void nf_ct_tmpl_free(struct nf_conn *tmpl); - - #define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) - #define NF_CT_STAT_INC_ATOMIC(net, count) this_cpu_inc((net)->ct.stat->count) -diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c -index 3c20d02..0625a42 100644 ---- a/net/netfilter/nf_conntrack_core.c -+++ b/net/netfilter/nf_conntrack_core.c -@@ -320,12 +320,13 @@ out_free: - } - EXPORT_SYMBOL_GPL(nf_ct_tmpl_alloc); - --static void nf_ct_tmpl_free(struct nf_conn *tmpl) -+void nf_ct_tmpl_free(struct nf_conn *tmpl) - { - nf_ct_ext_destroy(tmpl); - nf_ct_ext_free(tmpl); - kfree(tmpl); - } -+EXPORT_SYMBOL_GPL(nf_ct_tmpl_free); - - static void - destroy_conntrack(struct nf_conntrack *nfct) -diff --git a/net/netfilter/nf_synproxy_core.c b/net/netfilter/nf_synproxy_core.c -index d7f1685..d6ee8f8 100644 ---- a/net/netfilter/nf_synproxy_core.c -+++ b/net/netfilter/nf_synproxy_core.c -@@ -378,7 +378,7 @@ static int __net_init synproxy_net_init(struct net *net) - err3: - free_percpu(snet->stats); - err2: -- nf_conntrack_free(ct); -+ nf_ct_tmpl_free(ct); - err1: - return err; - } -diff --git a/net/netfilter/xt_CT.c b/net/netfilter/xt_CT.c -index 43ddeee..f3377ce 100644 ---- a/net/netfilter/xt_CT.c -+++ b/net/netfilter/xt_CT.c -@@ -233,7 +233,7 @@ out: - return 0; - - err3: -- nf_conntrack_free(ct); -+ nf_ct_tmpl_free(ct); - err2: - nf_ct_l3proto_module_put(par->family); - err1: diff --git a/debian/patches/bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch b/debian/patches/bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch deleted file mode 100644 index 43809584a..000000000 --- a/debian/patches/bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch +++ /dev/null @@ -1,79 +0,0 @@ -From: Johan Hovold -Date: Wed, 23 Sep 2015 11:41:42 -0700 -Subject: USB: whiteheat: fix potential null-deref at probe -Origin: https://git.kernel.org/cgit/linux/kernel/git/gregkh/usb.git/commit?id=cbb4be652d374f64661137756b8f357a1827d6a4 - -Fix potential null-pointer dereference at probe by making sure that the -required endpoints are present. - -The whiteheat driver assumes there are at least five pairs of bulk -endpoints, of which the final pair is used for the "command port". An -attempt to bind to an interface with fewer bulk endpoints would -currently lead to an oops. - -Fixes CVE-2015-5257. - -Reported-by: Moein Ghasemzadeh -Cc: stable -Signed-off-by: Johan Hovold -Signed-off-by: Greg Kroah-Hartman ---- - drivers/usb/serial/whiteheat.c | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - -diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c -index 6c3734d..d3ea90b 100644 ---- a/drivers/usb/serial/whiteheat.c -+++ b/drivers/usb/serial/whiteheat.c -@@ -80,6 +80,8 @@ static int whiteheat_firmware_download(struct usb_serial *serial, - static int whiteheat_firmware_attach(struct usb_serial *serial); - - /* function prototypes for the Connect Tech WhiteHEAT serial converter */ -+static int whiteheat_probe(struct usb_serial *serial, -+ const struct usb_device_id *id); - static int whiteheat_attach(struct usb_serial *serial); - static void whiteheat_release(struct usb_serial *serial); - static int whiteheat_port_probe(struct usb_serial_port *port); -@@ -116,6 +118,7 @@ static struct usb_serial_driver whiteheat_device = { - .description = "Connect Tech - WhiteHEAT", - .id_table = id_table_std, - .num_ports = 4, -+ .probe = whiteheat_probe, - .attach = whiteheat_attach, - .release = whiteheat_release, - .port_probe = whiteheat_port_probe, -@@ -217,6 +220,34 @@ static int whiteheat_firmware_attach(struct usb_serial *serial) - /***************************************************************************** - * Connect Tech's White Heat serial driver functions - *****************************************************************************/ -+ -+static int whiteheat_probe(struct usb_serial *serial, -+ const struct usb_device_id *id) -+{ -+ struct usb_host_interface *iface_desc; -+ struct usb_endpoint_descriptor *endpoint; -+ size_t num_bulk_in = 0; -+ size_t num_bulk_out = 0; -+ size_t min_num_bulk; -+ unsigned int i; -+ -+ iface_desc = serial->interface->cur_altsetting; -+ -+ for (i = 0; i < iface_desc->desc.bNumEndpoints; i++) { -+ endpoint = &iface_desc->endpoint[i].desc; -+ if (usb_endpoint_is_bulk_in(endpoint)) -+ ++num_bulk_in; -+ if (usb_endpoint_is_bulk_out(endpoint)) -+ ++num_bulk_out; -+ } -+ -+ min_num_bulk = COMMAND_PORT + 1; -+ if (num_bulk_in < min_num_bulk || num_bulk_out < min_num_bulk) -+ return -ENODEV; -+ -+ return 0; -+} -+ - static int whiteheat_attach(struct usb_serial *serial) - { - struct usb_serial_port *command_port; diff --git a/debian/patches/bugfix/all/vfs-test-for-and-handle-paths-that-are-unreachable-f.patch b/debian/patches/bugfix/all/vfs-test-for-and-handle-paths-that-are-unreachable-f.patch deleted file mode 100644 index 7d38eac91..000000000 --- a/debian/patches/bugfix/all/vfs-test-for-and-handle-paths-that-are-unreachable-f.patch +++ /dev/null @@ -1,104 +0,0 @@ -From: "Eric W. Biederman" -Date: Sat, 15 Aug 2015 20:27:13 -0500 -Subject: vfs: Test for and handle paths that are unreachable from their mnt_root -Origin: https://git.kernel.org/linus/397d425dc26da728396e66d392d5dcb8dac30c37 - -In rare cases a directory can be renamed out from under a bind mount. -In those cases without special handling it becomes possible to walk up -the directory tree to the root dentry of the filesystem and down -from the root dentry to every other file or directory on the filesystem. - -Like division by zero .. from an unconnected path can not be given -a useful semantic as there is no predicting at which path component -the code will realize it is unconnected. We certainly can not match -the current behavior as the current behavior is a security hole. - -Therefore when encounting .. when following an unconnected path -return -ENOENT. - -- Add a function path_connected to verify path->dentry is reachable - from path->mnt.mnt_root. AKA to validate that rename did not do - something nasty to the bind mount. - - To avoid races path_connected must be called after following a path - component to it's next path component. - -Signed-off-by: "Eric W. Biederman" -Signed-off-by: Al Viro ---- - fs/namei.c | 27 +++++++++++++++++++++++++-- - 1 file changed, 25 insertions(+), 2 deletions(-) - -diff --git a/fs/namei.c b/fs/namei.c -index 1c2105e..29b9279 100644 ---- a/fs/namei.c -+++ b/fs/namei.c -@@ -560,6 +560,24 @@ static int __nd_alloc_stack(struct nameidata *nd) - return 0; - } - -+/** -+ * path_connected - Verify that a path->dentry is below path->mnt.mnt_root -+ * @path: nameidate to verify -+ * -+ * Rename can sometimes move a file or directory outside of a bind -+ * mount, path_connected allows those cases to be detected. -+ */ -+static bool path_connected(const struct path *path) -+{ -+ struct vfsmount *mnt = path->mnt; -+ -+ /* Only bind mounts can have disconnected paths */ -+ if (mnt->mnt_root == mnt->mnt_sb->s_root) -+ return true; -+ -+ return is_subdir(path->dentry, mnt->mnt_root); -+} -+ - static inline int nd_alloc_stack(struct nameidata *nd) - { - if (likely(nd->depth != EMBEDDED_LEVELS)) -@@ -1296,6 +1314,8 @@ static int follow_dotdot_rcu(struct nameidata *nd) - return -ECHILD; - nd->path.dentry = parent; - nd->seq = seq; -+ if (unlikely(!path_connected(&nd->path))) -+ return -ENOENT; - break; - } else { - struct mount *mnt = real_mount(nd->path.mnt); -@@ -1396,7 +1416,7 @@ static void follow_mount(struct path *path) - } - } - --static void follow_dotdot(struct nameidata *nd) -+static int follow_dotdot(struct nameidata *nd) - { - if (!nd->root.mnt) - set_root(nd); -@@ -1412,6 +1432,8 @@ static void follow_dotdot(struct nameidata *nd) - /* rare case of legitimate dget_parent()... */ - nd->path.dentry = dget_parent(nd->path.dentry); - dput(old); -+ if (unlikely(!path_connected(&nd->path))) -+ return -ENOENT; - break; - } - if (!follow_up(&nd->path)) -@@ -1419,6 +1441,7 @@ static void follow_dotdot(struct nameidata *nd) - } - follow_mount(&nd->path); - nd->inode = nd->path.dentry->d_inode; -+ return 0; - } - - /* -@@ -1634,7 +1657,7 @@ static inline int handle_dots(struct nameidata *nd, int type) - if (nd->flags & LOOKUP_RCU) { - return follow_dotdot_rcu(nd); - } else -- follow_dotdot(nd); -+ return follow_dotdot(nd); - } - return 0; - } diff --git a/debian/patches/bugfix/mips/bpf-avoid-unreachable-code-on-little-endian.patch b/debian/patches/bugfix/mips/bpf-avoid-unreachable-code-on-little-endian.patch deleted file mode 100644 index cb57993a4..000000000 --- a/debian/patches/bugfix/mips/bpf-avoid-unreachable-code-on-little-endian.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Aurelien Jarno -Date: Fri, 4 Sep 2015 16:32:17 +0200 -Subject: [1/2] MIPS: BPF: Avoid unreachable code on little endian -Origin: https://git.kernel.org/linus/faa9724a674e5e52316bb0d173aed16bd17d536c - -On little endian, avoid generating the big endian version of the code -by using #else in addition to #ifdef #endif. Also fix one alignment -issue wrt delay slot. - -Cc: Ralf Baechle -Cc: Markos Chandras -Cc: stable@vger.kernel.org # v4.2+ -Signed-off-by: Aurelien Jarno ---- - arch/mips/net/bpf_jit_asm.S | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/arch/mips/net/bpf_jit_asm.S b/arch/mips/net/bpf_jit_asm.S -index e927260..4f54cb1 100644 ---- a/arch/mips/net/bpf_jit_asm.S -+++ b/arch/mips/net/bpf_jit_asm.S -@@ -151,9 +151,10 @@ NESTED(bpf_slow_path_word, (6 * SZREG), $r_sp) - wsbh t0, $r_s0 - jr $r_ra - rotr $r_A, t0, 16 --#endif -+#else - jr $r_ra -- move $r_A, $r_s0 -+ move $r_A, $r_s0 -+#endif - - END(bpf_slow_path_word) - -@@ -162,9 +163,10 @@ NESTED(bpf_slow_path_half, (6 * SZREG), $r_sp) - #ifdef CONFIG_CPU_LITTLE_ENDIAN - jr $r_ra - wsbh $r_A, $r_s0 --#endif -+#else - jr $r_ra - move $r_A, $r_s0 -+#endif - - END(bpf_slow_path_half) - --- -2.1.4 - diff --git a/debian/patches/bugfix/mips/bpf-fix-build-on-pre-r2-little-endian-cpus.patch b/debian/patches/bugfix/mips/bpf-fix-build-on-pre-r2-little-endian-cpus.patch deleted file mode 100644 index 548136e14..000000000 --- a/debian/patches/bugfix/mips/bpf-fix-build-on-pre-r2-little-endian-cpus.patch +++ /dev/null @@ -1,117 +0,0 @@ -From: Aurelien Jarno -Date: Sat, 5 Sep 2015 17:02:59 +0200 -Subject: [2/2] MIPS: BPF: Fix build on pre-R2 little endian CPUs -Origin: https://git.kernel.org/linus/b259e51f2e29390518021f9b8df55a3de42f371b - -The rotr, seh and wsbh instructions have been introduced with the R2 -ISA. Thus the current BPF code fails to build on pre-R2 little endian -CPUs: - - CC arch/mips/net/bpf_jit.o - AS arch/mips/net/bpf_jit_asm.o - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S: Assembler messages: - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S:67: Error: opcode not supported on this processor: mips32 (mips32) `wsbh $8,$19' - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S:68: Error: opcode not supported on this processor: mips32 (mips32) `rotr $19,$8,16' - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S:83: Error: opcode not supported on this processor: mips32 (mips32) `wsbh $8,$19' - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S:84: Error: opcode not supported on this processor: mips32 (mips32) `seh $19,$8' - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S:151: Error: opcode not supported on this processor: mips32 (mips32) `wsbh $8,$12' - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S:153: Error: opcode not supported on this processor: mips32 (mips32) `rotr $19,$8,16' - /home/aurel32/linux-4.2/arch/mips/net/bpf_jit_asm.S:164: Error: opcode not supported on this processor: mips32 (mips32) `wsbh $19,$12' - /home/aurel32/linux-4.2/scripts/Makefile.build:294: recipe for target 'arch/mips/net/bpf_jit_asm.o' failed - -Fix that by providing equivalent code for these CPUs. - -Cc: Ralf Baechle -Cc: Markos Chandras -Cc: stable@vger.kernel.org # v4.2+ -Signed-off-by: Aurelien Jarno ---- - arch/mips/net/bpf_jit_asm.S | 42 ++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 42 insertions(+) - -diff --git a/arch/mips/net/bpf_jit_asm.S b/arch/mips/net/bpf_jit_asm.S -index 4f54cb1..dabf417 100644 ---- a/arch/mips/net/bpf_jit_asm.S -+++ b/arch/mips/net/bpf_jit_asm.S -@@ -64,8 +64,20 @@ sk_load_word_positive: - PTR_ADDU t1, $r_skb_data, offset - lw $r_A, 0(t1) - #ifdef CONFIG_CPU_LITTLE_ENDIAN -+# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) - wsbh t0, $r_A - rotr $r_A, t0, 16 -+# else -+ sll t0, $r_A, 24 -+ srl t1, $r_A, 24 -+ srl t2, $r_A, 8 -+ or t0, t0, t1 -+ andi t2, t2, 0xff00 -+ andi t1, $r_A, 0xff00 -+ or t0, t0, t2 -+ sll t1, t1, 8 -+ or $r_A, t0, t1 -+# endif - #endif - jr $r_ra - move $r_ret, zero -@@ -80,8 +92,16 @@ sk_load_half_positive: - PTR_ADDU t1, $r_skb_data, offset - lh $r_A, 0(t1) - #ifdef CONFIG_CPU_LITTLE_ENDIAN -+# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) - wsbh t0, $r_A - seh $r_A, t0 -+# else -+ sll t0, $r_A, 24 -+ andi t1, $r_A, 0xff00 -+ sra t0, t0, 16 -+ srl t1, t1, 8 -+ or $r_A, t0, t1 -+# endif - #endif - jr $r_ra - move $r_ret, zero -@@ -148,9 +168,22 @@ sk_load_byte_positive: - NESTED(bpf_slow_path_word, (6 * SZREG), $r_sp) - bpf_slow_path_common(4) - #ifdef CONFIG_CPU_LITTLE_ENDIAN -+# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) - wsbh t0, $r_s0 - jr $r_ra - rotr $r_A, t0, 16 -+# else -+ sll t0, $r_s0, 24 -+ srl t1, $r_s0, 24 -+ srl t2, $r_s0, 8 -+ or t0, t0, t1 -+ andi t2, t2, 0xff00 -+ andi t1, $r_s0, 0xff00 -+ or t0, t0, t2 -+ sll t1, t1, 8 -+ jr $r_ra -+ or $r_A, t0, t1 -+# endif - #else - jr $r_ra - move $r_A, $r_s0 -@@ -161,8 +194,17 @@ NESTED(bpf_slow_path_word, (6 * SZREG), $r_sp) - NESTED(bpf_slow_path_half, (6 * SZREG), $r_sp) - bpf_slow_path_common(2) - #ifdef CONFIG_CPU_LITTLE_ENDIAN -+# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) - jr $r_ra - wsbh $r_A, $r_s0 -+# else -+ sll t0, $r_s0, 8 -+ andi t1, $r_s0, 0xff00 -+ andi t0, t0, 0xff00 -+ srl t1, t1, 8 -+ jr $r_ra -+ or $r_A, t0, t1 -+# endif - #else - jr $r_ra - move $r_A, $r_s0 --- -2.1.4 - diff --git a/debian/patches/bugfix/x86/alsa-hda-disable-power_save_node-for-thinkpads.patch b/debian/patches/bugfix/x86/alsa-hda-disable-power_save_node-for-thinkpads.patch deleted file mode 100644 index 9438cbaae..000000000 --- a/debian/patches/bugfix/x86/alsa-hda-disable-power_save_node-for-thinkpads.patch +++ /dev/null @@ -1,80 +0,0 @@ -From: Takashi Iwai -Date: Thu, 24 Sep 2015 17:36:51 +0200 -Subject: ALSA: hda - Disable power_save_node for Thinkpads -Origin: https://git.kernel.org/linus/7f57d803ee03730d570dc59a9e3e4842b58dd5cc - -Lenovo Thinkpads with recent Realtek codecs seem suffering from click -noises at power transition since the introduction of widget power -saving in 4.1 kernel. Although this might be solved by some delays in -appropriate points, as a quick workaround, just disable the -power_save_node feature for now. The gain it gives is relatively -small, and this makes the situation back to pre 4.1 time. - -This patch ended up with a bit more code changes than usual because -the existing fixup for Thinkpads is highly chained. Instead of adding -yet another chain, combine a few of them into a single fixup entry, as -a gratis cleanup. - -Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=943982 -Cc: # v4.1+ -Signed-off-by: Takashi Iwai ---- - sound/pci/hda/patch_realtek.c | 31 +++++++++++++++++++------------ - 1 file changed, 19 insertions(+), 12 deletions(-) - -diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c -index a75b561..afec6dc 100644 ---- a/sound/pci/hda/patch_realtek.c -+++ b/sound/pci/hda/patch_realtek.c -@@ -4188,6 +4188,24 @@ static void alc_fixup_disable_aamix(struct hda_codec *codec, - } - } - -+/* fixup for Thinkpad docks: add dock pins, avoid HP parser fixup */ -+static void alc_fixup_tpt440_dock(struct hda_codec *codec, -+ const struct hda_fixup *fix, int action) -+{ -+ static const struct hda_pintbl pincfgs[] = { -+ { 0x16, 0x21211010 }, /* dock headphone */ -+ { 0x19, 0x21a11010 }, /* dock mic */ -+ { } -+ }; -+ struct alc_spec *spec = codec->spec; -+ -+ if (action == HDA_FIXUP_ACT_PRE_PROBE) { -+ spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; -+ codec->power_save_node = 0; /* avoid click noises */ -+ snd_hda_apply_pincfgs(codec, pincfgs); -+ } -+} -+ - static void alc_shutup_dell_xps13(struct hda_codec *codec) - { - struct alc_spec *spec = codec->spec; -@@ -4562,7 +4580,6 @@ enum { - ALC255_FIXUP_HEADSET_MODE_NO_HP_MIC, - ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, - ALC292_FIXUP_TPT440_DOCK, -- ALC292_FIXUP_TPT440_DOCK2, - ALC283_FIXUP_BXBT2807_MIC, - ALC255_FIXUP_DELL_WMI_MIC_MUTE_LED, - ALC282_FIXUP_ASPIRE_V5_PINS, -@@ -5029,17 +5046,7 @@ static const struct hda_fixup alc269_fixups[] = { - }, - [ALC292_FIXUP_TPT440_DOCK] = { - .type = HDA_FIXUP_FUNC, -- .v.func = alc269_fixup_pincfg_no_hp_to_lineout, -- .chained = true, -- .chain_id = ALC292_FIXUP_TPT440_DOCK2 -- }, -- [ALC292_FIXUP_TPT440_DOCK2] = { -- .type = HDA_FIXUP_PINS, -- .v.pins = (const struct hda_pintbl[]) { -- { 0x16, 0x21211010 }, /* dock headphone */ -- { 0x19, 0x21a11010 }, /* dock mic */ -- { } -- }, -+ .v.func = alc_fixup_tpt440_dock, - .chained = true, - .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST - }, diff --git a/debian/patches/debian/signal-fix-abi-change-in-4.2.4.patch b/debian/patches/debian/signal-fix-abi-change-in-4.2.4.patch new file mode 100644 index 000000000..0a4e3fd97 --- /dev/null +++ b/debian/patches/debian/signal-fix-abi-change-in-4.2.4.patch @@ -0,0 +1,47 @@ +From: Ben Hutchings +Date: Fri, 23 Oct 2015 00:55:53 +0100 +Subject: signal: Fix ABI change in 4.2.4 +Forwarded: not-needed + +The field signal_struct::group_rwsem was re-added. This structure is +always allocated by copy_signal() and only used by built-in code, so +it's safe to add fields at the end but not in the middle. Move it to +the end and hide it from genksyms. + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -754,6 +754,17 @@ struct signal_struct { + unsigned audit_tty_log_passwd; + struct tty_audit_buf *tty_audit_buf; + #endif ++ ++ oom_flags_t oom_flags; ++ short oom_score_adj; /* OOM kill score adjustment */ ++ short oom_score_adj_min; /* OOM kill score adjustment min value. ++ * Only settable by CAP_SYS_RESOURCE. */ ++ ++ struct mutex cred_guard_mutex; /* guard against foreign influences on ++ * credential calculations ++ * (notably. ptrace) */ ++ ++#ifndef __GENKSYMS__ + #ifdef CONFIG_CGROUPS + /* + * group_rwsem prevents new tasks from entering the threadgroup and +@@ -766,15 +777,7 @@ struct signal_struct { + */ + struct rw_semaphore group_rwsem; + #endif +- +- oom_flags_t oom_flags; +- short oom_score_adj; /* OOM kill score adjustment */ +- short oom_score_adj_min; /* OOM kill score adjustment min value. +- * Only settable by CAP_SYS_RESOURCE. */ +- +- struct mutex cred_guard_mutex; /* guard against foreign influences on +- * credential calculations +- * (notably. ptrace) */ ++#endif + }; + + /* diff --git a/debian/patches/debian/target-fix-abi-change-in-4.2.4.patch b/debian/patches/debian/target-fix-abi-change-in-4.2.4.patch new file mode 100644 index 000000000..203702012 --- /dev/null +++ b/debian/patches/debian/target-fix-abi-change-in-4.2.4.patch @@ -0,0 +1,17 @@ +From: Ben Hutchings +Date: Fri, 23 Oct 2015 00:51:44 +0100 +Subject: target: Fix ABI change in 4.2.4 +Forwarded: not-needed + +Restore the now-redundant iscsi_np::np_ip field to avoid an ABI change. + +--- a/include/target/iscsi/iscsi_target_core.h ++++ b/include/target/iscsi/iscsi_target_core.h +@@ -776,6 +776,7 @@ struct iscsi_np { + enum iscsi_timer_flags_table np_login_timer_flags; + u32 np_exports; + enum np_flags_table np_flags; ++ unsigned char np_ip[IPV6_ADDRESS_SPACE]; /* now unused */ + u16 np_port; + spinlock_t np_thread_lock; + struct completion np_restart_comp; diff --git a/debian/patches/series b/debian/patches/series index 2ce2e4b57..6181901b1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -46,8 +46,6 @@ debian/qxl-disable-modeset-by-default.patch # Arch bug fixes bugfix/mips/disable-advansys.patch -bugfix/mips/bpf-avoid-unreachable-code-on-little-endian.patch -bugfix/mips/bpf-fix-build-on-pre-r2-little-endian-cpus.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 @@ -89,18 +87,11 @@ features/all/grsecurity/grsecurity-kconfig.patch features/all/grsecurity/grkernsec_perf_harden.patch bugfix/all/gfs2-make-statistics-unsigned-suitable-for-use-with-.patch -bugfix/all/dcache-handle-escaped-paths-in-prepend_path.patch bugfix/all/dcache-reduce-the-scope-of-i_lock-in-d_splice_alias.patch -bugfix/all/vfs-test-for-and-handle-paths-that-are-unreachable-f.patch bugfix/all/rds-verify-the-underlying-transport-exists-before-cr.patch -bugfix/all/e1000e-fix-tight-loop-implementation-of-systime-read.patch -bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch bugfix/mips/mips-pgtable-bits.h-correct-_page_global_shift-build.patch bugfix/all/ovl-conditionally-use-o_largefile-in-ovl_copy_up.patch -bugfix/x86/alsa-hda-disable-power_save_node-for-thinkpads.patch -bugfix/all/netfilter-conntrack-use-nf_ct_tmpl_free-in-ct-synpro.patch -bugfix/all/Initialize-msg-shm-IPC-objects-before-doing-ipc_addi.patch features/all/ath10k-add-qca6164-support.patch debian/block-fix-abi-change-in-4.2.2.patch bugfix/x86/crypto-x86-camellia_aesni_avx-fix-cpu-feature-checks.patch @@ -111,3 +102,6 @@ bugfix/all/nbd-add-locking-for-tasks.patch bugfix/all/KEYS-Fix-race-between-key-destruction-and-finding-a-.patch bugfix/all/KEYS-Fix-crash-when-attempt-to-garbage-collect-an-un.patch bugfix/all/KEYS-Don-t-permit-request_key-to-construct-a-new-key.patch + +debian/target-fix-abi-change-in-4.2.4.patch +debian/signal-fix-abi-change-in-4.2.4.patch