Release linux (4.5.3-2).

-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIVAwUAVy9ITOe/yOyVhhEJAQq2Tw/+IbJSVFZ3v7J7I6ZwZuJLmhnEpPyuE1Md
 OkJieChhe0wpnIFQD3fhHsKClXUzHORahq8O4qGd5BPb9ttYSr7Hm/SvPxQK91Cr
 mP857CZWNopLatVbKAzmQ3unFcpD/zbTGr2iC0IBmu4TJQBMr2tDejd2ndlq2psG
 YoaHSh1wHutenaF9iFQ2/H2V6ScM7DX9DMTOrqhFxaIkc7WaJSjpVoKCrYxRFQUX
 9ogMqxPRqTzsEBxS0PwO1vBTDx2OgwkmvnY0rOj1fpswgEfwvS4XO46EpiFx45Mc
 grzDW6jrKMKWpeH1JC1YLvOltR/nSx4vM3E5sbjSKJQv0F1oIoQuKyfRLOw9Oe3q
 4/7xqS5/aNJ9aaNPi4p7/L8JdGtkJEW26XczgXbKRlY4AfKvt7bPTztoe4KQOSDA
 roqmj7f782nJOerQxKScsE7HM6DpLViSoGhCyf0DNnqwQaUKDyaLhdu0LNA73wCx
 FMFQfZnDN8Yg0UP5BJouSoKprf4hL7CiQcMcfXqLj/QsNB8vCjfs6offKtZ7bckZ
 Si1L2proXY3esQ95Npd2HIKDo4gGajQ8Xkpkf9+6FZdhMLm/w17y9kppgVlcKQ/T
 q/emN0JEuzxMkvtZbmVMRzd0NI4tXzlBwOVcASMzI0ak5CLOPoWO0Cc/jOYg24H3
 yabrIvpcq0s=
 =jVBT
 -----END PGP SIGNATURE-----

Merge tag 'debian/4.5.3-2'

Drop the ABI reference files and patches.

Rebase patches added on the sid branch.
This commit is contained in:
Ben Hutchings 2016-05-08 21:47:32 +01:00
commit be31f1ecd5
13 changed files with 738 additions and 164 deletions

View File

@ -75,10 +75,9 @@ Aside from those general rules:
list all changes that are relevant to our package and that fix bugs
that we would consider 'important' or higher severity
- The script debian/bin/stable-update.sh updates the changelog
version and inserts the list of changes (but it doesn't always
put it in the right place!). It doesn't attempt to filter out
irrelevant or unimportant changes.
- The script debian/bin/stable-update updates the changelog
version and inserts the list of changes. It doesn't attempt to
filter out irrelevant or unimportant changes.
- The script debian/bin/ckt-stable-update.sh does the same for
stable updates by the Canonical Kernel Team.

View File

@ -1,76 +0,0 @@
#!/bin/bash -eu
if [ $# -ne 2 ]; then
echo >&2 "Usage: $0 REPO VERSION"
echo >&2 "REPO is the git repository to generate a changelog from"
echo >&2 "VERSION is the stable version (without leading v)"
exit 2
fi
# Get base version, i.e. the stable release that a branch started from
base_version() {
local ver
ver="${1%-rc*}"
case "$ver" in
*-ckt*)
ver="${ver%-*}"
;;
esac
echo "$ver"
}
add_update() {
local base update
base="$(base_version "$1")"
update="${1#$base-ckt}"
if [ "$update" = "$1" ]; then
update=0
fi
update="$((update + $2))"
if [ $update = 0 ]; then
echo "$base"
else
echo "$base-ckt$update"
fi
}
# Get next stable update version
next_update() {
add_update "$1" 1
}
export GIT_DIR="$1/.git"
new_ver="$2"
cur_pkg_ver="$(dpkg-parsechangelog | sed -n 's/^Version: //p')"
cur_ver="${cur_pkg_ver%-*}"
if [ "$(base_version "$new_ver")" != "$(base_version "$cur_ver")" ]; then
echo >&2 "$new_ver is not on the same stable series as $cur_ver"
exit 2
fi
case "$cur_pkg_ver" in
*~exp*)
new_pkg_ver="$new_ver-1~exp1"
;;
*)
new_pkg_ver="$new_ver-1"
;;
esac
# dch insists on word-wrapping everything, so just add the first line initially
dch -v "$new_pkg_ver" --preserve --multimaint-merge -D UNRELEASED \
--release-heuristic=changelog 'New upstream stable update:'
# Then append the shortlogs with sed
sed -i '1,/^ --/ { /New upstream stable update:/ { a\
'"$(
while [ "v$cur_ver" != "v$new_ver" ]; do
next_ver="$(next_update "$cur_ver")"
echo " http://kernel.ubuntu.com/stable/ChangeLog-$next_ver\\"
git log --reverse --pretty=' - %s\' "v$cur_ver..v$next_ver^"
cur_ver="$next_ver"
done)"'
} }' debian/changelog

126
debian/bin/stable-update vendored Executable file
View File

@ -0,0 +1,126 @@
#!/usr/bin/python3
import sys
sys.path.append(sys.path[0] + "/../lib/python")
import os, re, subprocess
from debian_linux.debian import Changelog, VersionLinux
def base_version(ver):
# Assume base version is at least 3.0, thus only 2 components wanted
match = re.match(r'^(\d+\.\d+)', ver)
assert match
return match.group(1)
def add_update(ver, inc):
base = base_version(ver)
if base == ver:
update = 0
else:
update = int(ver[len(base)+1:])
update += inc
if update == 0:
return base
else:
return '{}.{}'.format(base, update)
def next_update(ver):
return add_update(ver, 1)
def print_stable_log(log, cur_ver, new_ver):
major_ver = re.sub(r'^(\d+)\..*', r'\1', cur_ver)
while cur_ver != new_ver:
next_ver = next_update(cur_ver)
print(' https://www.kernel.org/pub/linux/kernel/v{}.x/ChangeLog-{}'
.format(major_ver, next_ver),
file=log)
log.flush() # serialise our output with git's
subprocess.check_call(['git', 'log', '--reverse',
'--pretty= - %s',
'v{}..v{}^'.format(cur_ver, next_ver)],
stdout=log)
cur_ver = next_ver
def main(repo, new_ver):
os.environ['GIT_DIR'] = repo + '/.git'
changelog = Changelog(version=VersionLinux)
cur_pkg_ver = changelog[0].version
cur_ver = cur_pkg_ver.linux_upstream_full
if base_version(new_ver) != base_version(cur_ver):
print('{} is not on the same stable series as {}'
.format(new_ver, cur_ver),
file=sys.stderr)
sys.exit(2)
new_pkg_ver = new_ver + '-1'
if cur_pkg_ver.linux_revision_experimental:
new_pkg_ver += '~exp1'
# Three possible cases:
# 1. The current version has been released so we need to add a new
# version to the changelog.
# 2. The current version has not been released so we're changing its
# version string.
# (a) There are no stable updates included in the current version,
# so we need to insert an introductory line, the URL(s) and
# git log(s) and a blank line at the top.
# (b) One or more stable updates are already included in the current
# version, so we need to insert the URL(s) and git log(s) after
# them.
changelog_intro = 'New upstream stable update:'
# Case 1
if changelog[0].distribution != 'UNRELEASED':
subprocess.check_call(['dch', '-v', new_pkg_ver, '-D', 'UNRELEASED',
changelog_intro])
with open('debian/changelog', 'r') as old_log:
with open('debian/changelog.new', 'w') as new_log:
line_no = 0
inserted = False
intro_line = ' * {}\n'.format(changelog_intro)
for line in old_log:
line_no += 1
# Case 2
if changelog[0].distribution == 'UNRELEASED' and line_no == 1:
print('{} ({}) UNRELEASED; urgency={}'
.format(changelog[0].source, new_pkg_ver,
changelog[0].urgency),
file=new_log)
continue
if not inserted:
# Case 2(a)
if line_no == 3 and line != intro_line:
new_log.write(intro_line)
print_stable_log(new_log, cur_ver, new_ver)
new_log.write('\n')
inserted = True
# Case 1 or 2(b)
elif line_no > 3 and line == '\n':
print_stable_log(new_log, cur_ver, new_ver)
inserted = True
# Check that we inserted before hitting the end of the
# first version entry
assert not (line.startswith(' -- ') and not inserted)
new_log.write(line)
os.rename('debian/changelog.new', 'debian/changelog')
if __name__ == '__main__':
if len(sys.argv) != 3:
print('''\
Usage: {} REPO VERSION"
REPO is the git repository to generate a changelog from
VERSION is the stable version (without leading v)'''.format(sys.argv[0]),
file=sys.stderr)
sys.exit(2)
main(*sys.argv[1:])

View File

@ -1,78 +1,2 @@
#!/bin/bash -eu
if [ $# -ne 2 ]; then
echo >&2 "Usage: $0 REPO VERSION"
echo >&2 "REPO is the git repository to generate a changelog from"
echo >&2 "VERSION is the stable version (without leading v)"
exit 2
fi
# Get base version, i.e. the Linus stable release that a version is based on
base_version() {
local ver
ver="${1%-rc*}"
case "$ver" in
2.6.*.* | [3-9].*.* | ??.*.*)
ver="${ver%.*}"
;;
esac
echo "$ver"
}
add_update() {
local base update
base="$(base_version "$1")"
update="${1#$base.}"
if [ "$update" = "$1" ]; then
update=0
fi
update="$((update + $2))"
if [ $update = 0 ]; then
echo "$base"
else
echo "$base.$update"
fi
}
# Get next stable update version
next_update() {
add_update "$1" 1
}
export GIT_DIR="$1/.git"
new_ver="$2"
cur_pkg_ver="$(dpkg-parsechangelog | sed -n 's/^Version: //p')"
cur_ver="${cur_pkg_ver%-*}"
if [ "$(base_version "$new_ver")" != "$(base_version "$cur_ver")" ]; then
echo >&2 "$new_ver is not on the same stable series as $cur_ver"
exit 2
fi
case "$cur_pkg_ver" in
*~exp*)
new_pkg_ver="$new_ver-1~exp1"
;;
*)
new_pkg_ver="$new_ver-1"
;;
esac
# dch insists on word-wrapping everything, so just add the URLs initially
dch -v "$new_pkg_ver" --preserve --multimaint-merge -D UNRELEASED \
--release-heuristic=changelog "$(
echo "New upstream stable update: "
while [ "v$cur_ver" != "v$new_ver" ]; do
cur_ver="$(next_update "$cur_ver")"
echo "https://www.kernel.org/pub/linux/kernel/v${cur_ver%%.*}.x/ChangeLog-$cur_ver"
done)"
# Then insert the shortlogs with sed
while [ "v$cur_ver" != "v$new_ver" ]; do
next_ver="$(next_update "$cur_ver")"
sed -i '/ChangeLog-'"${next_ver//./\\.}"'/a\
'"$(git log --reverse --pretty=' - %s\' "v$cur_ver..v$next_ver^")"'
' debian/changelog
cur_ver="$next_ver"
done
#!/bin/sh -e
exec "$(dirname "$0")/stable-update" "$@"

