This is the 4.9.187 stable release
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl1GilkACgkQONu9yGCS
aT6ibw//QcoRk+6jjWIzW2R83tvcSpDREIYKF5xDPULqmaUKv7qcbGqdCT4OI0Vf
CySao6jvmN+1V+5OlQHHw1qmithHF/Y4yEVi+eL0CcMgB6qA2tQxeA0ffFu0Fzxe
oKrAIDANAJ2FKymqbIzTJU8AChNuy+Rc+C60L9O0ZhBHykLYvO7/VepTxdO2aMGs
a9tdZyXnOAr/ZgKx+uN1F8Rx2ZorNfFmP2rDxEZ/B8pVrXsOjMAcxWRsZBv+w9mc
zWaMPEL1vIR/kG35L18l2EFwZ++uIGvfGR2HxhNRUlTqN4m/3trATIc0eRn5PyAC
qBlVdcwUeJKavBqK3cgHvK9CzWQdSMxNefk9A0H66ZGpfSuNCiFjw54AXEiRzx3t
OvzUvDjfa36jsKW7yiYXdLbEa52gT14UDzmSIzlAYQLBplEadHikJ0FxCFzAWpFt
C13gG1e4G0ZKEHH8wZMuRdanHbN87c/0Sm4rgTLMwCO6I1PeILcUwIq9El9M4RVL
MmHSXLKduaHbPJWx+Qopl6NxjqTe/VR8paT6q1QnU00/4kP15aIVE08vZSiGSNP+
Gp6xbv12skAx1m1zP7K82oGdwnCVCJUqlC9wafcjsaxcoCVBWvIgPkyMWAzUeFzc
Ub2yIS9iulUeYOxPXBZKWCqgwpl7kovGztf4gwX2Kuy50mXSZQg=
=ozfF
-----END PGP SIGNATURE-----
Merge 4.9.187 into android-4.9
Changes in 4.9.187
MIPS: ath79: fix ar933x uart parity mode
MIPS: fix build on non-linux hosts
arm64/efi: Mark __efistub_stext_offset as an absolute symbol explicitly
dmaengine: imx-sdma: fix use-after-free on probe error path
ath10k: Do not send probe response template for mesh
ath9k: Check for errors when reading SREV register
ath6kl: add some bounds checking
ath: DFS JP domain W56 fixed pulse type 3 RADAR detection
batman-adv: fix for leaked TVLV handler.
media: dvb: usb: fix use after free in dvb_usb_device_exit
crypto: talitos - fix skcipher failure due to wrong output IV
media: marvell-ccic: fix DMA s/g desc number calculation
media: vpss: fix a potential NULL pointer dereference
media: media_device_enum_links32: clean a reserved field
net: stmmac: dwmac1000: Clear unused address entries
net: stmmac: dwmac4/5: Clear unused address entries
signal/pid_namespace: Fix reboot_pid_ns to use send_sig not force_sig
af_key: fix leaks in key_pol_get_resp and dump_sp.
xfrm: Fix xfrm sel prefix length validation
media: mc-device.c: don't memset __user pointer contents
media: staging: media: davinci_vpfe: - Fix for memory leak if decoder initialization fails.
net: phy: Check against net_device being NULL
crypto: talitos - properly handle split ICV.
crypto: talitos - Align SEC1 accesses to 32 bits boundaries.
tua6100: Avoid build warnings.
locking/lockdep: Fix merging of hlocks with non-zero references
media: wl128x: Fix some error handling in fm_v4l2_init_video_device()
cpupower : frequency-set -r option misses the last cpu in related cpu list
net: fec: Do not use netdev messages too early
net: axienet: Fix race condition causing TX hang
s390/qdio: handle PENDING state for QEBSM devices
perf cs-etm: Properly set the value of 'old' and 'head' in snapshot mode
perf test 6: Fix missing kvm module load for s390
gpio: omap: fix lack of irqstatus_raw0 for OMAP4
gpio: omap: ensure irq is enabled before wakeup
regmap: fix bulk writes on paged registers
bpf: silence warning messages in core
rcu: Force inlining of rcu_read_lock()
blkcg, writeback: dead memcgs shouldn't contribute to writeback ownership arbitration
xfrm: fix sa selector validation
perf evsel: Make perf_evsel__name() accept a NULL argument
vhost_net: disable zerocopy by default
ipoib: correcly show a VF hardware address
EDAC/sysfs: Fix memory leak when creating a csrow object
ipsec: select crypto ciphers for xfrm_algo
media: i2c: fix warning same module names
ntp: Limit TAI-UTC offset
timer_list: Guard procfs specific code
acpi/arm64: ignore 5.1 FADTs that are reported as 5.0
media: coda: fix mpeg2 sequence number handling
media: coda: increment sequence offset for the last returned frame
mt7601u: do not schedule rx_tasklet when the device has been disconnected
x86/build: Add 'set -e' to mkcapflags.sh to delete broken capflags.c
mt7601u: fix possible memory leak when the device is disconnected
ath10k: fix PCIE device wake up failed
perf tools: Increase MAX_NR_CPUS and MAX_CACHES
libata: don't request sense data on !ZAC ATA devices
clocksource/drivers/exynos_mct: Increase priority over ARM arch timer
rslib: Fix decoding of shortened codes
rslib: Fix handling of of caller provided syndrome
ixgbe: Check DDM existence in transceiver before access
crypto: asymmetric_keys - select CRYPTO_HASH where needed
EDAC: Fix global-out-of-bounds write when setting edac_mc_poll_msec
bcache: check c->gc_thread by IS_ERR_OR_NULL in cache_set_flush()
iwlwifi: mvm: Drop large non sta frames
net: usb: asix: init MAC address buffers
gpiolib: Fix references to gpiod_[gs]et_*value_cansleep() variants
Bluetooth: hci_bcsp: Fix memory leak in rx_skb
Bluetooth: 6lowpan: search for destination address in all peers
Bluetooth: Check state in l2cap_disconnect_rsp
Bluetooth: validate BLE connection interval updates
gtp: fix Illegal context switch in RCU read-side critical section.
gtp: fix use-after-free in gtp_newlink()
xen: let alloc_xenballooned_pages() fail if not enough memory free
scsi: NCR5380: Reduce goto statements in NCR5380_select()
scsi: NCR5380: Always re-enable reselection interrupt
scsi: mac_scsi: Increase PIO/PDMA transfer length threshold
crypto: ghash - fix unaligned memory access in ghash_setkey()
crypto: arm64/sha1-ce - correct digest for empty data in finup
crypto: arm64/sha2-ce - correct digest for empty data in finup
crypto: chacha20poly1305 - fix atomic sleep when using async algorithm
crypto: crypto4xx - fix a potential double free in ppc4xx_trng_probe
Input: gtco - bounds check collection indent level
regulator: s2mps11: Fix buck7 and buck8 wrong voltages
arm64: tegra: Update Jetson TX1 GPU regulator timings
iwlwifi: pcie: don't service an interrupt that was masked
tracing/snapshot: Resize spare buffer if size changed
NFSv4: Handle the special Linux file open access mode
lib/scatterlist: Fix mapping iterator when sg->offset is greater than PAGE_SIZE
ALSA: seq: Break too long mutex context in the write loop
ALSA: hda/realtek: apply ALC891 headset fixup to one Dell machine
media: v4l2: Test type instead of cfg->type in v4l2_ctrl_new_custom()
media: coda: Remove unbalanced and unneeded mutex unlock
KVM: x86/vPMU: refine kvm_pmu err msg when event creation failed
arm64: tegra: Fix AGIC register range
fs/proc/proc_sysctl.c: fix the default values of i_uid/i_gid on /proc/sys inodes.
drm/nouveau/i2c: Enable i2c pads & busses during preinit
padata: use smp_mb in padata_reorder to avoid orphaned padata jobs
9p/virtio: Add cleanup path in p9_virtio_init
PCI: Do not poll for PME if the device is in D3cold
Btrfs: add missing inode version, ctime and mtime updates when punching hole
libnvdimm/pfn: fix fsdax-mode namespace info-block zero-fields
take floppy compat ioctls to sodding floppy.c
floppy: fix div-by-zero in setup_format_params
floppy: fix out-of-bounds read in next_valid_format
floppy: fix invalid pointer dereference in drive_name
floppy: fix out-of-bounds read in copy_buffer
coda: pass the host file in vma->vm_file on mmap
gpu: ipu-v3: ipu-ic: Fix saturation bit offset in TPMEM
crypto: ccp - Validate the the error value used to index error messages
PCI: hv: Delete the device earlier from hbus->children for hot-remove
PCI: hv: Fix a use-after-free bug in hv_eject_device_work()
crypto: caam - limit output IV to CBC to work around CTR mode DMA issue
um: Allow building and running on older hosts
um: Fix FP register size for XSTATE/XSAVE
parisc: Ensure userspace privilege for ptraced processes in regset functions
parisc: Fix kernel panic due invalid values in IAOQ0 or IAOQ1
powerpc/32s: fix suspend/resume when IBATs 4-7 are used
powerpc/watchpoint: Restore NV GPRs while returning from exception
eCryptfs: fix a couple type promotion bugs
intel_th: msu: Fix single mode with disabled IOMMU
Bluetooth: Add SMP workaround Microsoft Surface Precision Mouse bug
usb: Handle USB3 remote wakeup for LPM enabled devices correctly
dm bufio: fix deadlock with loop device
compiler.h, kasan: Avoid duplicating __read_once_size_nocheck()
compiler.h: Add read_word_at_a_time() function.
lib/strscpy: Shut up KASAN false-positives in strscpy()
ext4: allow directory holes
bnx2x: Prevent load reordering in tx completion processing
bnx2x: Prevent ptp_task to be rescheduled indefinitely
caif-hsi: fix possible deadlock in cfhsi_exit_module()
igmp: fix memory leak in igmpv3_del_delrec()
ipv4: don't set IPv6 only flags to IPv4 addresses
net: bcmgenet: use promisc for unsupported filters
net: dsa: mv88e6xxx: wait after reset deactivation
net: neigh: fix multiple neigh timer scheduling
net: openvswitch: fix csum updates for MPLS actions
nfc: fix potential illegal memory access
rxrpc: Fix send on a connected, but unbound socket
sky2: Disable MSI on ASUS P6T
vrf: make sure skb->data contains ip header to make routing
macsec: fix use-after-free of skb during RX
macsec: fix checksumming after decryption
netrom: fix a memory leak in nr_rx_frame()
netrom: hold sock when setting skb->destructor
bonding: validate ip header before check IPPROTO_IGMP
tcp: Reset bytes_acked and bytes_received when disconnecting
net: bridge: mcast: fix stale nsrcs pointer in igmp3/mld2 report handling
net: bridge: mcast: fix stale ipv6 hdr pointer when handling v6 query
net: bridge: stp: don't cache eth dest pointer before skb pull
perf/x86/amd/uncore: Rename 'L2' to 'LLC'
perf/x86/amd/uncore: Get correct number of cores sharing last level cache
perf/events/amd/uncore: Fix amd_uncore_llc ID to use pre-defined cpu_llc_id
NFSv4: Fix open create exclusive when the server reboots
nfsd: increase DRC cache limit
nfsd: give out fewer session slots as limit approaches
nfsd: fix performance-limiting session calculation
nfsd: Fix overflow causing non-working mounts on 1 TB machines
drm/panel: simple: Fix panel_simple_dsi_probe
usb: core: hub: Disable hub-initiated U1/U2
tty: max310x: Fix invalid baudrate divisors calculator
pinctrl: rockchip: fix leaked of_node references
tty: serial: cpm_uart - fix init when SMC is relocated
drm/bridge: tc358767: read display_props in get_modes()
drm/bridge: sii902x: pixel clock unit is 10kHz instead of 1kHz
memstick: Fix error cleanup path of memstick_init
tty/serial: digicolor: Fix digicolor-usart already registered warning
tty: serial: msm_serial: avoid system lockup condition
serial: 8250: Fix TX interrupt handling condition
drm/virtio: Add memory barriers for capset cache.
phy: renesas: rcar-gen2: Fix memory leak at error paths
drm/rockchip: Properly adjust to a true clock in adjusted_mode
tty: serial_core: Set port active bit in uart_port_activate
usb: gadget: Zero ffs_io_data
powerpc/pci/of: Fix OF flags parsing for 64bit BARs
PCI: sysfs: Ignore lockdep for remove attribute
kbuild: Add -Werror=unknown-warning-option to CLANG_FLAGS
PCI: xilinx-nwl: Fix Multi MSI data programming
iio: iio-utils: Fix possible incorrect mask calculation
recordmcount: Fix spurious mcount entries on powerpc
mfd: core: Set fwnode for created devices
mfd: arizona: Fix undefined behavior
mfd: hi655x-pmic: Fix missing return value check for devm_regmap_init_mmio_clk
um: Silence lockdep complaint about mmap_sem
powerpc/4xx/uic: clear pending interrupt after irq type/pol change
RDMA/i40iw: Set queue pair state when being queried
serial: sh-sci: Terminate TX DMA during buffer flushing
serial: sh-sci: Fix TX DMA buffer flushing and workqueue races
kallsyms: exclude kasan local symbols on s390
perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning
RDMA/rxe: Fill in wc byte_len with IB_WC_RECV_RDMA_WITH_IMM
powerpc/boot: add {get, put}_unaligned_be32 to xz_config.h
f2fs: avoid out-of-range memory access
mailbox: handle failed named mailbox channel request
powerpc/eeh: Handle hugepages in ioremap space
sh: prevent warnings when using iounmap
mm/kmemleak.c: fix check for softirq context
9p: pass the correct prototype to read_cache_page
mm/mmu_notifier: use hlist_add_head_rcu()
locking/lockdep: Fix lock used or unused stats error
locking/lockdep: Hide unused 'class' variable
usb: wusbcore: fix unbalanced get/put cluster_id
usb: pci-quirks: Correct AMD PLL quirk detection
x86/sysfb_efi: Add quirks for some devices with swapped width and height
x86/speculation/mds: Apply more accurate check on hypervisor platform
hpet: Fix division by zero in hpet_time_div()
ALSA: line6: Fix wrong altsetting for LINE6_PODHD500_1
ALSA: hda - Add a conexant codec entry to let mute led work
powerpc/tm: Fix oops on sigreturn on systems without TM
access: avoid the RCU grace period for the temporary subjective credentials
ipv6: check sk sk_type and protocol early in ip_mroute_set/getsockopt
tcp: reset sk_send_head in tcp_write_queue_purge
arm64: dts: marvell: Fix A37xx UART0 register size
i2c: qup: fixed releasing dma without flush operation completion
arm64: compat: Provide definition for COMPAT_SIGMINSTKSZ
ISDN: hfcsusb: checking idx of ep configuration
media: au0828: fix null dereference in error path
media: cpia2_usb: first wake up, then free in disconnect
media: radio-raremono: change devm_k*alloc to k*alloc
Bluetooth: hci_uart: check for missing tty operations
sched/fair: Don't free p->numa_faults with concurrent readers
drivers/pps/pps.c: clear offset flags in PPS_SETPARAMS ioctl
ceph: hold i_ceph_lock when removing caps for freeing inode
Linux 4.9.187
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
fabc071c7d
227 changed files with 2285 additions and 1079 deletions
|
|
@ -8,6 +8,6 @@ Required properties:
|
||||||
Example:
|
Example:
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
compatible = "marvell,armada-3700-uart";
|
compatible = "marvell,armada-3700-uart";
|
||||||
reg = <0x12000 0x400>;
|
reg = <0x12000 0x200>;
|
||||||
interrupts = <43>;
|
interrupts = <43>;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
3
Makefile
3
Makefile
|
|
@ -1,6 +1,6 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 9
|
PATCHLEVEL = 9
|
||||||
SUBLEVEL = 186
|
SUBLEVEL = 187
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Roaring Lionus
|
NAME = Roaring Lionus
|
||||||
|
|
||||||
|
|
@ -520,6 +520,7 @@ ifneq ($(GCC_TOOLCHAIN),)
|
||||||
CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN)
|
CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN)
|
||||||
endif
|
endif
|
||||||
CLANG_FLAGS += -no-integrated-as
|
CLANG_FLAGS += -no-integrated-as
|
||||||
|
CLANG_FLAGS += -Werror=unknown-warning-option
|
||||||
KBUILD_CFLAGS += $(CLANG_FLAGS)
|
KBUILD_CFLAGS += $(CLANG_FLAGS)
|
||||||
KBUILD_AFLAGS += $(CLANG_FLAGS)
|
KBUILD_AFLAGS += $(CLANG_FLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@
|
||||||
|
|
||||||
uart0: serial@12000 {
|
uart0: serial@12000 {
|
||||||
compatible = "marvell,armada-3700-uart";
|
compatible = "marvell,armada-3700-uart";
|
||||||
reg = <0x12000 0x400>;
|
reg = <0x12000 0x200>;
|
||||||
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -306,7 +306,8 @@
|
||||||
regulator-max-microvolt = <1320000>;
|
regulator-max-microvolt = <1320000>;
|
||||||
enable-gpios = <&pmic 6 GPIO_ACTIVE_HIGH>;
|
enable-gpios = <&pmic 6 GPIO_ACTIVE_HIGH>;
|
||||||
regulator-ramp-delay = <80>;
|
regulator-ramp-delay = <80>;
|
||||||
regulator-enable-ramp-delay = <1000>;
|
regulator-enable-ramp-delay = <2000>;
|
||||||
|
regulator-settling-time-us = <160>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1020,7 +1020,7 @@
|
||||||
compatible = "nvidia,tegra210-agic";
|
compatible = "nvidia,tegra210-agic";
|
||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
reg = <0x702f9000 0x2000>,
|
reg = <0x702f9000 0x1000>,
|
||||||
<0x702fa000 0x2000>;
|
<0x702fa000 0x2000>;
|
||||||
interrupts = <GIC_SPI 102 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
interrupts = <GIC_SPI 102 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||||
clocks = <&tegra_car TEGRA210_CLK_APE>;
|
clocks = <&tegra_car TEGRA210_CLK_APE>;
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ static int sha1_ce_finup(struct shash_desc *desc, const u8 *data,
|
||||||
unsigned int len, u8 *out)
|
unsigned int len, u8 *out)
|
||||||
{
|
{
|
||||||
struct sha1_ce_state *sctx = shash_desc_ctx(desc);
|
struct sha1_ce_state *sctx = shash_desc_ctx(desc);
|
||||||
bool finalize = !sctx->sst.count && !(len % SHA1_BLOCK_SIZE);
|
bool finalize = !sctx->sst.count && !(len % SHA1_BLOCK_SIZE) && len;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allow the asm code to perform the finalization if there is no
|
* Allow the asm code to perform the finalization if there is no
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ static int sha256_ce_finup(struct shash_desc *desc, const u8 *data,
|
||||||
unsigned int len, u8 *out)
|
unsigned int len, u8 *out)
|
||||||
{
|
{
|
||||||
struct sha256_ce_state *sctx = shash_desc_ctx(desc);
|
struct sha256_ce_state *sctx = shash_desc_ctx(desc);
|
||||||
bool finalize = !sctx->sst.count && !(len % SHA256_BLOCK_SIZE);
|
bool finalize = !sctx->sst.count && !(len % SHA256_BLOCK_SIZE) && len;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allow the asm code to perform the finalization if there is no
|
* Allow the asm code to perform the finalization if there is no
|
||||||
|
|
|
||||||
|
|
@ -234,6 +234,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define compat_user_stack_pointer() (user_stack_pointer(task_pt_regs(current)))
|
#define compat_user_stack_pointer() (user_stack_pointer(task_pt_regs(current)))
|
||||||
|
#define COMPAT_MINSIGSTKSZ 2048
|
||||||
|
|
||||||
static inline void __user *arch_compat_alloc_user_space(long len)
|
static inline void __user *arch_compat_alloc_user_space(long len)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -157,10 +157,14 @@ static int __init acpi_fadt_sanity_check(void)
|
||||||
*/
|
*/
|
||||||
if (table->revision < 5 ||
|
if (table->revision < 5 ||
|
||||||
(table->revision == 5 && fadt->minor_revision < 1)) {
|
(table->revision == 5 && fadt->minor_revision < 1)) {
|
||||||
pr_err("Unsupported FADT revision %d.%d, should be 5.1+\n",
|
pr_err(FW_BUG "Unsupported FADT revision %d.%d, should be 5.1+\n",
|
||||||
table->revision, fadt->minor_revision);
|
table->revision, fadt->minor_revision);
|
||||||
ret = -EINVAL;
|
|
||||||
goto out;
|
if (!fadt->arm_boot_flags) {
|
||||||
|
ret = -EINVAL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
pr_err("FADT has ARM boot flags set, assuming 5.1\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(fadt->flags & ACPI_FADT_HW_REDUCED)) {
|
if (!(fadt->flags & ACPI_FADT_HW_REDUCED)) {
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,11 @@
|
||||||
|
|
||||||
#ifdef CONFIG_EFI
|
#ifdef CONFIG_EFI
|
||||||
|
|
||||||
__efistub_stext_offset = stext - _text;
|
/*
|
||||||
|
* Use ABSOLUTE() to avoid ld.lld treating this as a relative symbol:
|
||||||
|
* https://github.com/ClangBuiltLinux/linux/issues/561
|
||||||
|
*/
|
||||||
|
__efistub_stext_offset = ABSOLUTE(stext - _text);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prevent the symbol aliases below from being emitted into the kallsyms
|
* Prevent the symbol aliases below from being emitted into the kallsyms
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,8 @@ OBJCOPYFLAGS_piggy.o := --add-section=.image=$(obj)/vmlinux.bin.z \
|
||||||
$(obj)/piggy.o: $(obj)/dummy.o $(obj)/vmlinux.bin.z FORCE
|
$(obj)/piggy.o: $(obj)/dummy.o $(obj)/vmlinux.bin.z FORCE
|
||||||
$(call if_changed,objcopy)
|
$(call if_changed,objcopy)
|
||||||
|
|
||||||
|
HOSTCFLAGS_calc_vmlinuz_load_addr.o += $(LINUXINCLUDE)
|
||||||
|
|
||||||
# Calculate the load address of the compressed kernel image
|
# Calculate the load address of the compressed kernel image
|
||||||
hostprogs-y := calc_vmlinuz_load_addr
|
hostprogs-y := calc_vmlinuz_load_addr
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "../../../../include/linux/sizes.h"
|
#include <linux/sizes.h>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@
|
||||||
#define AR933X_UART_CS_PARITY_S 0
|
#define AR933X_UART_CS_PARITY_S 0
|
||||||
#define AR933X_UART_CS_PARITY_M 0x3
|
#define AR933X_UART_CS_PARITY_M 0x3
|
||||||
#define AR933X_UART_CS_PARITY_NONE 0
|
#define AR933X_UART_CS_PARITY_NONE 0
|
||||||
#define AR933X_UART_CS_PARITY_ODD 1
|
#define AR933X_UART_CS_PARITY_ODD 2
|
||||||
#define AR933X_UART_CS_PARITY_EVEN 2
|
#define AR933X_UART_CS_PARITY_EVEN 3
|
||||||
#define AR933X_UART_CS_IF_MODE_S 2
|
#define AR933X_UART_CS_IF_MODE_S 2
|
||||||
#define AR933X_UART_CS_IF_MODE_M 0x3
|
#define AR933X_UART_CS_IF_MODE_M 0x3
|
||||||
#define AR933X_UART_CS_IF_MODE_NONE 0
|
#define AR933X_UART_CS_IF_MODE_NONE 0
|
||||||
|
|
|
||||||
|
|
@ -170,6 +170,9 @@ long arch_ptrace(struct task_struct *child, long request,
|
||||||
if ((addr & (sizeof(unsigned long)-1)) ||
|
if ((addr & (sizeof(unsigned long)-1)) ||
|
||||||
addr >= sizeof(struct pt_regs))
|
addr >= sizeof(struct pt_regs))
|
||||||
break;
|
break;
|
||||||
|
if (addr == PT_IAOQ0 || addr == PT_IAOQ1) {
|
||||||
|
data |= 3; /* ensure userspace privilege */
|
||||||
|
}
|
||||||
if ((addr >= PT_GR1 && addr <= PT_GR31) ||
|
if ((addr >= PT_GR1 && addr <= PT_GR31) ||
|
||||||
addr == PT_IAOQ0 || addr == PT_IAOQ1 ||
|
addr == PT_IAOQ0 || addr == PT_IAOQ1 ||
|
||||||
(addr >= PT_FR0 && addr <= PT_FR31 + 4) ||
|
(addr >= PT_FR0 && addr <= PT_FR31 + 4) ||
|
||||||
|
|
@ -231,16 +234,18 @@ long arch_ptrace(struct task_struct *child, long request,
|
||||||
|
|
||||||
static compat_ulong_t translate_usr_offset(compat_ulong_t offset)
|
static compat_ulong_t translate_usr_offset(compat_ulong_t offset)
|
||||||
{
|
{
|
||||||
if (offset < 0)
|
compat_ulong_t pos;
|
||||||
return sizeof(struct pt_regs);
|
|
||||||
else if (offset <= 32*4) /* gr[0..31] */
|
if (offset < 32*4) /* gr[0..31] */
|
||||||
return offset * 2 + 4;
|
pos = offset * 2 + 4;
|
||||||
else if (offset <= 32*4+32*8) /* gr[0..31] + fr[0..31] */
|
else if (offset < 32*4+32*8) /* fr[0] ... fr[31] */
|
||||||
return offset + 32*4;
|
pos = (offset - 32*4) + PT_FR0;
|
||||||
else if (offset < sizeof(struct pt_regs)/2 + 32*4)
|
else if (offset < sizeof(struct pt_regs)/2 + 32*4) /* sr[0] ... ipsw */
|
||||||
return offset * 2 + 4 - 32*8;
|
pos = (offset - 32*4 - 32*8) * 2 + PT_SR0 + 4;
|
||||||
else
|
else
|
||||||
return sizeof(struct pt_regs);
|
pos = sizeof(struct pt_regs);
|
||||||
|
|
||||||
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
||||||
|
|
@ -284,9 +289,12 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
||||||
addr = translate_usr_offset(addr);
|
addr = translate_usr_offset(addr);
|
||||||
if (addr >= sizeof(struct pt_regs))
|
if (addr >= sizeof(struct pt_regs))
|
||||||
break;
|
break;
|
||||||
|
if (addr == PT_IAOQ0+4 || addr == PT_IAOQ1+4) {
|
||||||
|
data |= 3; /* ensure userspace privilege */
|
||||||
|
}
|
||||||
if (addr >= PT_FR0 && addr <= PT_FR31 + 4) {
|
if (addr >= PT_FR0 && addr <= PT_FR31 + 4) {
|
||||||
/* Special case, fp regs are 64 bits anyway */
|
/* Special case, fp regs are 64 bits anyway */
|
||||||
*(__u64 *) ((char *) task_regs(child) + addr) = data;
|
*(__u32 *) ((char *) task_regs(child) + addr) = data;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
else if ((addr >= PT_GR1+4 && addr <= PT_GR31+4) ||
|
else if ((addr >= PT_GR1+4 && addr <= PT_GR31+4) ||
|
||||||
|
|
@ -499,7 +507,8 @@ static void set_reg(struct pt_regs *regs, int num, unsigned long val)
|
||||||
return;
|
return;
|
||||||
case RI(iaoq[0]):
|
case RI(iaoq[0]):
|
||||||
case RI(iaoq[1]):
|
case RI(iaoq[1]):
|
||||||
regs->iaoq[num - RI(iaoq[0])] = val;
|
/* set 2 lowest bits to ensure userspace privilege: */
|
||||||
|
regs->iaoq[num - RI(iaoq[0])] = val | 3;
|
||||||
return;
|
return;
|
||||||
case RI(sar): regs->sar = val;
|
case RI(sar): regs->sar = val;
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,30 @@ static inline uint32_t swab32p(void *p)
|
||||||
|
|
||||||
#ifdef __LITTLE_ENDIAN__
|
#ifdef __LITTLE_ENDIAN__
|
||||||
#define get_le32(p) (*((uint32_t *) (p)))
|
#define get_le32(p) (*((uint32_t *) (p)))
|
||||||
|
#define cpu_to_be32(x) swab32(x)
|
||||||
|
static inline u32 be32_to_cpup(const u32 *p)
|
||||||
|
{
|
||||||
|
return swab32p((u32 *)p);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
#define get_le32(p) swab32p(p)
|
#define get_le32(p) swab32p(p)
|
||||||
|
#define cpu_to_be32(x) (x)
|
||||||
|
static inline u32 be32_to_cpup(const u32 *p)
|
||||||
|
{
|
||||||
|
return *p;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static inline uint32_t get_unaligned_be32(const void *p)
|
||||||
|
{
|
||||||
|
return be32_to_cpup(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void put_unaligned_be32(u32 val, void *p)
|
||||||
|
{
|
||||||
|
*((u32 *)p) = cpu_to_be32(val);
|
||||||
|
}
|
||||||
|
|
||||||
#define memeq(a, b, size) (memcmp(a, b, size) == 0)
|
#define memeq(a, b, size) (memcmp(a, b, size) == 0)
|
||||||
#define memzero(buf, size) memset(buf, 0, size)
|
#define memzero(buf, size) memset(buf, 0, size)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -362,10 +362,19 @@ static inline unsigned long eeh_token_to_phys(unsigned long token)
|
||||||
NULL, &hugepage_shift);
|
NULL, &hugepage_shift);
|
||||||
if (!ptep)
|
if (!ptep)
|
||||||
return token;
|
return token;
|
||||||
WARN_ON(hugepage_shift);
|
|
||||||
pa = pte_pfn(*ptep) << PAGE_SHIFT;
|
|
||||||
|
|
||||||
return pa | (token & (PAGE_SIZE-1));
|
pa = pte_pfn(*ptep);
|
||||||
|
|
||||||
|
/* On radix we can do hugepage mappings for io, so handle that */
|
||||||
|
if (hugepage_shift) {
|
||||||
|
pa <<= hugepage_shift;
|
||||||
|
pa |= token & ((1ul << hugepage_shift) - 1);
|
||||||
|
} else {
|
||||||
|
pa <<= PAGE_SHIFT;
|
||||||
|
pa |= token & (PAGE_SIZE - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pa;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1505,7 +1505,7 @@ handle_page_fault:
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
bl do_page_fault
|
bl do_page_fault
|
||||||
cmpdi r3,0
|
cmpdi r3,0
|
||||||
beq+ 12f
|
beq+ ret_from_except_lite
|
||||||
bl save_nvgprs
|
bl save_nvgprs
|
||||||
mr r5,r3
|
mr r5,r3
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
|
|
@ -1520,7 +1520,12 @@ handle_dabr_fault:
|
||||||
ld r5,_DSISR(r1)
|
ld r5,_DSISR(r1)
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
bl do_break
|
bl do_break
|
||||||
12: b ret_from_except_lite
|
/*
|
||||||
|
* do_break() may have changed the NV GPRS while handling a breakpoint.
|
||||||
|
* If so, we need to restore them with their updated values. Don't use
|
||||||
|
* ret_from_except_lite here.
|
||||||
|
*/
|
||||||
|
b ret_from_except
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_STD_MMU_64
|
#ifdef CONFIG_PPC_STD_MMU_64
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,8 @@ static unsigned int pci_parse_of_flags(u32 addr0, int bridge)
|
||||||
if (addr0 & 0x02000000) {
|
if (addr0 & 0x02000000) {
|
||||||
flags = IORESOURCE_MEM | PCI_BASE_ADDRESS_SPACE_MEMORY;
|
flags = IORESOURCE_MEM | PCI_BASE_ADDRESS_SPACE_MEMORY;
|
||||||
flags |= (addr0 >> 22) & PCI_BASE_ADDRESS_MEM_TYPE_64;
|
flags |= (addr0 >> 22) & PCI_BASE_ADDRESS_MEM_TYPE_64;
|
||||||
|
if (flags & PCI_BASE_ADDRESS_MEM_TYPE_64)
|
||||||
|
flags |= IORESOURCE_MEM_64;
|
||||||
flags |= (addr0 >> 28) & PCI_BASE_ADDRESS_MEM_TYPE_1M;
|
flags |= (addr0 >> 28) & PCI_BASE_ADDRESS_MEM_TYPE_1M;
|
||||||
if (addr0 & 0x40000000)
|
if (addr0 & 0x40000000)
|
||||||
flags |= IORESOURCE_PREFETCH
|
flags |= IORESOURCE_PREFETCH
|
||||||
|
|
|
||||||
|
|
@ -1281,6 +1281,9 @@ long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
||||||
goto bad;
|
goto bad;
|
||||||
|
|
||||||
if (MSR_TM_ACTIVE(msr_hi<<32)) {
|
if (MSR_TM_ACTIVE(msr_hi<<32)) {
|
||||||
|
/* Trying to start TM on non TM system */
|
||||||
|
if (!cpu_has_feature(CPU_FTR_TM))
|
||||||
|
goto bad;
|
||||||
/* We only recheckpoint on return if we're
|
/* We only recheckpoint on return if we're
|
||||||
* transaction.
|
* transaction.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -741,6 +741,11 @@ int sys_rt_sigreturn(unsigned long r3, unsigned long r4, unsigned long r5,
|
||||||
if (MSR_TM_ACTIVE(msr)) {
|
if (MSR_TM_ACTIVE(msr)) {
|
||||||
/* We recheckpoint on return. */
|
/* We recheckpoint on return. */
|
||||||
struct ucontext __user *uc_transact;
|
struct ucontext __user *uc_transact;
|
||||||
|
|
||||||
|
/* Trying to start TM on non TM system */
|
||||||
|
if (!cpu_has_feature(CPU_FTR_TM))
|
||||||
|
goto badframe;
|
||||||
|
|
||||||
if (__get_user(uc_transact, &uc->uc_link))
|
if (__get_user(uc_transact, &uc->uc_link))
|
||||||
goto badframe;
|
goto badframe;
|
||||||
if (restore_tm_sigcontexts(current, &uc->uc_mcontext,
|
if (restore_tm_sigcontexts(current, &uc->uc_mcontext,
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue