Linux 4.19.104
Greg KH
maintainerI'm announcing the release of the 4.19.104 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arc/boot/dts/axs10x_mb.dtsi | 1 arch/arm/boot/dts/am43xx-clocks.dtsi | 54 +++++++++++++++ arch/arm/boot/dts/at91sam9260.dtsi | 12 +-- arch/arm/boot/dts/at91sam9261.dtsi | 6 - arch/arm/boot/dts/at91sam9263.dtsi | 6 - arch/arm/boot/dts/at91sam9g45.dtsi | 8 +- arch/arm/boot/dts/at91sam9rl.dtsi | 8 +- arch/arm/boot/dts/sama5d3.dtsi | 28 ++++---- arch/arm/boot/dts/sama5d3_can.dtsi | 4 - arch/arm/boot/dts/sama5d3_tcb1.dtsi | 1 arch/arm/boot/dts/sama5d3_uart.dtsi | 4 - arch/arm/mm/init.c | 2 arch/arm64/kernel/cpufeature.c | 2 arch/arm64/kernel/ptrace.c | 21 ++++++ arch/powerpc/platforms/pseries/iommu.c | 43 ++++++++---- arch/powerpc/platforms/pseries/vio.c | 2 arch/x86/entry/calling.h | 15 ---- arch/x86/entry/entry_32.S | 16 ---- arch/x86/include/asm/frame.h | 49 ++++++++++++++ arch/x86/kernel/ftrace_32.S | 3 arch/x86/kernel/ftrace_64.S | 3 drivers/crypto/atmel-sha.c | 7 -- drivers/crypto/axis/artpec6_crypto.c | 2 drivers/gpio/gpio-zynq.c | 23 ++++++ drivers/infiniband/core/addr.c | 2 drivers/infiniband/core/sa_query.c | 4 - drivers/infiniband/core/uverbs_main.c | 32 ++++----- drivers/infiniband/hw/mlx4/main.c | 20 ++++- drivers/iommu/arm-smmu-v3.c | 1 drivers/media/i2c/adv748x/adv748x.h | 8 +- drivers/mtd/nand/onenand/onenand_base.c | 82 ++++++++++++------------ drivers/mtd/parsers/sharpslpart.c | 4 - drivers/net/wireless/ath/ath10k/pci.c | 19 +++++ drivers/net/wireless/marvell/libertas/cfg.c | 2 drivers/net/wireless/marvell/mwifiex/scan.c | 7 ++ drivers/net/wireless/marvell/mwifiex/wmm.c | 4 + drivers/pci/iov.c | 9 +- drivers/pci/setup-bus.c | 20 ++++- drivers/pci/switch/switchtec.c | 2 drivers/pinctrl/sh-pfc/pfc-r8a7778.c | 4 - drivers/platform/x86/intel_mid_powerbtn.c | 5 - drivers/rtc/rtc-cmos.c | 2 drivers/rtc/rtc-hym8563.c | 2 drivers/scsi/megaraid/megaraid_sas_base.c | 3 drivers/scsi/megaraid/megaraid_sas_fusion.c | 3 drivers/scsi/megaraid/megaraid_sas_fusion.h | 1 drivers/scsi/ufs/ufshcd.c | 3 drivers/spi/spi-mem.c | 54 ++++++++++++++- drivers/tty/serial/xilinx_uartps.c | 17 +++-- fs/nfs/Kconfig | 2 fs/nfs/direct.c | 4 - fs/nfs/nfs3xdr.c | 5 + fs/nfs/nfs4proc.c | 5 + fs/nfs/nfs4xdr.c | 5 + fs/nfs/pnfs_nfs.c | 7 -- fs/nfs/write.c | 12 +++ include/rdma/ib_verbs.h | 3 kernel/padata.c | 1 net/vmw_vsock/hyperv_transport.c | 68 ++------------------ sound/soc/soc-pcm.c | 95 ++++++++++++++++++++-------- tools/power/acpi/Makefile.config | 2 virt/kvm/arm/aarch32.c | 14 ++-- virt/kvm/arm/mmu.c | 3 virt/kvm/arm/pmu.c | 3 virt/kvm/arm/vgic/vgic-its.c | 3 66 files changed, 563 insertions(+), 301 deletions(-)
Alexandre Belloni (2):
ARM: dts: at91: sama5d3: fix maximum peripheral clock rates
ARM: dts: at91: sama5d3: define clock rate range for tcb1
Alexey Kardashevskiy (1):
powerpc/pseries: Allow not having ibm, hypertas-functions::hcall-multi-tce for DDW
Anand Lodnoor (1):
scsi: megaraid_sas: Do not initiate OCR if controller is not in ready state
Andy Shevchenko (1):
rtc: cmos: Stop using shared IRQ
Bean Huo (1):
scsi: ufs: Fix ufshcd_probe_hba() reture value in case ufshcd_scsi_add_wlus() fails
Boris Brezillon (1):
spi: spi-mem: Add extra sanity checks on the op param
Brandon Maier (1):
gpio: zynq: Report gpio direction at boot
Bryan O'Donoghue (1):
ath10k: pci: Only dump ATH10K_MEM_REGION_TYPE_IOREG when safe
Daniel Jordan (1):
padata: fix null pointer deref of pd->pinst
Eric Auger (2):
KVM: arm/arm64: vgic-its: Fix restoration of unmapped collections
KVM: arm64: pmu: Don't increment SW_INCR if PMCR.E is unset
Eric Biggers (2):
crypto: artpec6 - return correct error code for failed setkey()
crypto: atmel-sha - fix error handling when setting hmac key
Gavin Shan (1):
KVM: arm/arm64: Fix young bit from mmu notifier
Geert Uytterhoeven (3):
nfs: NFS_SWAP should depend on SWAP
spi: spi-mem: Fix inverted logic in op sanity check
pinctrl: sh-pfc: r8a7778: Fix duplicate SDSELF_B and SD1_CLK_B
Greg Kroah-Hartman (1):
Linux 4.19.104
Gustavo A. R. Silva (1):
media: i2c: adv748x: Fix unsafe macros
Håkon Bugge (1):
RDMA/netlink: Do not always generate an ACK for some netlink operations
Ingo van Lil (1):
ARM: dts: at91: Reenable UART TX pull-ups
Jack Morgenstein (1):
IB/mlx4: Fix memory leak in add_gid error flow
James Morse (2):
KVM: arm: Fix DFSR setting for non-LPAE aarch32 guests
KVM: arm: Make inject_abt32() inject an external abort instead
Jason Gunthorpe (1):
RDMA/core: Fix locking in ib_uverbs_event_read
Jose Abreu (1):
ARC: [plat-axs10x]: Add missing multicast filter number to GMAC node
Logan Gunthorpe (2):
PCI/switchtec: Fix vep_vector_number ioread width
PCI: Don't disable bridge BARs when assigning bus resources
Michael Guralnik (1):
RDMA/uverbs: Verify MR access flags
Mika Westerberg (1):
platform/x86: intel_mid_powerbtn: Take a copy of ddata
Nathan Chancellor (1):
mtd: onenand_base: Adjust indentation in onenand_read_ops_nolock
Navid Emamdoost (1):
PCI/IOV: Fix memory leak in pci_iov_add_virtfn()
Nicolai Stange (2):
libertas: don't exit from lbs_ibss_join_existing() with RCU read lock held
libertas: make lbs_ibss_join_existing() return error code on rates overflow
Olof Johansson (1):
ARM: 8949/1: mm: mark free_memmap as __init
Paul Kocialkowski (1):
rtc: hym8563: Return -EINVAL if the time is known to be invalid
Peter Zijlstra (2):
x86/stackframe: Move ENCODE_FRAME_POINTER to asm/frame.h x86/stackframe, x86/ftrace: Add pt_regs frame annotations
Qing Xu (2):
mwifiex: Fix possible buffer overflows in mwifiex_ret_wmm_get_status()
mwifiex: Fix possible buffer overflows in mwifiex_cmd_append_vsie_tlv()
Ranjani Sridharan (1):
ASoC: pcm: update FE/BE trigger order based on the command
Robert Milkowski (1):
NFSv4: try lease recovery on NFS4ERR_EXPIRED
Shameer Kolothum (1):
iommu/arm-smmu-v3: Populate VMID field for CMDQ_OP_TLBI_NH_VA
Shubhrajyoti Datta (2):
serial: uartps: Add a timeout to the tx empty wait
serial: uartps: Move the spinlock after the read of the tx empty
Sunil Muthuswamy (1):
hv_sock: Remove the accept port restriction
Suzuki K Poulose (2):
arm64: cpufeature: Fix the type of no FP/SIMD capability
arm64: ptrace: nofpsimd: Fail FP/SIMD regset operations
Tero Kristo (1):
ARM: dts: am43xx: add support for clkout1 clock
Trond Myklebust (2):
NFS: Revalidate the file size on a fatal write error NFS/pnfs: Fix pnfs_generic_prepare_to_resend_writes()
Tyrel Datwyler (1):
powerpc/pseries/vio: Fix iommu_table use-after-free refcount warning
YueHaibing (1):
mtd: sharpslpart: Fix unsigned comparison to zero
Zhengyuan Liu (1):
tools/power/acpi: fix compilation error
Greg KH
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 103 +SUBLEVEL = 104 EXTRAVERSION = NAME = "People's Front"
arch/arc/boot/dts/axs10x_mb.dtsi +1 -0
@@ -80,6 +80,7 @@ interrupt-names = "macirq"; phy-mode = "rgmii"; snps,pbl = < 32 >; + snps,multicast-filter-bins = <256>; clocks = <&apbclk>; clock-names = "stmmaceth"; max-speed = <100>;
arch/arm/boot/dts/am43xx-clocks.dtsi +54 -0
60 lines not on this page · raw message
arch/arm/boot/dts/at91sam9260.dtsi +6 -6
@@ -434,7 +434,7 @@ usart0 { pinctrl_usart0: usart0-0 { atmel,pins = - <AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 5 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -468,7 +468,7 @@ usart1 { pinctrl_usart1: usart1-0 { atmel,pins = - <AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 7 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -486,7 +486,7 @@ usart2 { pinctrl_usart2: usart2-0 { atmel,pins = - <AT91_PIOB 8 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 8 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 9 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -504,7 +504,7 @@ usart3 { pinctrl_usart3: usart3-0 { atmel,pins = - <AT91_PIOB 10 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 10 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 11 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -522,7 +522,7 @@ uart0 { pinctrl_uart0: uart0-0 { atmel,pins = - <AT91_PIOA 31 AT91_PERIPH_B AT91_PINCTRL_NONE + <AT91_PIOA 31 AT91_PERIPH_B AT91_PINCTRL_PULL_UP AT91_PIOA 30 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>; }; };
@@ -530,7 +530,7 @@ uart1 { pinctrl_uart1: uart1-0 { atmel,pins = - <AT91_PIOB 12 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 12 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 13 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; }; };
arch/arm/boot/dts/at91sam9261.dtsi +3 -3
@@ -328,7 +328,7 @@ usart0 { pinctrl_usart0: usart0-0 { atmel,pins = - <AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_NONE>, + <AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>, <AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -346,7 +346,7 @@ usart1 { pinctrl_usart1: usart1-0 { atmel,pins = - <AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_NONE>, + <AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>, <AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -364,7 +364,7 @@ usart2 { pinctrl_usart2: usart2-0 { atmel,pins = - <AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_NONE>, + <AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>, <AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
arch/arm/boot/dts/at91sam9263.dtsi +3 -3
@@ -437,7 +437,7 @@ usart0 { pinctrl_usart0: usart0-0 { atmel,pins = - <AT91_PIOA 26 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOA 26 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOA 27 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -455,7 +455,7 @@ usart1 { pinctrl_usart1: usart1-0 { atmel,pins = - <AT91_PIOD 0 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOD 0 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOD 1 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -473,7 +473,7 @@ usart2 { pinctrl_usart2: usart2-0 { atmel,pins = - <AT91_PIOD 2 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOD 2 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOD 3 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
arch/arm/boot/dts/at91sam9g45.dtsi +4 -4
@@ -555,7 +555,7 @@ usart0 { pinctrl_usart0: usart0-0 { atmel,pins = - <AT91_PIOB 19 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 19 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 18 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -573,7 +573,7 @@ usart1 { pinctrl_usart1: usart1-0 { atmel,pins = - <AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 5 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -591,7 +591,7 @@ usart2 { pinctrl_usart2: usart2-0 { atmel,pins = - <AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 7 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -609,7 +609,7 @@ usart3 { pinctrl_usart3: usart3-0 { atmel,pins = - <AT91_PIOB 8 AT91_PERIPH_A AT91_PINCTRL_NONE + <AT91_PIOB 8 AT91_PERIPH_A AT91_PINCTRL_PULL_UP AT91_PIOB 9 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
arch/arm/boot/dts/at91sam9rl.dtsi +4 -4
@@ -681,7 +681,7 @@ usart0 { pinctrl_usart0: usart0-0 { atmel,pins = - <AT91_PIOA 6 AT91_PERIPH_A AT91_PINCTRL_NONE>, + <AT91_PIOA 6 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>, <AT91_PIOA 7 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -720,7 +720,7 @@ usart1 { pinctrl_usart1: usart1-0 { atmel,pins = - <AT91_PIOA 11 AT91_PERIPH_A AT91_PINCTRL_NONE>, + <AT91_PIOA 11 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>, <AT91_PIOA 12 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -743,7 +743,7 @@ usart2 { pinctrl_usart2: usart2-0 { atmel,pins = - <AT91_PIOA 13 AT91_PERIPH_A AT91_PINCTRL_NONE>, + <AT91_PIOA 13 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>, <AT91_PIOA 14 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
@@ -766,7 +766,7 @@ usart3 { pinctrl_usart3: usart3-0 { atmel,pins = - <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE>, + <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>, <AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; };
arch/arm/boot/dts/sama5d3.dtsi +14 -14
@@ -1187,49 +1187,49 @@ usart0_clk: usart0_clk { #clock-cells = <0>; reg = <12>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; usart1_clk: usart1_clk { #clock-cells = <0>; reg = <13>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; usart2_clk: usart2_clk { #clock-cells = <0>; reg = <14>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; usart3_clk: usart3_clk { #clock-cells = <0>; reg = <15>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; uart0_clk: uart0_clk { #clock-cells = <0>; reg = <16>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; twi0_clk: twi0_clk { reg = <18>; #clock-cells = <0>; - atmel,clk-output-range = <0 16625000>; + atmel,clk-output-range = <0 41500000>; }; twi1_clk: twi1_clk { #clock-cells = <0>; reg = <19>; - atmel,clk-output-range = <0 16625000>; + atmel,clk-output-range = <0 41500000>; }; twi2_clk: twi2_clk { #clock-cells = <0>; reg = <20>; - atmel,clk-output-range = <0 16625000>; + atmel,clk-output-range = <0 41500000>; }; mci0_clk: mci0_clk {
@@ -1245,19 +1245,19 @@ spi0_clk: spi0_clk { #clock-cells = <0>; reg = <24>; - atmel,clk-output-range = <0 133000000>; + atmel,clk-output-range = <0 166000000>; }; spi1_clk: spi1_clk { #clock-cells = <0>; reg = <25>; - atmel,clk-output-range = <0 133000000>; + atmel,clk-output-range = <0 166000000>; }; tcb0_clk: tcb0_clk { #clock-cells = <0>; reg = <26>; - atmel,clk-output-range = <0 133000000>; + atmel,clk-output-range = <0 166000000>; }; pwm_clk: pwm_clk {
@@ -1268,7 +1268,7 @@ adc_clk: adc_clk { #clock-cells = <0>; reg = <29>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; dma0_clk: dma0_clk {
@@ -1299,13 +1299,13 @@ ssc0_clk: ssc0_clk { #clock-cells = <0>; reg = <38>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; ssc1_clk: ssc1_clk { #clock-cells = <0>; reg = <39>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; sha_clk: sha_clk {
arch/arm/boot/dts/sama5d3_can.dtsi +2 -2
@@ -37,13 +37,13 @@ can0_clk: can0_clk { #clock-cells = <0>; reg = <40>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; can1_clk: can1_clk { #clock-cells = <0>; reg = <41>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; }; };
arch/arm/boot/dts/sama5d3_tcb1.dtsi +1 -0
@@ -23,6 +23,7 @@ tcb1_clk: tcb1_clk { #clock-cells = <0>; reg = <27>; + atmel,clk-output-range = <0 166000000>; }; }; };
arch/arm/boot/dts/sama5d3_uart.dtsi +2 -2
@@ -42,13 +42,13 @@ uart0_clk: uart0_clk { #clock-cells = <0>; reg = <16>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; uart1_clk: uart1_clk { #clock-cells = <0>; reg = <17>; - atmel,clk-output-range = <0 66000000>; + atmel,clk-output-range = <0 83000000>; }; }; };
arch/arm/mm/init.c +1 -1
@@ -357,7 +357,7 @@ static inline void poison_init_mem(void *s, size_t count) *p++ =0xe7fddef0 ; } -static inline void +static inline void __init free_memmap (unsigned long start_pfn,unsigned long end_pfn) {struct page *start_pg, *end_pg;
arch/arm64/kernel/cpufeature.c +1 -1
@@ -1241,7 +1241,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = { {/* FP/SIMD is not implemented */ .capability = ARM64_HAS_NO_FPSIMD, - .type = ARM64_CPUCAP_SYSTEM_FEATURE, + .type = ARM64_CPUCAP_BOOT_RESTRICTED_CPU_LOCAL_FEATURE, .min_field_value = 0, .matches = has_no_fpsimd, },
arch/arm64/kernel/ptrace.c +21 -0
@@ -627,6 +627,13 @@ static int gpr_set(struct task_struct *target, const struct user_regset *regset,return 0 ; } +static int fpr_active (struct task_struct *target,const struct user_regset *regset) +{ +if (!system_supports_fpsimd ()) +return -ENODEV ; +return regset->n; +} +/* * TODO: update fp accessors for lazy context switching (sync/flush hwstate) */
@@ -649,6 +656,9 @@ static int fpr_get(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, void *kbuf, void __user *ubuf) { + if (!system_supports_fpsimd()) + return -EINVAL; +if (target == current)fpsimd_preserve_current_state ();
@@ -688,6 +698,9 @@ static int fpr_set(struct task_struct *target, const struct user_regset *regset, {int ret; +if (!system_supports_fpsimd ()) +return -EINVAL ; + ret =__fpr_set (target, regset, pos, count, kbuf, ubuf,0 );if (ret)return ret;
@@ -990,6 +1003,7 @@ static const struct user_regset aarch64_regsets[] = {*/ .size = sizeof(u32), .align = sizeof(u32), + .active = fpr_active, .get = fpr_get, .set = fpr_set },
@@ -1176,6 +1190,9 @@ static int compat_vfp_get(struct task_struct *target,compat_ulong_t fpscr;int ret, vregs_end_pos; +if (!system_supports_fpsimd ()) +return -EINVAL ; + uregs = &target->thread.uw.fpsimd_state;if (target == current)
@@ -1209,6 +1226,9 @@ static int compat_vfp_set(struct task_struct *target,compat_ulong_t fpscr;int ret, vregs_end_pos; +if (!system_supports_fpsimd ()) +return -EINVAL ; + uregs = &target->thread.uw.fpsimd_state; vregs_end_pos =VFP_STATE_SIZE -sizeof (compat_ulong_t);
@@ -1266,6 +1286,7 @@ static const struct user_regset aarch32_regsets[] = { .n = VFP_STATE_SIZE / sizeof(compat_ulong_t), .size = sizeof(compat_ulong_t), .align = sizeof(compat_ulong_t), + .active = fpr_active, .get = compat_vfp_get, .set = compat_vfp_set },
arch/powerpc/platforms/pseries/iommu.c +29 -14
108 lines not on this page · raw message
arch/powerpc/platforms/pseries/vio.c +2 -0
@@ -1195,6 +1195,8 @@ static struct iommu_table *vio_build_iommu_table(struct vio_dev *dev)if (tbl ==NULL )return NULL ; +kref_init (&tbl->it_kref); +of_parse_dma_window (dev->dev.of_node, dma_window, &tbl->it_index, &offset, &size);
arch/x86/entry/calling.h +0 -15
@@ -172,21 +172,6 @@ For 32-bit we have the following conventions - kernel is built with .endif .endm -/* -* This is a sneaky trick to help the unwinder find pt_regs on the stack. The -* frame pointer is replaced with an encoded pointer to pt_regs. The encoding -* is just setting the LSB, which makes it an invalid stack address and is also -* a signal to the unwinder that it's a pt_regs pointer in disguise. -* -* NOTE: This macro must be used *after* PUSH_AND_CLEAR_REGS because it corrupts -* the original rbp. -*/ -.macro ENCODE_FRAME_POINTER ptregs_offset=0 -#ifdef CONFIG_FRAME_POINTER - leaq 1+\ptregs_offset(%rsp), %rbp -#endif -.endm -#ifdef CONFIG_PAGE_TABLE_ISOLATION /*
arch/x86/entry/entry_32.S +0 -16
@@ -245,22 +245,6 @@ .Lend_\@: .endm -/* - * This is a sneaky trick to help the unwinder find pt_regs on the stack. The - * frame pointer is replaced with an encoded pointer to pt_regs. The encoding - * is just clearing the MSB, which makes it an invalid stack address and is also - * a signal to the unwinder that it's a pt_regs pointer in disguise. - * - * NOTE: This macro must be used *after* SAVE_ALL because it corrupts the - * original rbp. - */ -.macro ENCODE_FRAME_POINTER -#ifdef CONFIG_FRAME_POINTER - mov %esp, %ebp - andl $0x7fffffff, %ebp -#endif -.endm - .macro RESTORE_INT_REGS popl %ebx popl %ecx
arch/x86/include/asm/frame.h +49 -0
67 lines not on this page · raw message
arch/x86/kernel/ftrace_32.S +3 -0
@@ -9,6 +9,7 @@ #include <asm/export.h> #include <asm/ftrace.h> #include <asm/nospec-branch.h> +#include <asm/frame.h> #ifdef CC_USING_FENTRY # define function_hook __fentry__
@@ -131,6 +132,8 @@ ENTRY(ftrace_regs_caller) pushl %ecx pushl %ebx + ENCODE_FRAME_POINTER + movl 12*4(%esp), %eax /* Load ip (1st parameter) */ subl $MCOUNT_INSN_SIZE, %eax /* Adjust ip */ #ifdef CC_USING_FENTRY
arch/x86/kernel/ftrace_64.S +3 -0
@@ -9,6 +9,7 @@ #include <asm/export.h> #include <asm/nospec-branch.h> #include <asm/unwind_hints.h> +#include <asm/frame.h> .code64 .section .entry.text, "ax"
@@ -222,6 +223,8 @@ GLOBAL(ftrace_regs_caller_op_ptr) leaq MCOUNT_REG_SIZE+8*2(%rsp), %rcx movq %rcx, RSP(%rsp) + ENCODE_FRAME_POINTER + /* regs go into 4th parameter */ leaq (%rsp), %rcx
drivers/crypto/atmel-sha.c +1 -6
@@ -1921,12 +1921,7 @@ static int atmel_sha_hmac_setkey(struct crypto_ahash *tfm, const u8 *key, {struct atmel_sha_hmac_ctx *hmac =crypto_ahash_ctx (tfm); -if (atmel_sha_hmac_key_set (&hmac->hkey, key, keylen)) { -crypto_ahash_set_flags (tfm,CRYPTO_TFM_RES_BAD_KEY_LEN ); -return -EINVAL ; - } - -return 0 ; +return atmel_sha_hmac_key_set (&hmac->hkey, key, keylen); }static int atmel_sha_hmac_init (struct ahash_request *req)
drivers/crypto/axis/artpec6_crypto.c +1 -1
@@ -1256,7 +1256,7 @@ static int artpec6_crypto_aead_set_key(struct crypto_aead *tfm, const u8 *key,if (len !=16 && len !=24 && len !=32 ) {crypto_aead_set_flags (tfm,CRYPTO_TFM_RES_BAD_KEY_LEN ); -return -1 ; +return -EINVAL ; } ctx->key_length = len;
drivers/gpio/gpio-zynq.c +23 -0
@@ -357,6 +357,28 @@ static int zynq_gpio_dir_out(struct gpio_chip *chip, unsigned int pin,return 0 ; } +/** +* zynq_gpio_get_direction - Read the direction of the specified GPIO pin +* @chip: gpio_chip instance to be worked on +* @pin: gpio pin number within the device +* +* This function returns the direction of the specified GPIO. +* +* Return: 0 for output, 1 for input +*/ +static int zynq_gpio_get_direction (struct gpio_chip *chip,unsigned int pin) +{ +u32 reg; +unsigned int bank_num, bank_pin_num; +struct zynq_gpio *gpio =gpiochip_get_data (chip); + +zynq_gpio_get_bank_pin (pin, &bank_num, &bank_pin_num, gpio); + + reg =readl_relaxed (gpio->base_addr +ZYNQ_GPIO_DIRM_OFFSET (bank_num)); + +return !(reg &BIT (bank_pin_num)); +} +/** * zynq_gpio_irq_mask - Disable the interrupts for a gpio pin * @irq_data: per irq and chip data passed down to chip functions
@@ -829,6 +851,7 @@ static int zynq_gpio_probe(struct platform_device *pdev) chip->free = zynq_gpio_free; chip->direction_input = zynq_gpio_dir_in; chip->direction_output = zynq_gpio_dir_out; + chip->get_direction = zynq_gpio_get_direction; chip->base =of_alias_get_id (pdev->dev.of_node,"gpio" ); chip->ngpio = gpio->p_data->ngpio;
drivers/infiniband/core/addr.c +1 -1
@@ -136,7 +136,7 @@ int ib_nl_handle_ip_res_resp(struct sk_buff *skb,if (ib_nl_is_good_ip_resp (nlh))ib_nl_process_good_ip_rsep (nlh); -return skb->len; +return 0 ; } static int ib_nl_ip_send_msg(struct rdma_dev_addr *dev_addr,
drivers/infiniband/core/sa_query.c +2 -2
@@ -1078,7 +1078,7 @@ int ib_nl_handle_set_timeout(struct sk_buff *skb, } settimeout_out: -return skb->len; +return 0 ; }static inline int ib_nl_is_good_resolve_resp (const struct nlmsghdr *nlh)
@@ -1149,7 +1149,7 @@ int ib_nl_handle_resolve_resp(struct sk_buff *skb, } resp_out: -return skb->len; +return 0 ; }static void free_sm_ah (struct kref *kref)
drivers/infiniband/core/uverbs_main.c +14 -18
@@ -273,7 +273,6 @@ void ib_uverbs_release_file(struct kref *ref) }static ssize_t ib_uverbs_event_read (struct ib_uverbs_event_queue *ev_queue, -struct ib_uverbs_file *uverbs_file,struct file *filp,char __user *buf,size_t count,loff_t *pos,size_t eventsz)
@@ -291,19 +290,16 @@ static ssize_t ib_uverbs_event_read(struct ib_uverbs_event_queue *ev_queue,if (wait_event_interruptible (ev_queue->poll_wait, (!list_empty (&ev_queue->event_list) || -/* The barriers built into wait_event_interruptible() -* and wake_up() guarentee this will see the null set -* without using RCU -*/ - !uverbs_file->device->ib_dev))) + ev_queue->is_closed)))return -ERESTARTSYS ; +spin_lock_irq (&ev_queue->lock); +/* If device was disassociated and no event exists set an error */ -if (list_empty (&ev_queue->event_list) && - !uverbs_file->device->ib_dev) +if (list_empty (&ev_queue->event_list) && ev_queue->is_closed) { +spin_unlock_irq (&ev_queue->lock);return -EIO ; - -spin_lock_irq (&ev_queue->lock); + } } event = list_entry(ev_queue->event_list.next, struct ib_uverbs_event, list);
@@ -338,8 +334,7 @@ static ssize_t ib_uverbs_async_event_read(struct file *filp, char __user *buf, {struct ib_uverbs_async_event_file *file = filp->private_data; -return ib_uverbs_event_read (&file->ev_queue, file->uverbs_file, filp, - buf, count, pos, +return ib_uverbs_event_read (&file->ev_queue, filp, buf, count, pos,sizeof (struct ib_uverbs_async_event_desc )); }
@@ -349,9 +344,8 @@ static ssize_t ib_uverbs_comp_event_read(struct file *filp, char __user *buf,struct ib_uverbs_completion_event_file *comp_ev_file = filp->private_data; -return ib_uverbs_event_read (&comp_ev_file->ev_queue, - comp_ev_file->uobj.ufile, filp, - buf, count, pos, +return ib_uverbs_event_read (&comp_ev_file->ev_queue, filp, buf, count, + pos,sizeof (struct ib_uverbs_comp_event_desc )); }
@@ -374,7 +368,9 @@ static __poll_t ib_uverbs_event_poll(struct ib_uverbs_event_queue *ev_queue,static __poll_t ib_uverbs_async_event_poll (struct file *filp,struct poll_table_struct *wait) { -return ib_uverbs_event_poll (filp->private_data, filp, wait); +struct ib_uverbs_async_event_file *file = filp->private_data; + +return ib_uverbs_event_poll (&file->ev_queue, filp, wait); } static __poll_t ib_uverbs_comp_event_poll(struct file *filp,
@@ -388,9 +384,9 @@ static __poll_t ib_uverbs_comp_event_poll(struct file *filp,static int ib_uverbs_async_event_fasync (int fd,struct file *filp,int on) { -struct ib_uverbs_event_queue *ev_queue = filp->private_data; +struct ib_uverbs_async_event_file *file = filp->private_data; -return fasync_helper (fd, filp, on, &ev_queue->async_queue); +return fasync_helper (fd, filp, on, &file->ev_queue.async_queue); }static int ib_uverbs_comp_event_fasync (int fd,struct file *filp,int on)
drivers/infiniband/hw/mlx4/main.c +16 -4
@@ -246,6 +246,13 @@ static int mlx4_ib_update_gids(struct gid_entry *gids,return mlx4_ib_update_gids_v1 (gids, ibdev, port_num); } +static void free_gid_entry (struct gid_entry *entry) +{ +memset (&entry->gid,0 ,sizeof (entry->gid)); +kfree (entry->ctx); + entry->ctx =NULL ; +} +static int mlx4_ib_add_gid (const struct ib_gid_attr *attr,void **context) {struct mlx4_ib_dev *ibdev =to_mdev (attr->device);
@@ -306,6 +313,8 @@ static int mlx4_ib_add_gid(const struct ib_gid_attr *attr, void **context) GFP_ATOMIC);if (!gids) { ret = -ENOMEM ; + *context =NULL ; +free_gid_entry (&port_gid_table->gids[free]); }else {for (i =0 ; i <MLX4_MAX_PORT_GIDS ; i++) {memcpy (&gids[i].gid, &port_gid_table->gids[i].gid,sizeof (union ib_gid ));
@@ -317,6 +326,12 @@ static int mlx4_ib_add_gid(const struct ib_gid_attr *attr, void **context)if (!ret && hw_update) { ret =mlx4_ib_update_gids (gids, ibdev, attr->port_num); +if (ret) { +spin_lock_bh (&iboe->lock); + *context =NULL ; +free_gid_entry (&port_gid_table->gids[free]); +spin_unlock_bh (&iboe->lock); + }kfree (gids); }
@@ -346,10 +361,7 @@ static int mlx4_ib_del_gid(const struct ib_gid_attr *attr, void **context)if (!ctx->refcount) {unsigned int real_index = ctx->real_index; -memset (&port_gid_table->gids[real_index].gid,0 , -sizeof (port_gid_table->gids[real_index].gid)); -kfree (port_gid_table->gids[real_index].ctx); - port_gid_table->gids[real_index].ctx =NULL ; +free_gid_entry (&port_gid_table->gids[real_index]); hw_update =1 ; } }
drivers/iommu/arm-smmu-v3.c +1 -0
@@ -810,6 +810,7 @@ static int arm_smmu_cmdq_build_cmd(u64 *cmd, struct arm_smmu_cmdq_ent *ent) cmd[1 ] |=FIELD_PREP (CMDQ_CFGI_1_RANGE ,31 );break ;case CMDQ_OP_TLBI_NH_VA : + cmd[0 ] |=FIELD_PREP (CMDQ_TLBI_0_VMID , ent->tlbi.vmid); cmd[0 ] |=FIELD_PREP (CMDQ_TLBI_0_ASID , ent->tlbi.asid); cmd[1 ] |=FIELD_PREP (CMDQ_TLBI_1_LEAF , ent->tlbi.leaf); cmd[1 ] |= ent->tlbi.addr &CMDQ_TLBI_1_VA_MASK ;
drivers/media/i2c/adv748x/adv748x.h +4 -4
@@ -361,10 +361,10 @@ int adv748x_write_block(struct adv748x_state *state, int client_page,#define io_read (s, r) adv748x_read(s, ADV748X_PAGE_IO, r)#define io_write (s, r, v) adv748x_write(s, ADV748X_PAGE_IO, r, v) -#define io_clrset (s, r, m, v) io_write(s, r, (io_read(s, r) & ~m) | v) +#define io_clrset (s, r, m, v) io_write(s, r, (io_read(s, r) & ~(m)) | (v))#define hdmi_read (s, r) adv748x_read(s, ADV748X_PAGE_HDMI, r) -#define hdmi_read16 (s, r, m) (((hdmi_read(s, r) << 8) | hdmi_read(s, r+1)) & m) +#define hdmi_read16 (s, r, m) (((hdmi_read(s, r) << 8) | hdmi_read(s, (r)+1)) & (m))#define hdmi_write (s, r, v) adv748x_write(s, ADV748X_PAGE_HDMI, r, v)#define repeater_read (s, r) adv748x_read(s, ADV748X_PAGE_REPEATER, r)
@@ -372,11 +372,11 @@ int adv748x_write_block(struct adv748x_state *state, int client_page,#define sdp_read (s, r) adv748x_read(s, ADV748X_PAGE_SDP, r)#define sdp_write (s, r, v) adv748x_write(s, ADV748X_PAGE_SDP, r, v) -#define sdp_clrset (s, r, m, v) sdp_write(s, r, (sdp_read(s, r) & ~m) | v) +#define sdp_clrset (s, r, m, v) sdp_write(s, r, (sdp_read(s, r) & ~(m)) | (v))#define cp_read (s, r) adv748x_read(s, ADV748X_PAGE_CP, r)#define cp_write (s, r, v) adv748x_write(s, ADV748X_PAGE_CP, r, v) -#define cp_clrset (s, r, m, v) cp_write(s, r, (cp_read(s, r) & ~m) | v) +#define cp_clrset (s, r, m, v) cp_write(s, r, (cp_read(s, r) & ~(m)) | (v))#define txa_read (s, r) adv748x_read(s, ADV748X_PAGE_TXA, r)#define txb_read (s, r) adv748x_read(s, ADV748X_PAGE_TXB, r)
drivers/mtd/nand/onenand/onenand_base.c +41 -41
109 lines not on this page · raw message
drivers/mtd/parsers/sharpslpart.c +2 -2
@@ -165,10 +165,10 @@ static int sharpsl_nand_get_logical_num(u8 *oob)static int sharpsl_nand_init_ftl (struct mtd_info *mtd,struct sharpsl_ftl *ftl) { -unsigned int block_num, log_num, phymax; +unsigned int block_num, phymax; +int i, ret, log_num;loff_t block_adr;u8 *oob; -int i, ret; oob =kzalloc (mtd->oobsize,GFP_KERNEL );if (!oob)
drivers/net/wireless/ath/ath10k/pci.c +17 -2
@@ -1613,11 +1613,22 @@ static int ath10k_pci_dump_memory_reg(struct ath10k *ar, {struct ath10k_pci *ar_pci =ath10k_pci_priv (ar);u32 i; +int ret; + +mutex_lock (&ar->conf_mutex); +if (ar->state !=ATH10K_STATE_ON ) { +ath10k_warn (ar,"Skipping pci_dump_memory_reg invalid state\n" ); + ret = -EIO ; + goto done; + }for (i =0 ; i < region->len; i +=4 ) *(u32 *)(buf + i) =ioread32 (ar_pci->mem + region->start + i); -return region->len; + ret = region->len; +done: +mutex_unlock (&ar->conf_mutex); +return ret; }/* if an error happened returns < 0, otherwise the length */
@@ -1713,7 +1724,11 @@ static void ath10k_pci_dump_memory(struct ath10k *ar, count =ath10k_pci_dump_memory_sram (ar, current_region, buf);break ;case ATH10K_MEM_REGION_TYPE_IOREG : - count =ath10k_pci_dump_memory_reg (ar, current_region, buf); + ret =ath10k_pci_dump_memory_reg (ar, current_region, buf); +if (ret <0 ) +break ; + + count = ret;break ;default : ret =ath10k_pci_dump_memory_generic (ar, current_region, buf);
drivers/net/wireless/marvell/libertas/cfg.c +2 -0
@@ -1785,6 +1785,8 @@ static int lbs_ibss_join_existing(struct lbs_private *priv, rates_max = rates_eid[1 ];if (rates_max >MAX_RATES ) {lbs_deb_join ("invalid rates" ); +rcu_read_unlock (); + ret = -EINVAL ; goto out; } rates = cmd.bss.rates;
drivers/net/wireless/marvell/mwifiex/scan.c +7 -0
@@ -2894,6 +2894,13 @@ mwifiex_cmd_append_vsie_tlv(struct mwifiex_private *priv, vs_param_set->header.len =cpu_to_le16 ((((u16 ) priv->vs_ie[id].ie[1 ]) &0x00FF ) +2 ); +if (le16_to_cpu (vs_param_set->header.len) > +MWIFIEX_MAX_VSIE_LEN ) { +mwifiex_dbg (priv->adapter,ERROR , +"Invalid param length!\n" ); +break ; + } +memcpy (vs_param_set->ie, priv->vs_ie[id].ie,le16_to_cpu (vs_param_set->header.len)); *buffer += le16_to_cpu(vs_param_set->header.len) +
drivers/net/wireless/marvell/mwifiex/wmm.c +4 -0
@@ -977,6 +977,10 @@ int mwifiex_ret_wmm_get_status(struct mwifiex_private *priv,"WMM Parameter Set Count: %d\n" , wmm_param_ie->qos_info_bitmap & mask); +if (wmm_param_ie->vend_hdr.len +2 > +sizeof (struct ieee_types_wmm_parameter )) +break ; +memcpy ((u8 *) &priv->curr_bss_params.bss_descriptor. wmm_ie, wmm_param_ie, wmm_param_ie->vend_hdr.len +2 );
drivers/pci/iov.c +4 -5
@@ -188,10 +188,10 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)sprintf (buf,"virtfn%u" , id); rc =sysfs_create_link (&dev->dev.kobj, &virtfn->dev.kobj, buf);if (rc) - goto failed2; + goto failed1; rc =sysfs_create_link (&virtfn->dev.kobj, &dev->dev.kobj,"physfn" );if (rc) - goto failed3; + goto failed2;kobject_uevent (&virtfn->dev.kobj,KOBJ_CHANGE );
@@ -199,11 +199,10 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)return 0 ; -failed3: -sysfs_remove_link (&dev->dev.kobj, buf); failed2: -pci_stop_and_remove_bus_device (virtfn); +sysfs_remove_link (&dev->dev.kobj, buf); failed1: +pci_stop_and_remove_bus_device (virtfn);pci_dev_put (dev); failed0:virtfn_remove_bus (dev->bus, bus);
drivers/pci/setup-bus.c +16 -4
@@ -1820,12 +1820,18 @@ void pci_assign_unassigned_root_bus_resources(struct pci_bus *bus)/* restore size and flags */ list_for_each_entry (fail_res, &fail_head, list) {struct resource *res = fail_res->res; +int idx; res->start = fail_res->start; res->end = fail_res->end; res->flags = fail_res->flags; -if (fail_res->dev->subordinate) - res->flags =0 ; + +if (pci_is_bridge (fail_res->dev)) { + idx = res - &fail_res->dev->resource[0 ]; +if (idx >=PCI_BRIDGE_RESOURCES && + idx <=PCI_BRIDGE_RESOURCE_END ) + res->flags =0 ; + } }free_list (&fail_head);
@@ -2066,12 +2072,18 @@ void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge)/* restore size and flags */ list_for_each_entry (fail_res, &fail_head, list) {struct resource *res = fail_res->res; +int idx; res->start = fail_res->start; res->end = fail_res->end; res->flags = fail_res->flags; -if (fail_res->dev->subordinate) - res->flags =0 ; + +if (pci_is_bridge (fail_res->dev)) { + idx = res - &fail_res->dev->resource[0 ]; +if (idx >=PCI_BRIDGE_RESOURCES && + idx <=PCI_BRIDGE_RESOURCE_END ) + res->flags =0 ; + } }free_list (&fail_head);
drivers/pci/switch/switchtec.c +1 -1
@@ -1186,7 +1186,7 @@ static int switchtec_init_isr(struct switchtec_dev *stdev)if (nvecs <0 )return nvecs; - event_irq =ioread32 (&stdev->mmio_part_cfg->vep_vector_number); + event_irq =ioread16 (&stdev->mmio_part_cfg->vep_vector_number);if (event_irq <0 || event_irq >= nvecs)return -EFAULT ;
drivers/pinctrl/sh-pfc/pfc-r8a7778.c +2 -2
@@ -2325,7 +2325,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = {FN_ATAG0_A ,0 ,FN_REMOCON_B ,0 ,/* IP0_11_8 [4] */ FN_SD1_DAT2_A ,FN_MMC_D2 ,0 ,FN_BS , -FN_ATADIR0_A ,0 ,FN_SDSELF_B ,0 , +FN_ATADIR0_A ,0 ,FN_SDSELF_A ,0 ,FN_PWM4_B ,0 ,0 ,0 ,0 ,0 ,0 ,0 , /* IP0_7_5 [3] */
@@ -2367,7 +2367,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = {FN_TS_SDAT0_A ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,/* IP1_10_8 [3] */ -FN_SD1_CLK_B ,FN_MMC_D6 ,0 ,FN_A24 , +FN_SD1_CD_A ,FN_MMC_D6 ,0 ,FN_A24 ,FN_DREQ1_A ,0 ,FN_HRX0_B ,FN_TS_SPSYNC0_A ,/* IP1_7_5 [3] */ FN_A23, FN_HTX0_B, FN_TX2_B, FN_DACK2_A,
drivers/platform/x86/intel_mid_powerbtn.c +3 -2
@@ -158,9 +158,10 @@ static int mid_pb_probe(struct platform_device *pdev)input_set_capability (input,EV_KEY ,KEY_POWER ); - ddata = (struct mid_pb_ddata *)id->driver_data; + ddata =devm_kmemdup (&pdev->dev, (void *)id->driver_data, +sizeof (*ddata),GFP_KERNEL );if (!ddata) -return -ENODATA ; +return -ENOMEM ; ddata->dev = &pdev->dev; ddata->irq = irq;
drivers/rtc/rtc-cmos.c +1 -1
@@ -854,7 +854,7 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) rtc_cmos_int_handler = cmos_interrupt; retval =request_irq (rtc_irq, rtc_cmos_int_handler, -IRQF_SHARED ,dev_name (&cmos_rtc.rtc->dev), +0 ,dev_name (&cmos_rtc.rtc->dev), cmos_rtc.rtc);if (retval <0 ) {dev_dbg (dev,"IRQ %d is already in use\n" , rtc_irq);
drivers/rtc/rtc-hym8563.c +1 -1
@@ -105,7 +105,7 @@ static int hym8563_rtc_read_time(struct device *dev, struct rtc_time *tm)if (!hym8563->valid) {dev_warn (&client->dev,"no valid clock/calendar values available\n" ); -return -EPERM ; +return -EINVAL ; } ret =i2c_smbus_read_i2c_block_data (client,HYM8563_SEC ,7 , buf);
drivers/scsi/megaraid/megaraid_sas_base.c +2 -1
@@ -4177,7 +4177,8 @@ dcmd_timeout_ocr_possible(struct megasas_instance *instance) {if (instance->adapter_type ==MFI_SERIES )return KILL_ADAPTER ;else if (instance->unload || -test_bit (MEGASAS_FUSION_IN_RESET , &instance->reset_flags)) +test_bit (MEGASAS_FUSION_OCR_NOT_POSSIBLE , + &instance->reset_flags))return IGNORE_TIMEOUT ;else return INITIATE_OCR ;
drivers/scsi/megaraid/megaraid_sas_fusion.c +2 -1
@@ -4558,6 +4558,7 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)if (instance->requestorId && !instance->skip_heartbeat_timer_del)del_timer_sync (&instance->sriov_heartbeat_timer);set_bit (MEGASAS_FUSION_IN_RESET , &instance->reset_flags); +set_bit (MEGASAS_FUSION_OCR_NOT_POSSIBLE , &instance->reset_flags);atomic_set (&instance->adprecovery,MEGASAS_ADPRESET_SM_POLLING ); instance->instancet->disable_intr (instance);megasas_sync_irqs ((unsigned long )instance);
@@ -4747,7 +4748,7 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)atomic_set (&instance->adprecovery,MEGASAS_HBA_OPERATIONAL ); } out: -clear_bit (MEGASAS_FUSION_IN_RESET , &instance->reset_flags); +clear_bit (MEGASAS_FUSION_OCR_NOT_POSSIBLE , &instance->reset_flags);mutex_unlock (&instance->reset_mutex);return retval; }
drivers/scsi/megaraid/megaraid_sas_fusion.h +1 -0
@@ -102,6 +102,7 @@ enum MR_RAID_FLAGS_IO_SUB_TYPE {#define MEGASAS_FP_CMD_LEN 16#define MEGASAS_FUSION_IN_RESET 0 +#define MEGASAS_FUSION_OCR_NOT_POSSIBLE 1#define THRESHOLD_REPLY_COUNT 50#define RAID_1_PEER_CMDS 2#define JBOD_MAPS_COUNT 2
drivers/scsi/ufs/ufshcd.c +2 -1
@@ -6685,7 +6685,8 @@ static int ufshcd_probe_hba(struct ufs_hba *hba)ufshcd_init_icc_levels (hba);/* Add required well known logical units to scsi mid layer */ -if (ufshcd_scsi_add_wlus (hba)) + ret =ufshcd_scsi_add_wlus (hba); +if (ret) goto out;/* Initialize devfreq after UFS device is detected */
drivers/spi/spi-mem.c +48 -6
79 lines not on this page · raw message
drivers/tty/serial/xilinx_uartps.c +11 -6
@@ -26,6 +26,7 @@#include <linux/of.h> #include <linux/module.h> #include <linux/pm_runtime.h> +#include <linux/iopoll.h> #define CDNS_UART_TTY_NAME "ttyPS"#define CDNS_UART_NAME "xuartps"
@@ -34,6 +35,7 @@#define CDNS_UART_NR_PORTS 2#define CDNS_UART_FIFO_SIZE 64/* FIFO size */ #define CDNS_UART_REGISTER_SPACE 0x1000 +#define TX_TIMEOUT 500000/* Rx Trigger level */ static int rx_trigger_level =56 ;
@@ -681,18 +683,21 @@ static void cdns_uart_set_termios(struct uart_port *port,unsigned int cval =0 ;unsigned int baud, minbaud, maxbaud;unsigned long flags; -unsigned int ctrl_reg, mode_reg; - -spin_lock_irqsave (&port->lock, flags); +unsigned int ctrl_reg, mode_reg, val; +int err;/* Wait for the transmit FIFO to empty before making changes */ if (!(readl (port->membase +CDNS_UART_CR ) &CDNS_UART_CR_TX_DIS )) { -while (!(readl (port->membase +CDNS_UART_SR ) & -CDNS_UART_SR_TXEMPTY )) { -cpu_relax (); + err =readl_poll_timeout (port->membase +CDNS_UART_SR , + val, (val &CDNS_UART_SR_TXEMPTY ), +1000 ,TX_TIMEOUT ); +if (err) { +dev_err (port->dev,"timed out waiting for tx empty" ); +return ; } } +spin_lock_irqsave (&port->lock, flags);/* Disable the TX and RX to set baud rate */ ctrl_reg =readl (port->membase +CDNS_UART_CR );
fs/nfs/Kconfig +1 -1
@@ -89,7 +89,7 @@ config NFS_V4 config NFS_SWAP bool "Provide swap over NFS support" default n - depends on NFS_FS + depends on NFS_FS && SWAP select SUNRPC_SWAP help This option enables swapon to work on files located on NFS mounts.
fs/nfs/direct.c +2 -2
@@ -261,10 +261,10 @@ static int nfs_direct_cmp_commit_data_verf(struct nfs_direct_req *dreq, data->ds_commit_index);/* verifier not set so always fail */ -if (verfp->committed <0 ) +if (verfp->committed <0 || data->res.verf->committed <=NFS_UNSTABLE )return 1 ; -return nfs_direct_cmp_verf (verfp, &data->verf); +return nfs_direct_cmp_verf (verfp, data->res.verf); }/**
fs/nfs/nfs3xdr.c +4 -1
@@ -2380,6 +2380,7 @@ static int nfs3_xdr_dec_commit3res(struct rpc_rqst *req, void *data) {struct nfs_commitres *result = data; +struct nfs_writeverf *verf = result->verf;enum nfs_stat status;int error;
@@ -2392,7 +2393,9 @@ static int nfs3_xdr_dec_commit3res(struct rpc_rqst *req, result->op_status = status;if (status !=NFS3_OK ) goto out_status; - error =decode_writeverf3 (xdr, &result->verf->verifier); + error =decode_writeverf3 (xdr, &verf->verifier); +if (!error) + verf->committed =NFS_FILE_SYNC ; out:return error; out_status:
fs/nfs/nfs4proc.c +5 -0
@@ -3089,6 +3089,11 @@ static struct nfs4_state *nfs4_do_open(struct inode *dir, exception.retry =1 ;continue ; } +if (status == -NFS4ERR_EXPIRED ) { +nfs4_schedule_lease_recovery (server->nfs_client); + exception.retry =1 ; +continue ; + }if (status == -EAGAIN ) {/* We must have found a delegation */ exception.retry =1 ;
fs/nfs/nfs4xdr.c +4 -1
@@ -4439,11 +4439,14 @@ static int decode_write_verifier(struct xdr_stream *xdr, struct nfs_write_verifistatic int decode_commit (struct xdr_stream *xdr,struct nfs_commitres *res) { +struct nfs_writeverf *verf = res->verf;int status; status =decode_op_hdr (xdr,OP_COMMIT );if (!status) - status =decode_write_verifier (xdr, &res->verf->verifier); + status =decode_write_verifier (xdr, &verf->verifier); +if (!status) + verf->committed =NFS_FILE_SYNC ;return status; }
fs/nfs/pnfs_nfs.c +3 -4
@@ -30,12 +30,11 @@ EXPORT_SYMBOL_GPL(pnfs_generic_rw_release);/* Fake up some data that will cause nfs_commit_release to retry the writes. */ void pnfs_generic_prepare_to_resend_writes (struct nfs_commit_data *data) { -struct nfs_page *first =nfs_list_entry (data->pages.next); +struct nfs_writeverf *verf = data->res.verf; data->task.tk_status =0 ; -memcpy (&data->verf.verifier, &first->wb_verf, -sizeof (data->verf.verifier)); - data->verf.verifier.data[0 ]++;/* ensure verifier mismatch */ +memset (&verf->verifier,0 ,sizeof (verf->verifier)); + verf->committed =NFS_UNSTABLE ; }EXPORT_SYMBOL_GPL (pnfs_generic_prepare_to_resend_writes);
fs/nfs/write.c +11 -1
@@ -240,7 +240,15 @@ static void nfs_grow_file(struct page *page, unsigned int offset, unsigned int c/* A writeback failed: mark the page as bad, and invalidate the page cache */ static void nfs_set_pageerror (struct address_space *mapping) { +struct inode *inode = mapping->host; +nfs_zap_mapping (mapping->host, mapping); +/* Force file size revalidation */ +spin_lock (&inode->i_lock); +NFS_I (inode)->cache_validity |=NFS_INO_REVAL_FORCED | +NFS_INO_REVAL_PAGECACHE | +NFS_INO_INVALID_SIZE ; +spin_unlock (&inode->i_lock); }/*
@@ -1806,6 +1814,7 @@ static void nfs_commit_done(struct rpc_task *task, void *calldata)static void nfs_commit_release_pages (struct nfs_commit_data *data) { +const struct nfs_writeverf *verf = data->res.verf;struct nfs_page *req;int status = data->task.tk_status;struct nfs_commit_info cinfo;
@@ -1832,7 +1841,8 @@ static void nfs_commit_release_pages(struct nfs_commit_data *data)/* Okay, COMMIT succeeded, apparently. Check the verifier * returned by the server against all stored verfs. */ -if (!nfs_write_verifier_cmp (&req->wb_verf, &data->verf.verifier)) { +if (verf->committed >NFS_UNSTABLE && + !nfs_write_verifier_cmp (&req->wb_verf, &verf->verifier)) {/* We have a match */ if (req->wb_page)nfs_inode_remove_request (req);
include/rdma/ib_verbs.h +3 -0
@@ -3864,6 +3864,9 @@ static inline int ib_check_mr_access(int flags) !(flags & IB_ACCESS_LOCAL_WRITE))return -EINVAL ; +if (flags & ~IB_ACCESS_SUPPORTED ) +return -EINVAL ; +return 0 ; }
kernel/padata.c +1 -0
@@ -510,6 +510,7 @@ static struct parallel_data *padata_alloc_pd(struct padata_instance *pinst,atomic_set (&pd->seq_nr,-1 );atomic_set (&pd->reorder_objects,0 );atomic_set (&pd->refcnt,1 ); + pd->pinst = pinst;spin_lock_init (&pd->lock);return pd;
net/vmw_vsock/hyperv_transport.c +9 -59
112 lines not on this page · raw message
sound/soc/soc-pcm.c +68 -27
126 lines not on this page · raw message
tools/power/acpi/Makefile.config +1 -1
@@ -18,7 +18,7 @@ include $(srctree)/../../scripts/Makefile.include OUTPUT=$(srctree)/ ifeq ("$(origin O)", "command line") - OUTPUT := $(O)/power/acpi/ + OUTPUT := $(O)/tools/power/acpi/ endif #$(info Determined 'OUTPUT' to be $(OUTPUT))
virt/kvm/arm/aarch32.c +10 -4
@@ -26,6 +26,10 @@#include <asm/kvm_emulate.h> #include <asm/kvm_hyp.h> +#define DFSR_FSC_EXTABT_LPAE 0x10 +#define DFSR_FSC_EXTABT_nLPAE 0x08 +#define DFSR_LPAE BIT(9) +/* * Table taken from ARMv8 ARM DDI0487B-B, table G1-10. */
@@ -192,10 +196,12 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,/* Give the guest an IMPLEMENTATION DEFINED exception */ is_lpae = (vcpu_cp15 (vcpu, c2_TTBCR) >>31 ); -if (is_lpae) - *fsr =1 <<9 |0x34 ; -else - *fsr =0x14 ; +if (is_lpae) { + *fsr =DFSR_LPAE |DFSR_FSC_EXTABT_LPAE ; + }else { +/* no need to shuffle FS[4] into DFSR[10] as its 0 */ + *fsr = DFSR_FSC_EXTABT_nLPAE; + } }void kvm_inject_dabt32 (struct kvm_vcpu *vcpu,unsigned long addr)
virt/kvm/arm/mmu.c +2 -1
@@ -1925,7 +1925,8 @@ int kvm_test_age_hva(struct kvm *kvm, unsigned long hva)if (!kvm->arch.pgd)return 0 ;trace_kvm_test_age_hva (hva); -return handle_hva_to_gpa (kvm, hva, hva, kvm_test_age_hva_handler,NULL ); +return handle_hva_to_gpa (kvm, hva, hva +PAGE_SIZE , + kvm_test_age_hva_handler,NULL ); }void kvm_mmu_free_memory_caches (struct kvm_vcpu *vcpu)
virt/kvm/arm/pmu.c +3 -0
@@ -316,6 +316,9 @@ void kvm_pmu_software_increment(struct kvm_vcpu *vcpu, u64 val)if (val ==0 )return ; +if (!(__vcpu_sys_reg (vcpu,PMCR_EL0 ) &ARMV8_PMU_PMCR_E )) +return ; + enable =__vcpu_sys_reg (vcpu,PMCNTENSET_EL0 );for (i =0 ; i <ARMV8_PMU_CYCLE_IDX ; i++) {if (!(val &BIT (i)))
virt/kvm/arm/vgic/vgic-its.c +2 -1
@@ -2292,7 +2292,8 @@ static int vgic_its_restore_cte(struct vgic_its *its, gpa_t gpa, int esz) target_addr = (u32)(val >>KVM_ITS_CTE_RDBASE_SHIFT ); coll_id = val &KVM_ITS_CTE_ICID_MASK ; -if (target_addr >=atomic_read (&kvm->online_vcpus)) +if (target_addr !=COLLECTION_NOT_MAPPED && + target_addr >=atomic_read (&kvm->online_vcpus))return -EINVAL ; collection =find_collection (its, coll_id);