205
debian/changelog vendored
View File

@ -37,6 +37,211 @@ linux (4.6~rc3-1~exp1) experimental; urgency=medium
-- Ben Hutchings <ben@decadent.org.uk> Thu, 14 Apr 2016 23:55:15 +0100
linux (4.5.3-2) unstable; urgency=medium
* [s390x] PCI: Ignore zpci ABI changes; these functions are not used by
modules
* [powerpc*] Fix sstep compile on powerpcspe (Closes: #823526; thanks to
Lennart Sorensen)
-- Ben Hutchings <ben@decadent.org.uk> Sun, 08 May 2016 15:03:45 +0100
linux (4.5.3-1) unstable; urgency=medium
* New upstream stable update:
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.3
- mmc: block: Use the mmc host device index as the mmcblk device index
- block: partition: initialize percpuref before sending out KOBJ_ADD
- block: loop: fix filesystem corruption in case of aio/dio
- [arm64] efi: Don't apply MEMBLOCK_NOMAP to UEFI memory map mapping
- [x86] mce: Avoid using object after free in genpool
- [x86] kvm: do not leak guest xcr0 into host interrupt handlers
- [arm*] KVM: Handle forward time correction gracefully
- [armhf] mvebu: Correct unit address for linksys
- [armhf] OMAP2: Fix up interconnect barrier initialization for DRA7
- [armhf] OMAP2+: hwmod: Fix updating of sysconfig register
- assoc_array: don't call compare_object() on a node
- [x86] usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host
- xhci: resume USB 3 roothub first
- usb: host: xhci: add a new quirk XHCI_NO_64BIT_SUPPORT
- usb: xhci: fix wild pointers in xhci_mem_cleanup
- xhci: fix 10 second timeout on removal of PCI hotpluggable xhci
controllers
- usb: host: xhci-plat: Make enum xhci_plat_type start at a non zero value
- usb: hcd: out of bounds access in for_each_companion
- usb: gadget: f_fs: Fix use-after-free
- dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros
- dm cache metadata: fix cmd_read_lock() acquiring write lock
- lib: lz4: fixed zram with lz4 on big endian machines
- debugfs: Make automount point inodes permanently empty
- dmaengine: dw: fix master selection
- [armhf] dmaengine: omap-dma: Fix polled channel completion detection
and handling
- dmaengine: edma: Remove dynamic TPTC power management feature
- mtd: nand: pxa3xx_nand: fix dmaengine initialization
- sched/cgroup: Fix/cleanup cgroup teardown/init
- [x86] EDAC, sb_edac.c: Repair damage introduced when "fixing"
channel address
- [x86] EDAC, sb_edac.c: Take account of channel hashing when needed
- ALSA: hda - Don't trust the reported actual power state
- [x86] ALSA: hda/realtek - Add ALC3234 headset mode for Optiplex 9020m
- ALSA: hda - Keep powering up ADCs on Cirrus codecs
- [x86] ALSA: hda - add PCI ID for Intel Broxton-T
- ALSA: pcxhr: Fix missing mutex unlock
- [x86] ALSA: hda - Add dock support for ThinkPad X260
- [x86] ALSA: hda - Update BCLK also at hotplug for i915 HSW/BDW
- asm-generic/futex: Re-enable preemption in futex_atomic_cmpxchg_inatomic()
- futex: Handle unlock_pi race gracefully
- futex: Acknowledge a new waiter in counter before plist
- drm/nouveau/core: use vzalloc for allocating ramht
- drm/qxl: fix cursor position with non-zero hotspot
- [x86] drm/i915: Fix race condition in intel_dp_destroy_mst_connector()
- Revert "drm/radeon: disable runtime pm on PX laptops without dGPU
power control"
- [armhf] Revert "PCI: imx6: Add support for active-low reset GPIO"
- usbvision: revert commit 588afcc1
- [x86] Revert "drm/amdgpu: disable runtime pm on PX laptops without dGPU
power control"
- cpufreq: intel_pstate: Fix processing for turbo activation ratio
- [s390x] pci: add extra padding to function measurement block
- iwlwifi: pcie: lower the debug level for RSA semaphore access
- iwlwifi: mvm: fix memory leak in paging
- crypto: rsa-pkcs1pad - fix dst len
- [x86] crypto: ccp - Prevent information leakage on export
- crypto: sha1-mb - use corrcet pointer while completing jobs
- [powerpc*] scan_features() updates incorrect bits for REAL_LE
- [powerpc*] Update cpu_user_features2 in scan_features()
- [powerpc*] Update TM user feature bits in scan_features()
- nl80211: check netlink protocol in socket release notification
- netlink: don't send NETLINK_URELEASE for unbound sockets
- pinctrl: single: Fix pcs_parse_bits_in_pinctrl_entry to use __ffs than ffs
- [x86] iommu/amd: Fix checking of pci dma aliases
- iommu/dma: Restore scatterlist offsets correctly
- [x86] drm/amdgpu: when suspending, if uvd/vce was running. need to cancel
delay work.
- [x86] drm/amdgpu: use defines for CRTCs and AMFT blocks
- [x86] drm/amdgpu: bump the afmt limit for CZ, ST, Polaris
- [x86] amdgpu/uvd: add uvd fw version for amdgpu
- [x86] drm/amdgpu: fix regression on CIK (v2)
- drm/radeon: add a quirk for a XFX R9 270X
- drm/radeon: fix initial connector audio value
- drm/radeon: forbid mapping of userptr bo through radeon device file
- drm/radeon: fix vertical bars appear on monitor (v2)
- [mips*el/loongson-3] drm: Loongson-3 doesn't fully support wc memory
- drm/nouveau/gr/gf100: select a stream master to fixup tfb offset queries
- drm/dp/mst: Validate port in drm_dp_payload_send_msg()
- drm/dp/mst: Restore primary hub guid on resume
- drm/dp/mst: Get validated port ref in drm_dp_update_payload_part1()
- [x86] drm/i915: Pass the correct encoder to intel_ddi_clk_select()
with MST
- [x86] drm/i915: Cleanup phys status page too
- [x86] drm/i915: Use the active wm config for merging on ILK-BDW
- [x86] drm/i915: Start WM computation from scratch on ILK-BDW
- [x86] drm/i915: skl_update_scaler() wants a rotation bitmask instead of
bit number
- [x86] drm/amdkfd: uninitialized variable in
dbgdev_wave_control_set_registers()
- [x86] drm/i915/skl: Fix DMC load on Skylake J0 and K0
- [x86] drm/i915/skl: Fix spurious gpu hang with gt3/gt4 revs
- [x86] drm/i915: Fixup the free space logic in ring_prepare
- [x86] drm/i915: Force ringbuffers to not be at offset 0
- [x86] drm/i915: Use fw_domains_put_with_fifo() on HSW
- drm/ttm: fix kref count mess in ttm_bo_move_to_lru_tail
- [x86] perf intel-pt: Fix segfault tracing transactions
- [armhf] i2c: exynos5: Fix possible ABBA deadlock by keeping I2C
clock prepared
- ACPICA / Interpreter: Fix a regression triggered because of wrong Linux
ECDT support
- [x86] mmc: sdhci-acpi: Reduce Baytrail eMMC/SD/SDIO hangs
- [x86] toshiba_acpi: Fix regression caused by hotkey enabling value
- [x86] EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder
callback
- [x86] ASoC: ssm4567: Reset device before regcache_sync()
- [x86] ASoC: rt5640: Correct the digital interface data select
- vb2-memops: Fix over allocation of frame vectors
- media: vb2: Fix regression on poll() for RW mode
- videobuf2-core: Check user space planes array in dqbuf
- videobuf2-v4l2: Verify planes array in buffer dequeueing (CVE-2016-4568)
- v4l2-dv-timings.h: fix polarity for 4k formats
- IB/core: Fix oops in ib_cache_gid_set_default_gid
- mwifiex: fix IBSS data path issue.
- IB/mlx5: Expose correct max_sge_rd limit
- IB/security: Restrict use of the write() interface (CVE-2016-4565)
- efi: Fix out-of-bounds read in variable_matches()
- efi: Expose non-blocking set_variable() wrapper to efivars
- [x86] apic: Handle zero vector gracefully in clear_vector_irq()
- workqueue: fix ghost PENDING flag while doing MQ IO
- slub: clean up code for kmem cgroup support to kmem_cache_free_bulk
- cgroup, cpuset: replace cpuset_post_attach_flush() with
cgroup_subsys->post_attach callback
- memcg: relocate charge moving from ->attach to ->post_attach
- mm: exclude HugeTLB pages from THP page_mapped() logic
- mm/huge_memory: replace VM_NO_THP VM_BUG_ON with actual VMA check
- numa: fix /proc/<pid>/numa_maps for THP
- mm: vmscan: reclaim highmem zone if buffer_heads is over limit
- mm/hwpoison: fix wrong num_poisoned_pages accounting
- locking/mcs: Fix mcs_spin_lock() ordering
- [armhf] spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs
- [armhf] irqchip/sunxi-nmi: Fix error check of of_io_request_and_map()
- [armhf] regulator: s5m8767: fix get_register() error handling
- scsi_dh: force modular build if SCSI is a module
- lib/mpi: Endianness fix
- [x86] misc: mic/scif: fix wrap around tests
- PM / OPP: Initialize u_volt_min/max to a valid value
- PM / Domains: Fix removal of a subdomain
- drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors
- perf evlist: Reference count the cpu and thread maps at set_maps()
- perf tools: Fix perf script python database export crash
- [x86] mm/kmmio: Fix mmiotrace for hugepages
- ext4: fix NULL pointer dereference in ext4_mark_inode_dirty()
- f2fs crypto: fix corrupted symlink in encrypted case
- f2fs: slightly reorganize read_raw_super_block
- f2fs: cover large section in sanity check of super
- ext4/fscrypto: avoid RCU lookup in d_revalidate
- f2fs: do f2fs_balance_fs when block is allocated
- f2fs: don't need to call set_page_dirty for io error
- f2fs crypto: handle unexpected lack of encryption keys
- f2fs crypto: make sure the encryption info is initialized on opendir(2)
- bus: uniphier-system-bus: fix condition of overlap check
- mtd: spi-nor: remove micron_quad_enable()
- mtd: brcmnand: Fix v7.1 register offsets
- mtd: nand: Drop mtd.owner requirement in nand_scan
- perf hists browser: Only offer symbol scripting when a symbol is under
the cursor
- perf hists browser: Fix dump to show correct callchain style
- perf tools: handle spaces in file names obtained from /proc/pid/maps
- NTB: Remove _addr functions from ntb_hw_amd
- perf/core: Don't leak event in the syscall error path
- perf/core: Fix time tracking bug with multiplexing
- perf hists: Fix determination of a callchain node's childlessness
- [armhf] OMAP3: Add cpuidle parameters table for omap3430
- [armhf] dts: armada-375: use armada-370-sata for SATA
- [armhf] dts: am33xx: Fix GPMC dma properties
- btrfs: fix memory leak of fs_info in block group cache
- btrfs: cleaner_kthread() doesn't need explicit freeze
- [armhf] thermal: rockchip: fix a impossible condition caused by the
warning
- sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects
a race
- megaraid_sas: add missing curly braces in ioctl handler
- tpm: fix checks for policy digest existence in tpm2_seal_trusted()
- tpm: fix: set continueSession attribute for the unseal operation
[ Uwe Kleine-König ]
* [armhf] enable I2C_MUX_PCA954x, MMC_SDHCI_PXAV3, AHCI_MVEBU
[ Ben Hutchings ]
* bug control: Update list of related firmware packages
* Revert "sp5100_tco: fix the device check for SB800 and later chipsets"
(Closes: #823146; probably fixes #822651)
* bpf: fix double-fdput in replace_map_fd_with_map_ptr() (CVE-2016-4557)
(Closes: #823603)
* bpf: fix refcnt overflow (CVE-2016-4558)
* bpf: fix check_map_func_compatibility logic
* stable-update: Rewrite stable-update.sh in Python
-- Ben Hutchings <ben@decadent.org.uk> Sat, 07 May 2016 21:59:15 +0100
linux (4.5.2-1) unstable; urgency=medium
* New upstream stable update:

View File

@ -144,6 +144,7 @@ CONFIG_OMAP_PM_NOOP=y
##
CONFIG_SATA_AHCI_PLATFORM=m
CONFIG_AHCI_IMX=m
CONFIG_AHCI_MVEBU=m
CONFIG_AHCI_SUNXI=m
CONFIG_AHCI_TEGRA=m
CONFIG_SATA_HIGHBANK=m
@ -346,6 +347,11 @@ CONFIG_SENSORS_GPIO_FAN=m
##
CONFIG_HWSPINLOCK_OMAP=m
##
## file: drivers/i2c/Kconfig
##
CONFIG_I2C_MUX=m
##
## file: drivers/i2c/busses/Kconfig
##
@ -365,6 +371,7 @@ CONFIG_I2C_VERSATILE=m
## file: drivers/i2c/muxes/Kconfig
##
CONFIG_I2C_ARB_GPIO_CHALLENGE=m
CONFIG_I2C_MUX_PCA954x=m
##
## file: drivers/iio/Kconfig
@ -533,6 +540,7 @@ CONFIG_MMC_SDHCI=m
CONFIG_MMC_SDHCI_PLTFM=m
CONFIG_MMC_SDHCI_ESDHC_IMX=m
CONFIG_MMC_SDHCI_TEGRA=m
CONFIG_MMC_SDHCI_PXAV3=m
CONFIG_MMC_SDHCI_BCM2835=m
CONFIG_MMC_OMAP=m
CONFIG_MMC_OMAP_HS=m

View File

@ -21,15 +21,19 @@ class Changelog(list):
(?P<distribution>
[-+0-9a-zA-Z.]+
)
\;
\;\s+urgency=
(?P<urgency>
\w+
)
"""
_re = re.compile(_rules, re.X)
class Entry(object):
__slot__ = 'distribution', 'source', 'version'
__slot__ = 'distribution', 'source', 'version', 'urgency'
def __init__(self, distribution, source, version):
self.distribution, self.source, self.version = distribution, source, version
def __init__(self, distribution, source, version, urgency):
self.distribution, self.source, self.version, self.urgency = \
distribution, source, version, urgency
def __init__(self, dir='', version=None):
if version is None:
@ -48,7 +52,9 @@ class Changelog(list):
if not len(self):
raise
v = Version(match.group('version'))
self.append(self.Entry(match.group('distribution'), match.group('source'), v))
self.append(self.Entry(match.group('distribution'),
match.group('source'), v,
match.group('urgency')))
class Version(object):

View File

@ -0,0 +1,110 @@
From: Alexei Starovoitov <ast@fb.com>
Date: Wed, 27 Apr 2016 18:56:21 -0700
Subject: [3/3] bpf: fix check_map_func_compatibility logic
Origin: https://git.kernel.org/linus/6aff67c85c9e5a4bc99e5211c1bac547936626ca
The commit 35578d798400 ("bpf: Implement function bpf_perf_event_read() that get the selected hardware PMU conuter")
introduced clever way to check bpf_helper<->map_type compatibility.
Later on commit a43eec304259 ("bpf: introduce bpf_perf_event_output() helper") adjusted
the logic and inadvertently broke it.
Get rid of the clever bool compare and go back to two-way check
from map and from helper perspective.
Fixes: a43eec304259 ("bpf: introduce bpf_perf_event_output() helper")
Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
kernel/bpf/verifier.c | 65 +++++++++++++++++++++++++++++++--------------------
1 file changed, 40 insertions(+), 25 deletions(-)
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 89bcaa0966da..c5c17a62f509 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -239,16 +239,6 @@ static const char * const reg_type_str[] = {
[CONST_IMM] = "imm",
};
-static const struct {
- int map_type;
- int func_id;
-} func_limit[] = {
- {BPF_MAP_TYPE_PROG_ARRAY, BPF_FUNC_tail_call},
- {BPF_MAP_TYPE_PERF_EVENT_ARRAY, BPF_FUNC_perf_event_read},
- {BPF_MAP_TYPE_PERF_EVENT_ARRAY, BPF_FUNC_perf_event_output},
- {BPF_MAP_TYPE_STACK_TRACE, BPF_FUNC_get_stackid},
-};
-
static void print_verifier_state(struct verifier_env *env)
{
enum bpf_reg_type t;
@@ -921,27 +911,52 @@ static int check_func_arg(struct verifier_env *env, u32 regno,
static int check_map_func_compatibility(struct bpf_map *map, int func_id)
{
- bool bool_map, bool_func;
- int i;
-
if (!map)
return 0;
- for (i = 0; i < ARRAY_SIZE(func_limit); i++) {
- bool_map = (map->map_type == func_limit[i].map_type);
- bool_func = (func_id == func_limit[i].func_id);
- /* only when map & func pair match it can continue.
- * don't allow any other map type to be passed into
- * the special func;
- */
- if (bool_func && bool_map != bool_func) {
- verbose("cannot pass map_type %d into func %d\n",
- map->map_type, func_id);
- return -EINVAL;
- }
+ /* We need a two way check, first is from map perspective ... */
+ switch (map->map_type) {
+ case BPF_MAP_TYPE_PROG_ARRAY:
+ if (func_id != BPF_FUNC_tail_call)
+ goto error;
+ break;
+ case BPF_MAP_TYPE_PERF_EVENT_ARRAY:
+ if (func_id != BPF_FUNC_perf_event_read &&
+ func_id != BPF_FUNC_perf_event_output)
+ goto error;
+ break;
+ case BPF_MAP_TYPE_STACK_TRACE:
+ if (func_id != BPF_FUNC_get_stackid)
+ goto error;
+ break;
+ default:
+ break;
+ }
+
+ /* ... and second from the function itself. */
+ switch (func_id) {
+ case BPF_FUNC_tail_call:
+ if (map->map_type != BPF_MAP_TYPE_PROG_ARRAY)
+ goto error;
+ break;
+ case BPF_FUNC_perf_event_read:
+ case BPF_FUNC_perf_event_output:
+ if (map->map_type != BPF_MAP_TYPE_PERF_EVENT_ARRAY)
+ goto error;
+ break;
+ case BPF_FUNC_get_stackid:
+ if (map->map_type != BPF_MAP_TYPE_STACK_TRACE)
+ goto error;
+ break;
+ default:
+ break;
}
return 0;
+error:
+ verbose("cannot pass map_type %d into func %d\n",
+ map->map_type, func_id);
+ return -EINVAL;
}
static int check_call(struct verifier_env *env, int func_id)

View File

@ -0,0 +1,147 @@
From: Alexei Starovoitov <ast@fb.com>
Date: Wed, 27 Apr 2016 18:56:20 -0700
Subject: [2/3] bpf: fix refcnt overflow
Origin: https://git.kernel.org/linus/92117d8443bc5afacc8d5ba82e541946310f106e
On a system with >32Gbyte of phyiscal memory and infinite RLIMIT_MEMLOCK,
the malicious application may overflow 32-bit bpf program refcnt.
It's also possible to overflow map refcnt on 1Tb system.
Impose 32k hard limit which means that the same bpf program or
map cannot be shared by more than 32k processes.
Fixes: 1be7f75d1668 ("bpf: enable non-root eBPF programs")
Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
include/linux/bpf.h | 3 ++-
kernel/bpf/inode.c | 7 ++++---
kernel/bpf/syscall.c | 24 ++++++++++++++++++++----
kernel/bpf/verifier.c | 11 +++++++----
4 files changed, 33 insertions(+), 12 deletions(-)
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -171,12 +171,13 @@ void bpf_register_prog_type(struct bpf_p
void bpf_register_map_type(struct bpf_map_type_list *tl);
struct bpf_prog *bpf_prog_get(u32 ufd);
+struct bpf_prog *bpf_prog_inc(struct bpf_prog *prog);
void bpf_prog_put(struct bpf_prog *prog);
void bpf_prog_put_rcu(struct bpf_prog *prog);
struct bpf_map *bpf_map_get_with_uref(u32 ufd);
struct bpf_map *__bpf_map_get(struct fd f);
-void bpf_map_inc(struct bpf_map *map, bool uref);
+struct bpf_map *bpf_map_inc(struct bpf_map *map, bool uref);
void bpf_map_put_with_uref(struct bpf_map *map);
void bpf_map_put(struct bpf_map *map);
int bpf_map_precharge_memlock(u32 pages);
--- a/kernel/bpf/inode.c
+++ b/kernel/bpf/inode.c
@@ -31,10 +31,10 @@ static void *bpf_any_get(void *raw, enum
{
switch (type) {
case BPF_TYPE_PROG:
- atomic_inc(&((struct bpf_prog *)raw)->aux->refcnt);
+ raw = bpf_prog_inc(raw);
break;
case BPF_TYPE_MAP:
- bpf_map_inc(raw, true);
+ raw = bpf_map_inc(raw, true);
break;
default:
WARN_ON_ONCE(1);
@@ -297,7 +297,8 @@ static void *bpf_obj_do_get(const struct
goto out;
raw = bpf_any_get(inode->i_private, *type);
- touch_atime(&path);
+ if (!IS_ERR(raw))
+ touch_atime(&path);
path_put(&path);
return raw;
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -218,11 +218,18 @@ struct bpf_map *__bpf_map_get(struct fd
return f.file->private_data;
}
-void bpf_map_inc(struct bpf_map *map, bool uref)
+/* prog's and map's refcnt limit */
+#define BPF_MAX_REFCNT 32768
+
+struct bpf_map *bpf_map_inc(struct bpf_map *map, bool uref)
{
- atomic_inc(&map->refcnt);
+ if (atomic_inc_return(&map->refcnt) > BPF_MAX_REFCNT) {
+ atomic_dec(&map->refcnt);
+ return ERR_PTR(-EBUSY);
+ }
if (uref)
atomic_inc(&map->usercnt);
+ return map;
}
struct bpf_map *bpf_map_get_with_uref(u32 ufd)
@@ -234,7 +241,7 @@ struct bpf_map *bpf_map_get_with_uref(u3
if (IS_ERR(map))
return map;
- bpf_map_inc(map, true);
+ map = bpf_map_inc(map, true);
fdput(f);
return map;
@@ -658,6 +665,15 @@ static struct bpf_prog *__bpf_prog_get(s
return f.file->private_data;
}
+struct bpf_prog *bpf_prog_inc(struct bpf_prog *prog)
+{
+ if (atomic_inc_return(&prog->aux->refcnt) > BPF_MAX_REFCNT) {
+ atomic_dec(&prog->aux->refcnt);
+ return ERR_PTR(-EBUSY);
+ }
+ return prog;
+}
+
/* called by sockets/tracing/seccomp before attaching program to an event
* pairs with bpf_prog_put()
*/
@@ -670,7 +686,7 @@ struct bpf_prog *bpf_prog_get(u32 ufd)
if (IS_ERR(prog))
return prog;
- atomic_inc(&prog->aux->refcnt);
+ prog = bpf_prog_inc(prog);
fdput(f);
return prog;
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -2049,15 +2049,18 @@ static int replace_map_fd_with_map_ptr(s
return -E2BIG;
}
- /* remember this map */
- env->used_maps[env->used_map_cnt++] = map;
-
/* hold the map. If the program is rejected by verifier,
* the map will be released by release_maps() or it
* will be used by the valid program until it's unloaded
* and all maps are released in free_bpf_prog_info()
*/
- bpf_map_inc(map, false);
+ map = bpf_map_inc(map, false);
+ if (IS_ERR(map)) {
+ fdput(f);
+ return PTR_ERR(map);
+ }
+ env->used_maps[env->used_map_cnt++] = map;
+
fdput(f);
next_insn:
insn++;

View File

@ -0,0 +1,48 @@
From: "Lennart Sorensen" <lsorense@csclub.uwaterloo.ca>
Subject: powerpc: Fix sstep compile on powerpcspe
Date: Thu, 5 May 2016 16:44:44 -0400
Forwarded: http://news.gmane.org/gmane.linux.ports.ppc.embedded/95502
Bug-Debian: https://bugs.debian.org/823526
Commit be96f63375a14ee8e690856ac77e579c75bd0bae introduced ldarx and stdcx
into the instructions in sstep.c, which are not accepted by the assembler
on powerpcspe, but does seem to be accepted by the normal powerpc assembler
even in 32 bit mode.
Wrap these two instructions in a __powerpc64__ check like it is everywhere
else in the file.
Fixes: be96f63375a1 ("powerpc: Split out instruction analysis part of emulate_step()")
Signed-off-by: Len Sorensen <lsorense@csclub.uwaterloo.ca>
---
arch/powerpc/lib/sstep.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
index dc885b3..6d34310 100644
--- a/arch/powerpc/lib/sstep.c
+++ b/arch/powerpc/lib/sstep.c
@@ -1818,9 +1818,11 @@ int __kprobes emulate_step(struct pt_regs *regs, unsigned int instr)
case 4:
__get_user_asmx(val, op.ea, err, "lwarx");
break;
+#ifdef __powerpc64__
case 8:
__get_user_asmx(val, op.ea, err, "ldarx");
break;
+#endif
default:
return 0;
}
@@ -1841,9 +1843,11 @@ int __kprobes emulate_step(struct pt_regs *regs, unsigned int instr)
case 4:
__put_user_asmx(op.val, op.ea, err, "stwcx.", cr);
break;
+#ifdef __powerpc64__
case 8:
__put_user_asmx(op.val, op.ea, err, "stdcx.", cr);
break;
+#endif
default:
return 0;
}

View File

@ -0,0 +1,73 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Mon, 2 May 2016 21:15:00 +0200
Subject: Revert "sp5100_tco: fix the device check for SB800 and later chipsets"
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=114201
Bug-Debian: https://bugs.debian.org/823146
This reverts commit bdecfcdb5461834aab24002bb18d3cbdd907b7fb, which
caused log flooding and hung CPUs on some systems.
---
drivers/watchdog/sp5100_tco.c | 28 ++++++++++++----------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
index 6467b91f2245..0ccadb44b609 100644
--- a/drivers/watchdog/sp5100_tco.c
+++ b/drivers/watchdog/sp5100_tco.c
@@ -335,24 +335,21 @@ static unsigned char sp5100_tco_setupdevice(void)
if (!sp5100_tco_pci)
return 0;
- pr_info("PCI Vendor ID: 0x%x, Device ID: 0x%x, Revision ID: 0x%x\n",
- sp5100_tco_pci->vendor, sp5100_tco_pci->device,
- sp5100_tco_pci->revision);
+ pr_info("PCI Revision ID: 0x%x\n", sp5100_tco_pci->revision);
/*
* Determine type of southbridge chipset.
*/
- if (sp5100_tco_pci->device == PCI_DEVICE_ID_ATI_SBX00_SMBUS &&
- sp5100_tco_pci->revision < 0x40) {
- dev_name = SP5100_DEVNAME;
- index_reg = SP5100_IO_PM_INDEX_REG;
- data_reg = SP5100_IO_PM_DATA_REG;
- base_addr = SP5100_PM_WATCHDOG_BASE;
- } else {
+ if (sp5100_tco_pci->revision >= 0x40) {
dev_name = SB800_DEVNAME;
index_reg = SB800_IO_PM_INDEX_REG;
data_reg = SB800_IO_PM_DATA_REG;
base_addr = SB800_PM_WATCHDOG_BASE;
+ } else {
+ dev_name = SP5100_DEVNAME;
+ index_reg = SP5100_IO_PM_INDEX_REG;
+ data_reg = SP5100_IO_PM_DATA_REG;
+ base_addr = SP5100_PM_WATCHDOG_BASE;
}
/* Request the IO ports used by this driver */
@@ -388,12 +385,7 @@ static unsigned char sp5100_tco_setupdevice(void)
* Secondly, Find the watchdog timer MMIO address
* from SBResource_MMIO register.
*/
- if (sp5100_tco_pci->device == PCI_DEVICE_ID_ATI_SBX00_SMBUS &&
- sp5100_tco_pci->revision < 0x40) {
- /* Read SBResource_MMIO from PCI config(PCI_Reg: 9Ch) */
- pci_read_config_dword(sp5100_tco_pci,
- SP5100_SB_RESOURCE_MMIO_BASE, &val);
- } else {
+ if (sp5100_tco_pci->revision >= 0x40) {
/* Read SBResource_MMIO from AcpiMmioEn(PM_Reg: 24h) */
outb(SB800_PM_ACPI_MMIO_EN+3, SB800_IO_PM_INDEX_REG);
val = inb(SB800_IO_PM_DATA_REG);
@@ -403,6 +395,10 @@ static unsigned char sp5100_tco_setupdevice(void)
val = val << 8 | inb(SB800_IO_PM_DATA_REG);
outb(SB800_PM_ACPI_MMIO_EN+0, SB800_IO_PM_INDEX_REG);
val = val << 8 | inb(SB800_IO_PM_DATA_REG);
+ } else {
+ /* Read SBResource_MMIO from PCI config(PCI_Reg: 9Ch) */
+ pci_read_config_dword(sp5100_tco_pci,
+ SP5100_SB_RESOURCE_MMIO_BASE, &val);
}
/* The SBResource_MMIO is enabled and mapped memory space? */

View File

@ -47,6 +47,8 @@ bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch
bugfix/mips/MIPS-Allow-emulation-for-unaligned-LSDXC1-instructions.patch
bugfix/sparc/sparc-implement-and-wire-up-modalias_show-for-vio.patch
bugfix/sparc/sparc-implement-and-wire-up-vio_hotplug-for-vio.patch
bugfix/x86/revert-sp5100_tco-fix-the-device-check-for-SB800-and.patch
bugfix/powerpc/powerpc-fix-sstep-compile-on-powerpcspe.patch
# Arch features
features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch
@ -97,6 +99,8 @@ features/all/securelevel/enable-cold-boot-attack-mitigation.patch
# Security fixes
bugfix/all/ptrace-being-capable-wrt-a-process-requires-mapped-uids-gids.patch
debian/i386-686-pae-pci-set-pci-nobios-by-default.patch
bugfix/all/bpf-fix-refcnt-overflow.patch
bugfix/all/bpf-fix-check_map_func_compatibility-logic.patch
# Tools bug fixes
bugfix/all/usbip-document-tcp-wrappers.patch

View File

@ -1,2 +1,2 @@
Submit-As: src:linux
Package-Status: firmware-atheros firmware-bnx2 firmware-bnx2x firmware-brcm80211 firmware-intelwimax firmware-ipw2x00 firmware-ivtv firmware-iwlwifi firmware-libertas firmware-linux firmware-linux-nonfree firmware-myricom firmware-netxen firmware-qlogic firmware-ralink firmware-realtek xen-hypervisor
Package-Status: firmware-amd-graphics firmware-atheros firmware-bnx2 firmware-bnx2x firmware-brcm80211 firmware-cavium firmware-intelwimax firmware-intel-sound firmware-ipw2x00 firmware-ivtv firmware-iwlwifi firmware-libertas firmware-linux-nonfree firmware-misc-nonfree firmware-myricom firmware-netxen firmware-qlogic firmware-realtek firmware-samsung firmware-siano firmware-ti-connectivity xen-hypervisor