Linux 4.19.207
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/devices.txt +3 -3
@@ -2993,10 +2993,10 @@ 65 = /dev/infiniband/issm1 Second InfiniBand IsSM device ... 127 = /dev/infiniband/issm63 63rd InfiniBand IsSM device - 128 = /dev/infiniband/uverbs0 First InfiniBand verbs device - 129 = /dev/infiniband/uverbs1 Second InfiniBand verbs device + 192 = /dev/infiniband/uverbs0 First InfiniBand verbs device + 193 = /dev/infiniband/uverbs1 Second InfiniBand verbs device ... - 159 = /dev/infiniband/uverbs31 31st InfiniBand verbs device + 223 = /dev/infiniband/uverbs31 31st InfiniBand verbs device 232 char Biometric Devices 0 = /dev/biometric/sensor0/fingerprint first fingerprint sensor on first device
Documentation/devicetree/bindings/mtd/gpmc-nand.txt +1 -1
@@ -122,7 +122,7 @@ on various other factors also like; so the device should have enough free bytes available its OOB/Spare area to accommodate ECC for entire page. In general following expression helps in determining if given device can accommodate ECC syndrome: - "2 + (PAGESIZE / 512) * ECC_BYTES" >= OOBSIZE" + "2 + (PAGESIZE / 512) * ECC_BYTES" <= OOBSIZE" where OOBSIZE number of bytes in OOB/spare area PAGESIZE number of bytes in main-area of device page
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 206 +SUBLEVEL = 207 EXTRAVERSION = NAME = "People's Front"
arch/arc/mm/cache.c +1 -1
@@ -1112,7 +1112,7 @@ void clear_user_page(void *to, unsigned long u_vaddr, struct page *page)clear_page (to);clear_bit (PG_dc_clean, &page->flags); } - +EXPORT_SYMBOL (clear_user_page);/********************************************************************** * Explicit Cache flush request from user space via syscall
arch/arm/boot/compressed/Makefile +2 -0
@@ -90,6 +90,8 @@ $(addprefix $(obj)/,$(libfdt_objs) atags_to_fdt.o): \ $(addprefix $(obj)/,$(libfdt_hdrs)) ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y) +CFLAGS_REMOVE_atags_to_fdt.o += -Wframe-larger-than=${CONFIG_FRAME_WARN} +CFLAGS_atags_to_fdt.o += -Wframe-larger-than=1280 OBJS += $(libfdt_objs) atags_to_fdt.o endif
arch/arm/boot/dts/imx53-ppd.dts +13 -10
@@ -70,6 +70,12 @@ clock-frequency = <11289600>; }; + achc_24M: achc-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + sgtlsound: sound { compatible = "fsl,imx53-cpuvo-sgtl5000", "fsl,imx-audio-sgtl5000";
@@ -287,16 +293,13 @@ &gpio4 12 GPIO_ACTIVE_LOW>; status = "okay"; - spidev0: spi@0 { - compatible = "ge,achc"; - reg = <0>; - spi-max-frequency = <1000000>; - }; - - spidev1: spi@1 { - compatible = "ge,achc"; - reg = <1>; - spi-max-frequency = <1000000>; + spidev0: spi@1 { + compatible = "ge,achc", "nxp,kinetis-k20"; + reg = <1>, <0>; + vdd-supply = <®_3v3>; + vdda-supply = <®_3v3>; + clocks = <&achc_24M>; + reset-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>; }; gpioxra0: gpio@2 {
arch/arm/boot/dts/qcom-apq8064.dtsi +3 -3
@@ -1296,9 +1296,9 @@ <&mmcc DSI1_BYTE_CLK>, <&mmcc DSI_PIXEL_CLK>, <&mmcc DSI1_ESC_CLK>; - clock-names = "iface_clk", "bus_clk", "core_mmss_clk", - "src_clk", "byte_clk", "pixel_clk", - "core_clk"; + clock-names = "iface", "bus", "core_mmss", + "src", "byte", "pixel", + "core"; assigned-clocks = <&mmcc DSI1_BYTE_SRC>, <&mmcc DSI1_ESC_SRC>,
arch/arm/boot/dts/tegra20-tamonten.dtsi +7 -7
@@ -185,8 +185,9 @@ nvidia,pins = "ata", "atb", "atc", "atd", "ate", "cdev1", "cdev2", "dap1", "dtb", "gma", "gmb", "gmc", "gmd", "gme", "gpu7", - "gpv", "i2cp", "pta", "rm", "slxa", - "slxk", "spia", "spib", "uac"; + "gpv", "i2cp", "irrx", "irtx", "pta", + "rm", "slxa", "slxk", "spia", "spib", + "uac"; nvidia,pull = <TEGRA_PIN_PULL_NONE>; nvidia,tristate = <TEGRA_PIN_DISABLE>; };
@@ -211,7 +212,7 @@ conf_ddc { nvidia,pins = "ddc", "dta", "dtd", "kbca", "kbcb", "kbcc", "kbcd", "kbce", "kbcf", - "sdc"; + "sdc", "uad", "uca"; nvidia,pull = <TEGRA_PIN_PULL_UP>; nvidia,tristate = <TEGRA_PIN_DISABLE>; };
@@ -221,10 +222,9 @@ "lvp0", "owc", "sdb"; nvidia,tristate = <TEGRA_PIN_ENABLE>; }; - conf_irrx { - nvidia,pins = "irrx", "irtx", "sdd", "spic", - "spie", "spih", "uaa", "uab", "uad", - "uca", "ucb"; + conf_sdd { + nvidia,pins = "sdd", "spic", "spie", "spih", + "uaa", "uab", "ucb"; nvidia,pull = <TEGRA_PIN_PULL_UP>; nvidia,tristate = <TEGRA_PIN_ENABLE>; };
arch/arm/kernel/Makefile +5 -1
@@ -17,10 +17,14 @@ CFLAGS_REMOVE_return_address.o = -pg # Object file lists. obj-y := elf.o entry-common.o irq.o opcodes.o \ - process.o ptrace.o reboot.o return_address.o \ + process.o ptrace.o reboot.o \ setup.o signal.o sigreturn_codes.o \ stacktrace.o sys_arm.o time.o traps.o +ifneq ($(CONFIG_ARM_UNWIND),y) +obj-$(CONFIG_FRAME_POINTER) += return_address.o +endif + obj-$(CONFIG_ATAGS) += atags_parse.o obj-$(CONFIG_ATAGS_PROC) += atags_proc.o obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o
arch/arm/kernel/return_address.c +0 -4
@@ -10,8 +10,6 @@*/ #include <linux/export.h> #include <linux/ftrace.h> - -#if defined(CONFIG_FRAME_POINTER ) && !defined(CONFIG_ARM_UNWIND )#include <linux/sched.h> #include <asm/stacktrace.h>
@@ -56,6 +54,4 @@ void *return_address(unsigned int level)return NULL ; } -#endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) */ -EXPORT_SYMBOL_GPL (return_address);
arch/arm/mach-imx/mmdc.c +10 -4
@@ -109,6 +109,7 @@ struct mmdc_pmu {struct perf_event *mmdc_events[MMDC_NUM_COUNTERS ];struct hlist_node node;struct fsl_mmdc_devtype_data *devtype_data; +struct clk *mmdc_ipg_clk; };/*
@@ -474,11 +475,13 @@ static int imx_mmdc_remove(struct platform_device *pdev)cpuhp_state_remove_instance_nocalls (cpuhp_mmdc_state, &pmu_mmdc->node);perf_pmu_unregister (&pmu_mmdc->pmu);iounmap (pmu_mmdc->mmdc_base); +clk_disable_unprepare (pmu_mmdc->mmdc_ipg_clk);kfree (pmu_mmdc);return 0 ; } -static int imx_mmdc_perf_init (struct platform_device *pdev,void __iomem *mmdc_base) +static int imx_mmdc_perf_init (struct platform_device *pdev,void __iomem *mmdc_base, +struct clk *mmdc_ipg_clk) {struct mmdc_pmu *pmu_mmdc;char *name;
@@ -506,6 +509,7 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b } mmdc_num =mmdc_pmu_init (pmu_mmdc, mmdc_base, &pdev->dev); + pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;if (mmdc_num ==0 ) name ="mmdc" ;else
@@ -541,7 +545,7 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b#else #define imx_mmdc_remove NULL -#define imx_mmdc_perf_init (pdev, mmdc_base) 0 +#define imx_mmdc_perf_init (pdev, mmdc_base, mmdc_ipg_clk) 0#endif static int imx_mmdc_probe (struct platform_device *pdev)
@@ -579,9 +583,11 @@ static int imx_mmdc_probe(struct platform_device *pdev) val &= ~(1 <<BP_MMDC_MAPSR_PSD );writel_relaxed (val, reg); - err =imx_mmdc_perf_init (pdev, mmdc_base); -if (err) + err =imx_mmdc_perf_init (pdev, mmdc_base, mmdc_ipg_clk); +if (err) {iounmap (mmdc_base); +clk_disable_unprepare (mmdc_ipg_clk); + }return err; }
arch/arm/net/bpf_jit_32.c +3 -0
@@ -1578,6 +1578,9 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx) rn =arm_bpf_get_reg32 (src_lo, tmp2[1 ], ctx);emit_ldx_r (dst, rn, off, ctx,BPF_SIZE (code));break ; +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +break ;/* ST: *(size *)(dst + off) = imm */ case BPF_ST |BPF_MEM |BPF_W :case BPF_ST |BPF_MEM |BPF_H :
arch/arm64/boot/dts/exynos/exynos7.dtsi +1 -1
@@ -91,7 +91,7 @@ #address-cells = <0>; interrupt-controller; reg = <0x11001000 0x1000>, - <0x11002000 0x1000>, + <0x11002000 0x2000>, <0x11004000 0x2000>, <0x11006000 0x2000>; };
arch/arm64/boot/dts/qcom/ipq8074-hk01.dts +1 -1
@@ -28,7 +28,7 @@ stdout-path = "serial0"; }; - memory { + memory@40000000 { device_type = "memory"; reg = <0x0 0x40000000 0x0 0x20000000>; };
arch/arm64/include/asm/kernel-pgtable.h +2 -2
@@ -76,8 +76,8 @@#define EARLY_KASLR (0)#endif -#define EARLY_ENTRIES (vstart, vend, shift) (((vend) >> (shift)) \ - - ((vstart) >> (shift)) + 1 + EARLY_KASLR) +#define EARLY_ENTRIES (vstart, vend, shift) \ + ((((vend) - 1) >> (shift)) - ((vstart) >> (shift)) + 1 + EARLY_KASLR)#define EARLY_PGDS (vstart, vend) (EARLY_ENTRIES(vstart, vend, PGDIR_SHIFT))
arch/arm64/kernel/fpsimd.c +1 -1
@@ -434,7 +434,7 @@ size_t sve_state_size(struct task_struct const *task)void sve_alloc (struct task_struct *task) {if (task->thread.sve_state) { -memset (task->thread.sve_state,0 ,sve_state_size (current)); +memset (task->thread.sve_state,0 ,sve_state_size (task));return ; }
arch/arm64/kernel/head.S +6 -5
@@ -202,7 +202,7 @@ ENDPROC(preserve_boot_args) * to be composed of multiple pages. (This effectively scales the end index). * * vstart: virtual address of start of range - * vend: virtual address of end of range + * vend: virtual address of end of range - we map [vstart, vend] * shift: shift used to transform virtual address into index * ptrs: number of entries in page table * istart: index in table corresponding to vstart
@@ -239,17 +239,18 @@ ENDPROC(preserve_boot_args) * * tbl: location of page table * rtbl: address to be used for first level page table entry (typically tbl + PAGE_SIZE) - * vstart: start address to map - * vend: end address to map - we map [vstart, vend] + * vstart: virtual address of start of range + * vend: virtual address of end of range - we map [vstart, vend - 1] * flags: flags to use to map last level entries * phys: physical address corresponding to vstart - physical memory is contiguous * pgds: the number of pgd entries * * Temporaries: istart, iend, tmp, count, sv - these need to be different registers - * Preserves: vstart, vend, flags - * Corrupts: tbl, rtbl, istart, iend, tmp, count, sv + * Preserves: vstart, flags + * Corrupts: tbl, rtbl, vend, istart, iend, tmp, count, sv */ .macro map_memory, tbl, rtbl, vstart, vend, flags, phys, pgds, istart, iend, tmp, count, sv + sub \vend, \vend, #1 add \rtbl, \tbl, #PAGE_SIZE mov \sv, \rtbl mov \count, #0
arch/arm64/net/bpf_jit_comp.c +13 -0
@@ -685,6 +685,19 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx) }break ; +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +/* +* Nothing required here. +* +* In case of arm64, we rely on the firmware mitigation of +* Speculative Store Bypass as controlled via the ssbd kernel +* parameter. Whenever the mitigation is enabled, it works +* for all of the kernel code with no need to provide any +* additional instructions. +*/ +break ; +/* ST: *(size *)(dst + off) = imm */ case BPF_ST |BPF_MEM |BPF_W :case BPF_ST |BPF_MEM |BPF_H :
arch/m68k/emu/nfeth.c +2 -2
@@ -258,8 +258,8 @@ static void __exit nfeth_cleanup(void)for (i =0 ; i <MAX_UNIT ; i++) {if (nfeth_dev[i]) { -unregister_netdev (nfeth_dev[0 ]); -free_netdev (nfeth_dev[0 ]); +unregister_netdev (nfeth_dev[i]); +free_netdev (nfeth_dev[i]); } }free_irq (nfEtherIRQ, nfeth_interrupt);
arch/mips/mti-malta/malta-dtshim.c +1 -1
@@ -26,7 +26,7 @@#define ROCIT_CONFIG_GEN1_MEMMAP_SHIFT 8#define ROCIT_CONFIG_GEN1_MEMMAP_MASK (0xf << 8) -static unsigned char fdt_buf[16 <<10 ]__initdata ; +static unsigned char fdt_buf[16 <<10 ]__initdata __aligned(8) ;/* determined physical memory size, not overridden by command line args */ extern unsigned long physical_memsize;
arch/mips/net/ebpf_jit.c +3 -0
@@ -1282,6 +1282,9 @@ static int build_one_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, }break ; +case BPF_ST |BPF_NOSPEC :/* speculation barrier */ +break ; +case BPF_ST |BPF_B |BPF_MEM :case BPF_ST |BPF_H |BPF_MEM :case BPF_ST |BPF_W |BPF_MEM :
arch/openrisc/kernel/entry.S +2 -0
@@ -551,6 +551,7 @@ EXCEPTION_ENTRY(_external_irq_handler) l.bnf 1f // ext irq enabled, all ok. l.nop +#ifdef CONFIG_PRINTK l.addi r1,r1,-0x8 l.movhi r3,hi(42f) l.ori r3,r3,lo(42f)
@@ -564,6 +565,7 @@ EXCEPTION_ENTRY(_external_irq_handler) .string "\n\rESR interrupt bug: in _external_irq_handler (ESR %x)\n\r" .align 4 .previous +#endif l.ori r4,r4,SPR_SR_IEE // fix the bug // l.sw PT_SR(r1),r4
arch/parisc/kernel/signal.c +6 -0
@@ -239,6 +239,12 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs,#endif usp = (regs->gr[30 ] & ~(0x01UL )); +#ifdef CONFIG_64BIT +if (is_compat_task ()) { +/* The gcc alloca implementation leaves garbage in the upper 32 bits of sp */ + usp = (compat_uint_t )usp; + } +#endif /*FIXME: frame_size parameter is unused, remove it. */ frame =get_sigframe (&ksig->ka, usp,sizeof (*frame));
arch/powerpc/boot/crt0.S +0 -3
@@ -49,9 +49,6 @@ p_end: .long _end p_pstack: .long _platform_stack_top #endif - .globl _zimage_start - /* Clang appears to require the .weak directive to be after the symbol - * is defined. See https://bugs.llvm.org/show_bug.cgi?id=38921 */ .weak _zimage_start _zimage_start: .globl _zimage_start_lib
arch/powerpc/kernel/module_64.c +1 -1
@@ -719,7 +719,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,/* * If found, replace it with: * addis r2, r12, (.TOC.-func)@ha -* addi r2, r12, (.TOC.-func)@l +* addi r2, r2, (.TOC.-func)@l */ ((uint32_t *)location)[0 ] =0x3c4c0000 +PPC_HA (value); ((uint32_t *)location)[1 ] =0x38420000 +PPC_LO (value);
arch/powerpc/kernel/stacktrace.c +1 -0
@@ -8,6 +8,7 @@* Copyright 2018 Nick Piggin, Michael Ellerman, IBM Corp. */ +#include <linux/delay.h> #include <linux/export.h> #include <linux/kallsyms.h> #include <linux/module.h>
arch/powerpc/net/bpf_jit_comp64.c +6 -0
@@ -596,6 +596,12 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, }break ; +/* +* BPF_ST NOSPEC (speculation barrier) +*/ +case BPF_ST |BPF_NOSPEC : +break ; +/* * BPF_ST(X) */
arch/powerpc/perf/hv-gpci.c +1 -1
@@ -168,7 +168,7 @@ static unsigned long single_gpci_request(u32 req, u32 starting_index,*/ count =0 ;for (i = offset; i < offset + length; i++) - count |= arg->bytes[i] << (i - offset); + count |= (u64)(arg->bytes[i]) << ((length -1 - (i - offset)) *8 ); *value = count; out:
arch/s390/kernel/jump_label.c +1 -1
@@ -41,7 +41,7 @@ static void jump_label_bug(struct jump_entry *entry, struct insn *expected,unsigned char *ipe = (unsigned char *)expected;unsigned char *ipn = (unsigned char *)new; -pr_emerg ("Jump label code mismatch at %pS [%p]\n" , ipc, ipc); +pr_emerg ("Jump label code mismatch at %pS [%px]\n" , ipc, ipc);pr_emerg ("Found: %6ph\n" , ipc);pr_emerg ("Expected: %6ph\n" , ipe);pr_emerg ("New: %6ph\n" , ipn);
arch/s390/kvm/interrupt.c +2 -2
@@ -318,13 +318,13 @@ static unsigned long deliverable_irqs(struct kvm_vcpu *vcpu)static void __set_cpu_idle (struct kvm_vcpu *vcpu) {kvm_s390_set_cpuflags (vcpu,CPUSTAT_WAIT ); -set_bit (vcpu->vcpu_id, vcpu->kvm->arch.float_int.idle_mask); +set_bit (kvm_vcpu_get_idx (vcpu), vcpu->kvm->arch.float_int.idle_mask); }static void __unset_cpu_idle (struct kvm_vcpu *vcpu) {kvm_s390_clear_cpuflags (vcpu,CPUSTAT_WAIT ); -clear_bit (vcpu->vcpu_id, vcpu->kvm->arch.float_int.idle_mask); +clear_bit (kvm_vcpu_get_idx (vcpu), vcpu->kvm->arch.float_int.idle_mask); }static void __reset_intercept_indicators (struct kvm_vcpu *vcpu)
arch/s390/kvm/kvm-s390.h +1 -1
@@ -67,7 +67,7 @@ static inline int is_vcpu_stopped(struct kvm_vcpu *vcpu)static inline int is_vcpu_idle (struct kvm_vcpu *vcpu) { -return test_bit (vcpu->vcpu_id, vcpu->kvm->arch.float_int.idle_mask); +return test_bit (kvm_vcpu_get_idx (vcpu), vcpu->kvm->arch.float_int.idle_mask); }static inline int kvm_is_ucontrol (struct kvm *kvm)
arch/s390/net/bpf_jit_comp.c +12 -2
@@ -595,8 +595,13 @@ static noinline int bpf_jit_insn(struct bpf_jit *jit, struct bpf_prog *fp, int icase BPF_ALU64 |BPF_SUB |BPF_K :/* dst = dst - imm */ if (!imm)break ; -/* agfi %dst,-imm */ -EMIT6_IMM (0xc2080000 , dst_reg, -imm); +if (imm ==-0x80000000 ) { +/* algfi %dst,0x80000000 */ +EMIT6_IMM (0xc20a0000 , dst_reg,0x80000000 ); + }else { +/* agfi %dst,-imm */ +EMIT6_IMM (0xc2080000 , dst_reg, -imm); + }break ;/* * BPF_MUL
@@ -883,6 +888,11 @@ static noinline int bpf_jit_insn(struct bpf_jit *jit, struct bpf_prog *fp, int ibreak ; }break ; +/* +* BPF_NOSPEC (speculation barrier) +*/ +case BPF_ST |BPF_NOSPEC : +break ;/* * BPF_ST(X) */
arch/sparc/net/bpf_jit_comp_64.c +3 -0
@@ -1261,6 +1261,9 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx)emit (opcode |RS1 (src) | rs2 |RD (dst), ctx);break ; } +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +break ;/* ST: *(size *)(dst + off) = imm */ case BPF_ST |BPF_MEM |BPF_W :case BPF_ST |BPF_MEM |BPF_H :
arch/x86/events/amd/ibs.c +8 -0
@@ -90,6 +90,7 @@ struct perf_ibs {unsigned long offset_mask[1 ];int offset_max; unsigned int fetch_count_reset_broken : 1; + unsigned int fetch_ignore_if_zero_rip : 1;struct cpu_perf_ibs __percpu *pcpu;struct attribute **format_attrs;
@@ -674,6 +675,10 @@ static int perf_ibs_handle_irq(struct perf_ibs *perf_ibs, struct pt_regs *iregs)if (check_rip && (ibs_data.regs[2 ] &IBS_RIP_INVALID )) { regs.flags &= ~PERF_EFLAGS_EXACT ; }else { +/* Workaround for erratum #1197 */ +if (perf_ibs->fetch_ignore_if_zero_rip && !(ibs_data.regs[1 ])) + goto out; +set_linear_ip (®s, ibs_data.regs[1 ]); regs.flags |=PERF_EFLAGS_EXACT ; }
@@ -767,6 +772,9 @@ static __init void perf_event_ibs_init(void)if (boot_cpu_data.x86 >=0x16 && boot_cpu_data.x86 <=0x18 ) perf_ibs_fetch.fetch_count_reset_broken =1 ; +if (boot_cpu_data.x86 ==0x19 && boot_cpu_data.x86_model <0x10 ) + perf_ibs_fetch.fetch_ignore_if_zero_rip =1 ; +perf_ibs_pmu_init (&perf_ibs_fetch,"ibs_fetch" );if (ibs_caps &IBS_CAPS_OPCNT ) {
arch/x86/events/intel/pt.c +1 -1
@@ -69,7 +69,7 @@ static struct pt_cap_desc {PT_CAP (topa_multiple_entries,0 ,CPUID_ECX ,BIT (1 )),PT_CAP (single_range_output,0 ,CPUID_ECX ,BIT (2 )),PT_CAP (payloads_lip,0 ,CPUID_ECX ,BIT (31 )), -PT_CAP (num_address_ranges,1 ,CPUID_EAX ,0x3 ), +PT_CAP (num_address_ranges,1 ,CPUID_EAX ,0x7 ),PT_CAP (mtc_periods,1 ,CPUID_EAX ,0xffff0000 ),PT_CAP (cycle_thresholds,1 ,CPUID_EBX ,0xffff ), PT_CAP(psb_periods, 1, CPUID_EBX, 0xffff0000),
arch/x86/kernel/cpu/intel_rdt_monitor.c +6 -0
@@ -252,6 +252,12 @@ static u64 __mon_event_count(u32 rmid, struct rmid_read *rr)case QOS_L3_MBM_LOCAL_EVENT_ID : m = &rr->d->mbm_local[rmid];break ; +default : +/* +* Code would never reach here because an invalid +* event id would fail the __rmid_read. +*/ +return RMID_VAL_ERROR ; }if (rr->first) {
arch/x86/kernel/reboot.c +2 -1
@@ -388,10 +388,11 @@ static const struct dmi_system_id reboot_dmi_table[] __initconst = { }, {/* Handle problems with rebooting on the OptiPlex 990. */ .callback = set_pci_reboot, - .ident = "Dell OptiPlex 990", + .ident = "Dell OptiPlex 990 BIOS A0x", .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Dell Inc." ),DMI_MATCH (DMI_PRODUCT_NAME ,"OptiPlex 990" ), + DMI_MATCH(DMI_BIOS_VERSION, "A0"), }, }, { /* Handle problems with rebooting on Dell 300's */
arch/x86/kvm/x86.c +4 -0
@@ -2511,6 +2511,10 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)if (!msr_info->host_initiated) {s64 adj = data - vcpu->arch.ia32_tsc_adjust_msr;adjust_tsc_offset_guest (vcpu, adj); +/* Before back to guest, tsc_timestamp must be adjusted +* as well, otherwise guest's percpu pvclock time could jump. +*/ +kvm_make_request (KVM_REQ_CLOCK_UPDATE , vcpu); } vcpu->arch.ia32_tsc_adjust_msr = data; }
arch/x86/mm/init_64.c +3 -3
@@ -1289,18 +1289,18 @@ int kern_addr_valid(unsigned long addr)return 0 ; p4d =p4d_offset (pgd, addr); -if (p4d_none (*p4d)) +if (!p4d_present (*p4d))return 0 ; pud =pud_offset (p4d, addr); -if (pud_none (*pud)) +if (!pud_present (*pud))return 0 ;if (pud_large (*pud))return pfn_valid (pud_pfn (*pud)); pmd =pmd_offset (pud, addr); -if (pmd_none (*pmd)) +if (!pmd_present (*pmd))return 0 ;if (pmd_large (*pmd))
arch/x86/net/bpf_jit_comp.c +7 -0
@@ -731,6 +731,13 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, }break ; +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +if (boot_cpu_has (X86_FEATURE_XMM2 )) +/* Emit 'lfence' */ +EMIT3 (0x0F ,0xAE ,0xE8 ); +break ; +/* ST: *(u8*)(dst_reg + off) = imm */ case BPF_ST |BPF_MEM |BPF_B :if (is_ereg (dst_reg))
arch/x86/net/bpf_jit_comp32.c +6 -0
@@ -1683,6 +1683,12 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, i++;break ; } +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +if (boot_cpu_has (X86_FEATURE_XMM2 )) +/* Emit 'lfence' */ +EMIT3 (0x0F ,0xAE ,0xE8 ); +break ;/* ST: *(u8*)(dst_reg + off) = imm */ case BPF_ST |BPF_MEM |BPF_H :case BPF_ST |BPF_MEM |BPF_B :
arch/x86/xen/enlighten_pv.c +7 -0
@@ -1187,6 +1187,11 @@ static void __init xen_dom0_set_legacy_features(void) x86_platform.legacy.rtc =1 ; } +static void __init xen_domu_set_legacy_features (void ) +{ + x86_platform.legacy.rtc =0 ; +} +/* First C function to be called on Xen boot */ asmlinkage __visible void __init xen_start_kernel(void) {
@@ -1354,6 +1359,8 @@ asmlinkage __visible void __init xen_start_kernel(void)add_preferred_console ("xenboot" ,0 ,NULL );if (pci_xen) x86_init.pci.arch_init = pci_xen_init; + x86_platform.set_legacy_features = + xen_domu_set_legacy_features; }else { const struct dom0_vga_console_info *info = (void *)((char *)xen_start_info +
arch/x86/xen/p2m.c +2 -2
@@ -613,8 +613,8 @@ int xen_alloc_p2m_entry(unsigned long pfn) }/* Expanded the p2m? */ -if (pfn > xen_p2m_last_pfn) { - xen_p2m_last_pfn = pfn; +if (pfn >= xen_p2m_last_pfn) { + xen_p2m_last_pfn =ALIGN (pfn +1 ,P2M_PER_PAGE ); HYPERVISOR_shared_info->arch.max_pfn = xen_p2m_last_pfn; }
arch/xtensa/Kconfig +1 -1
@@ -25,7 +25,7 @@ config XTENSA select HAVE_DMA_CONTIGUOUS select HAVE_EXIT_THREAD select HAVE_FUNCTION_TRACER - select HAVE_FUTEX_CMPXCHG if !MMU + select HAVE_FUTEX_CMPXCHG if !MMU && FUTEX select HAVE_HW_BREAKPOINT if PERF_EVENTS select HAVE_IRQ_TIME_ACCOUNTING select HAVE_MEMBLOCK
arch/xtensa/platforms/iss/console.c +14 -3
@@ -168,9 +168,13 @@ static const struct tty_operations serial_ops = {int __init rs_init (void ) { -tty_port_init (&serial_port); +int ret; serial_driver =alloc_tty_driver (SERIAL_MAX_NUM_LINES ); +if (!serial_driver) +return -ENOMEM ; + +tty_port_init (&serial_port);pr_info ("%s %s\n" , serial_name, serial_version);
@@ -190,8 +194,15 @@ int __init rs_init(void)tty_set_operations (serial_driver, &serial_ops);tty_port_link_device (&serial_port, serial_driver,0 ); -if (tty_register_driver (serial_driver)) -panic ("Couldn't register serial driver\n" ); + ret =tty_register_driver (serial_driver); +if (ret) { +pr_err ("Couldn't register serial driver\n" ); +tty_driver_kref_put (serial_driver); +tty_port_destroy (&serial_port); + +return ret; + } +return 0 ; }
block/bfq-iosched.c +14 -4
@@ -2137,6 +2137,15 @@ bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)* are likely to increase the throughput. */ bfqq->new_bfqq = new_bfqq; +/* +* The above assignment schedules the following redirections: +* each time some I/O for bfqq arrives, the process that +* generated that I/O is disassociated from bfqq and +* associated with new_bfqq. Here we increases new_bfqq->ref +* in advance, adding the number of processes that are +* expected to be associated with new_bfqq as they happen to +* issue I/O. +*/ new_bfqq->ref += process_refs;return new_bfqq; }
@@ -2196,6 +2205,10 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq, {struct bfq_queue *in_service_bfqq, *new_bfqq; +/* if a merge has already been setup, then proceed with that first */ +if (bfqq->new_bfqq) +return bfqq->new_bfqq; +/* * Prevent bfqq from being merged if it has been created too * long ago. The idea is that true cooperating processes, and
@@ -2210,9 +2223,6 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,if (bfq_too_late_for_merging (bfqq))return NULL ; -if (bfqq->new_bfqq) -return bfqq->new_bfqq; -if (!io_struct ||unlikely (bfqq == &bfqd->oom_bfqq))return NULL ;
@@ -4241,7 +4251,7 @@ bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic)if (bfqq->new_ioprio >=IOPRIO_BE_NR ) {pr_crit ("bfq_set_next_ioprio_data: new_ioprio %d\n" , bfqq->new_ioprio); - bfqq->new_ioprio =IOPRIO_BE_NR ; + bfqq->new_ioprio =IOPRIO_BE_NR -1 ; } bfqq->entity.new_weight =bfq_ioprio_to_weight (bfqq->new_ioprio);
block/blk-zoned.c +0 -6
@@ -319,9 +319,6 @@ int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode,if (!blk_queue_is_zoned (q))return -ENOTTY ; -if (!capable (CAP_SYS_ADMIN )) -return -EACCES ; -if (copy_from_user (&rep, argp,sizeof (struct blk_zone_report )))return -EFAULT ;
@@ -380,9 +377,6 @@ int blkdev_reset_zones_ioctl(struct block_device *bdev, fmode_t mode,if (!blk_queue_is_zoned (q))return -ENOTTY ; -if (!capable (CAP_SYS_ADMIN )) -return -EACCES ; -if (!(mode &FMODE_WRITE ))return -EBADF ;
certs/Makefile +8 -0
@@ -46,11 +46,19 @@ endif redirect_openssl = 2>&1 quiet_redirect_openssl = 2>&1 silent_redirect_openssl = 2>/dev/null +openssl_available = $(shell openssl help 2>/dev/null && echo yes) # We do it this way rather than having a boolean option for enabling an # external private key, because 'make randconfig' might enable such a # boolean option and we unfortunately can't make it depend on !RANDCONFIG. ifeq ($(CONFIG_MODULE_SIG_KEY),"certs/signing_key.pem") + +ifeq ($(openssl_available),yes) +X509TEXT=$(shell openssl x509 -in "certs/signing_key.pem" -text 2>/dev/null) + +$(if $(findstring rsaEncryption,$(X509TEXT)),,$(shell rm -f "certs/signing_key.pem")) +endif + $(obj)/signing_key.pem: $(obj)/x509.genkey @$(kecho) "###" @$(kecho) "### Now generating an X.509 key pair to be used for signing modules."
drivers/ata/libata-core.c +5 -1
@@ -4574,6 +4574,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { ATA_HORKAGE_ZERO_AFTER_TRIM, }, {"Samsung SSD 850*" ,NULL ,ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, }, + { "Samsung SSD 860*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | + ATA_HORKAGE_ZERO_AFTER_TRIM, }, + { "Samsung SSD 870*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | + ATA_HORKAGE_ZERO_AFTER_TRIM, }, { "FCCT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, },
@@ -6412,7 +6416,7 @@ int ata_host_start(struct ata_host *host) have_stop =1 ; } -if (host->ops->host_stop) +if (host->ops && host->ops->host_stop) have_stop =1 ;if (have_stop) {
drivers/ata/sata_dwc_460ex.c +4 -8
@@ -1253,24 +1253,20 @@ static int sata_dwc_probe(struct platform_device *ofdev) irq =irq_of_parse_and_map (np,0 );if (irq ==NO_IRQ ) {dev_err (&ofdev->dev,"no SATA DMA irq\n" ); - err = -ENODEV ; - goto error_out; +return -ENODEV ; }#ifdef CONFIG_SATA_DWC_OLD_DMA if (!of_find_property (np,"dmas" ,NULL )) { err =sata_dwc_dma_init_old (ofdev, hsdev);if (err) - goto error_out; +return err; }#endif hsdev->phy =devm_phy_optional_get (hsdev->dev,"sata-phy" ); -if (IS_ERR (hsdev->phy)) { - err =PTR_ERR (hsdev->phy); - hsdev->phy =NULL ; - goto error_out; - } +if (IS_ERR (hsdev->phy)) +return PTR_ERR (hsdev->phy); err =phy_init (hsdev->phy);if (err)
drivers/base/power/trace.c +10 -0
@@ -11,6 +11,7 @@#include <linux/export.h> #include <linux/rtc.h> #include <linux/suspend.h> +#include <linux/init.h> #include <linux/mc146818rtc.h>
@@ -165,6 +166,9 @@ void generate_pm_trace(const void *tracedata, unsigned int user)const char *file = *(const char **)(tracedata +2 );unsigned int user_hash_value, file_hash_value; +if (!x86_platform.legacy.rtc) +return ; + user_hash_value = user %USERHASH ; file_hash_value =hash_string (lineno, file,FILEHASH );set_magic_time (user_hash_value, file_hash_value, dev_hash_value);
@@ -267,6 +271,9 @@ static struct notifier_block pm_trace_nb = {static int early_resume_init (void ) { +if (!x86_platform.legacy.rtc) +return 0 ; + hash_value_early_read =read_magic_time ();register_pm_notifier (&pm_trace_nb);return 0 ;
@@ -277,6 +284,9 @@ static int late_resume_init(void)unsigned int val = hash_value_early_read;unsigned int user, file, dev; +if (!x86_platform.legacy.rtc) +return 0 ; + user = val %USERHASH ; val = val /USERHASH ; file = val %FILEHASH ;
drivers/base/regmap/regmap.c +1 -1
@@ -1479,7 +1479,7 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,if (ret) {dev_err (map->dev,"Error in caching of register: %x ret: %d\n" , - reg + i, ret); + reg +regmap_get_offset (map, i), ret);return ret; } }
drivers/bcma/main.c +3 -3
@@ -236,6 +236,7 @@ EXPORT_SYMBOL(bcma_core_irq);void bcma_prepare_core (struct bcma_bus *bus,struct bcma_device *core) { +device_initialize (&core->dev); core->dev.release = bcma_release_core_dev; core->dev.bus = &bcma_bus_type;dev_set_name (&core->dev,"bcma%d:%d" , bus->num, core->core_index);
@@ -299,11 +300,10 @@ static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core) {int err; - err =device_register (&core->dev); + err =device_add (&core->dev);if (err) {bcma_err (bus,"Could not register dev for core 0x%03X\n" , core->id.id); -put_device (&core->dev);return ; } core->dev_registered = true;
@@ -394,7 +394,7 @@ void bcma_unregister_cores(struct bcma_bus *bus)/* Now noone uses internally-handled cores, we can free them */ list_for_each_entry_safe (core, tmp, &bus->cores, list) {list_del (&core->list); -kfree (core); +put_device (&core->dev); } }
drivers/block/Kconfig +2 -2
@@ -242,7 +242,7 @@ config BLK_DEV_LOOP_MIN_COUNT dynamically allocated with the /dev/loop-control interface. config BLK_DEV_CRYPTOLOOP - tristate "Cryptoloop Support" + tristate "Cryptoloop Support (DEPRECATED)" select CRYPTO select CRYPTO_CBC depends on BLK_DEV_LOOP
@@ -254,7 +254,7 @@ config BLK_DEV_CRYPTOLOOP WARNING: This device is not safe for journaled file systems like ext3 or Reiserfs. Please use the Device Mapper crypto module instead, which can be configured to be on-disk compatible with the - cryptoloop device. + cryptoloop device. cryptoloop support will be removed in Linux 5.16. source "drivers/block/drbd/Kconfig"
drivers/block/cryptoloop.c +2 -0
@@ -201,6 +201,8 @@ init_cryptoloop(void)if (rc)printk (KERN_ERR "cryptoloop: loop_register_transfer failed\n" ); +else +pr_warn ("the cryptoloop driver has been deprecated and will be removed in in Linux 5.16\n" );return rc; }
drivers/clk/clk.c +5 -5
@@ -46,11 +46,6 @@ static struct hlist_head *all_lists[] = { NULL, }; -static struct hlist_head *orphan_list[] = { - &clk_orphan_list, -NULL , -}; -/*** private data structures ***/ struct clk_core {
@@ -2629,6 +2624,11 @@ static int inited = 0;static DEFINE_MUTEX (clk_debug_lock);static HLIST_HEAD (clk_debug_list); +static struct hlist_head *orphan_list[] = { + &clk_orphan_list, +NULL , +}; +static void clk_summary_show_one (struct seq_file *s,struct clk_core *c,int level) {
drivers/clk/mvebu/kirkwood.c +1 -0
@@ -254,6 +254,7 @@ static const char *powersave_parents[] = {static const struct clk_muxing_soc_desc kirkwood_mux_desc[]__initconst = { {"powersave" , powersave_parents,ARRAY_SIZE (powersave_parents),11 ,1 ,0 }, + { } }; static struct clk *clk_muxing_get_src(
drivers/clocksource/sh_cmt.c +18 -12
@@ -576,7 +576,8 @@ static int sh_cmt_start(struct sh_cmt_channel *ch, unsigned long flag) ch->flags |= flag;/* setup timeout if no clockevent */ -if ((flag ==FLAG_CLOCKSOURCE ) && (!(ch->flags &FLAG_CLOCKEVENT ))) +if (ch->cmt->num_channels ==1 && + flag ==FLAG_CLOCKSOURCE && (!(ch->flags &FLAG_CLOCKEVENT )))__sh_cmt_set_next (ch, ch->max_match_value); out:raw_spin_unlock_irqrestore (&ch->lock, flags);
@@ -612,20 +613,25 @@ static struct sh_cmt_channel *cs_to_sh_cmt(struct clocksource *cs)static u64 sh_cmt_clocksource_read (struct clocksource *cs) {struct sh_cmt_channel *ch =cs_to_sh_cmt (cs); -unsigned long flags;u32 has_wrapped; -u64 value; -u32 raw; -raw_spin_lock_irqsave (&ch->lock, flags); - value = ch->total_cycles; - raw =sh_cmt_get_counter (ch, &has_wrapped); +if (ch->cmt->num_channels ==1 ) { +unsigned long flags; +u64 value; +u32 raw; -if (unlikely (has_wrapped)) - raw += ch->match_value +1 ; -raw_spin_unlock_irqrestore (&ch->lock, flags); +raw_spin_lock_irqsave (&ch->lock, flags); + value = ch->total_cycles; + raw =sh_cmt_get_counter (ch, &has_wrapped); + +if (unlikely (has_wrapped)) + raw += ch->match_value +1 ; +raw_spin_unlock_irqrestore (&ch->lock, flags); + +return value + raw; + } -return value + raw; +return sh_cmt_get_counter (ch, &has_wrapped); }static int sh_cmt_clocksource_enable (struct clocksource *cs)
@@ -688,7 +694,7 @@ static int sh_cmt_register_clocksource(struct sh_cmt_channel *ch, cs->disable = sh_cmt_clocksource_disable; cs->suspend = sh_cmt_clocksource_suspend; cs->resume = sh_cmt_clocksource_resume; - cs->mask =CLOCKSOURCE_MASK (sizeof (u64) *8 ); + cs->mask =CLOCKSOURCE_MASK (ch->cmt->info->width); cs->flags =CLOCK_SOURCE_IS_CONTINUOUS ; dev_info(&ch->cmt->pdev->dev, "ch%u: used as clock source\n",
drivers/cpufreq/powernv-cpufreq.c +14 -2
@@ -46,6 +46,7 @@#define MAX_PSTATE_SHIFT 32#define LPSTATE_SHIFT 48#define GPSTATE_SHIFT 56 +#define MAX_NR_CHIPS 32#define MAX_RAMP_DOWN_TIME 5120/*
@@ -1051,12 +1052,20 @@ static int init_chip_info(void)unsigned int *chip;unsigned int cpu, i;unsigned int prev_chip_id =UINT_MAX ; +cpumask_t *chip_cpu_mask;int ret =0 ; chip =kcalloc (num_possible_cpus (),sizeof (*chip),GFP_KERNEL );if (!chip)return -ENOMEM ; +/* Allocate a chip cpu mask large enough to fit mask for all chips */ + chip_cpu_mask =kcalloc (MAX_NR_CHIPS ,sizeof (cpumask_t),GFP_KERNEL ); +if (!chip_cpu_mask) { + ret = -ENOMEM ; + goto free_and_return; + } +for_each_possible_cpu (cpu) {unsigned int id =cpu_to_chip_id (cpu);
@@ -1064,22 +1073,25 @@ static int init_chip_info(void) prev_chip_id = id; chip[nr_chips++] = id; } +cpumask_set_cpu (cpu, &chip_cpu_mask[nr_chips-1 ]); } chips =kcalloc (nr_chips,sizeof (struct chip ),GFP_KERNEL );if (!chips) { ret = -ENOMEM ; - goto free_and_return; + goto out_free_chip_cpu_mask; }for (i =0 ; i < nr_chips; i++) { chips[i].id = chip[i]; -cpumask_copy (&chips[i].mask,cpumask_of_node (chip[i])); +cpumask_copy (&chips[i].mask, &chip_cpu_mask[i]);INIT_WORK (&chips[i].throttle, powernv_cpufreq_work_fn);for_each_cpu (cpu, &chips[i].mask)per_cpu (chip_info, cpu) = &chips[i]; } +out_free_chip_cpu_mask: +kfree (chip_cpu_mask); free_and_return:kfree (chip);return ret;
drivers/crypto/mxs-dcp.c +44 -37
161 lines not on this page · raw message
drivers/crypto/omap-sham.c +1 -1
@@ -1739,7 +1739,7 @@ static void omap_sham_done_task(unsigned long data)if (test_and_clear_bit (FLAGS_OUTPUT_READY , &dd->flags)) goto finish; }else if (test_bit (FLAGS_DMA_READY , &dd->flags)) { -if (test_and_clear_bit (FLAGS_DMA_ACTIVE , &dd->flags)) { +if (test_bit (FLAGS_DMA_ACTIVE , &dd->flags)) {omap_sham_update_dma_stop (dd);if (dd->err) { err = dd->err;
drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c +2 -2
@@ -123,10 +123,10 @@ void adf_init_hw_data_c3xxxiov(struct adf_hw_device_data *hw_data) hw_data->enable_error_correction = adf_vf_void_noop; hw_data->init_admin_comms = adf_vf_int_noop; hw_data->exit_admin_comms = adf_vf_void_noop; - hw_data->send_admin_init = adf_vf2pf_init; + hw_data->send_admin_init = adf_vf2pf_notify_init; hw_data->init_arb = adf_vf_int_noop; hw_data->exit_arb = adf_vf_void_noop; - hw_data->disable_iov = adf_vf2pf_shutdown; + hw_data->disable_iov = adf_vf2pf_notify_shutdown; hw_data->get_accel_mask = get_accel_mask; hw_data->get_ae_mask = get_ae_mask; hw_data->get_num_accels = get_num_accels;
drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c +2 -2
@@ -123,10 +123,10 @@ void adf_init_hw_data_c62xiov(struct adf_hw_device_data *hw_data) hw_data->enable_error_correction = adf_vf_void_noop; hw_data->init_admin_comms = adf_vf_int_noop; hw_data->exit_admin_comms = adf_vf_void_noop; - hw_data->send_admin_init = adf_vf2pf_init; + hw_data->send_admin_init = adf_vf2pf_notify_init; hw_data->init_arb = adf_vf_int_noop; hw_data->exit_arb = adf_vf_void_noop; - hw_data->disable_iov = adf_vf2pf_shutdown; + hw_data->disable_iov = adf_vf2pf_notify_shutdown; hw_data->get_accel_mask = get_accel_mask; hw_data->get_ae_mask = get_ae_mask; hw_data->get_num_accels = get_num_accels;
drivers/crypto/qat/qat_common/adf_common_drv.h +4 -4
@@ -239,8 +239,8 @@ void adf_enable_vf2pf_interrupts(struct adf_accel_dev *accel_dev,void adf_enable_pf2vf_interrupts (struct adf_accel_dev *accel_dev);void adf_disable_pf2vf_interrupts (struct adf_accel_dev *accel_dev); -int adf_vf2pf_init (struct adf_accel_dev *accel_dev); -void adf_vf2pf_shutdown (struct adf_accel_dev *accel_dev); +int adf_vf2pf_notify_init (struct adf_accel_dev *accel_dev); +void adf_vf2pf_notify_shutdown (struct adf_accel_dev *accel_dev);int adf_init_pf_wq (void );void adf_exit_pf_wq (void );int adf_init_vf_wq (void );
@@ -263,12 +263,12 @@ static inline void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev) { } -static inline int adf_vf2pf_init (struct adf_accel_dev *accel_dev) +static inline int adf_vf2pf_notify_init (struct adf_accel_dev *accel_dev) {return 0 ; } -static inline void adf_vf2pf_shutdown (struct adf_accel_dev *accel_dev) +static inline void adf_vf2pf_notify_shutdown (struct adf_accel_dev *accel_dev) { }
drivers/crypto/qat/qat_common/adf_init.c +3 -2
@@ -105,6 +105,7 @@ int adf_dev_init(struct adf_accel_dev *accel_dev)struct service_hndl *service;struct list_head *list_itr;struct adf_hw_device_data *hw_data = accel_dev->hw_device; +int ret;if (!hw_data) { dev_err(&GET_DEV(accel_dev),
@@ -171,9 +172,9 @@ int adf_dev_init(struct adf_accel_dev *accel_dev) } hw_data->enable_error_correction (accel_dev); - hw_data->enable_vf2pf_comms (accel_dev); + ret = hw_data->enable_vf2pf_comms (accel_dev); -return 0 ; +return ret; }EXPORT_SYMBOL_GPL (adf_dev_init);
drivers/crypto/qat/qat_common/adf_isr.c +4 -3
@@ -59,6 +59,8 @@#include "adf_transport_access_macros.h" #include "adf_transport_internal.h" +#define ADF_MAX_NUM_VFS 32 +static int adf_enable_msix (struct adf_accel_dev *accel_dev) {struct adf_accel_pci *pci_dev_info = &accel_dev->accel_pci_dev;
@@ -111,7 +113,7 @@ static irqreturn_t adf_msix_isr_ae(int irq, void *dev_ptr)struct adf_bar *pmisc = &GET_BARS (accel_dev)[hw_data->get_misc_bar_id (hw_data)];void __iomem *pmisc_bar_addr = pmisc->virt_addr; -u32 vf_mask; +unsigned long vf_mask;/* Get the interrupt sources triggered by VFs */ vf_mask = ((ADF_CSR_RD(pmisc_bar_addr, ADF_ERRSOU5) &
@@ -132,8 +134,7 @@ static irqreturn_t adf_msix_isr_ae(int irq, void *dev_ptr)* unless the VF is malicious and is attempting to * flood the host OS with VF2PF interrupts. */ -for_each_set_bit (i, (const unsigned long *)&vf_mask, - (sizeof (vf_mask) *BITS_PER_BYTE )) { +for_each_set_bit (i, &vf_mask,ADF_MAX_NUM_VFS ) { vf_info = accel_dev->pf.vf_info + i;if (!__ratelimit (&vf_info->vf2pf_ratelimit)) {
drivers/crypto/qat/qat_common/adf_pf2vf_msg.c +2 -1
@@ -231,7 +231,6 @@ int adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr)return ret; } -EXPORT_SYMBOL_GPL (adf_iov_putmsg);void adf_vf2pf_req_hndl (struct adf_accel_vf_info *vf_info) {
@@ -361,6 +360,8 @@ static int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev) msg |=ADF_PFVF_COMPATIBILITY_VERSION <<ADF_VF2PF_COMPAT_VER_REQ_SHIFT ;BUILD_BUG_ON (ADF_PFVF_COMPATIBILITY_VERSION >255 ); +reinit_completion (&accel_dev->vf.iov_msg_completion); +/* Send request from VF to PF */ ret =adf_iov_putmsg (accel_dev, msg,0 );if (ret) {
drivers/crypto/qat/qat_common/adf_vf2pf_msg.c +6 -6
@@ -49,14 +49,14 @@#include "adf_pf2vf_msg.h" /** -* adf_vf2pf_init() - send init msg to PF +* adf_vf2pf_notify_init() - send init msg to PF * @accel_dev: Pointer to acceleration VF device. * * Function sends an init messge from the VF to a PF * * Return: 0 on success, error code otherwise. */ -int adf_vf2pf_init (struct adf_accel_dev *accel_dev) +int adf_vf2pf_notify_init (struct adf_accel_dev *accel_dev) {u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM | (ADF_VF2PF_MSGTYPE_INIT <<ADF_VF2PF_MSGTYPE_SHIFT ));
@@ -69,17 +69,17 @@ int adf_vf2pf_init(struct adf_accel_dev *accel_dev)set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status);return 0 ; } -EXPORT_SYMBOL_GPL (adf_vf2pf_init); +EXPORT_SYMBOL_GPL (adf_vf2pf_notify_init);/** -* adf_vf2pf_shutdown() - send shutdown msg to PF +* adf_vf2pf_notify_shutdown() - send shutdown msg to PF * @accel_dev: Pointer to acceleration VF device. * * Function sends a shutdown messge from the VF to a PF * * Return: void */ -void adf_vf2pf_shutdown (struct adf_accel_dev *accel_dev) +void adf_vf2pf_notify_shutdown (struct adf_accel_dev *accel_dev) {u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM | (ADF_VF2PF_MSGTYPE_SHUTDOWN <<ADF_VF2PF_MSGTYPE_SHIFT ));
@@ -89,4 +89,4 @@ void adf_vf2pf_shutdown(struct adf_accel_dev *accel_dev)dev_err (&GET_DEV (accel_dev),"Failed to send Shutdown event to PF\n" ); } -EXPORT_SYMBOL_GPL (adf_vf2pf_shutdown); +EXPORT_SYMBOL_GPL (adf_vf2pf_notify_shutdown);
drivers/crypto/qat/qat_common/adf_vf_isr.c +4 -3
@@ -203,6 +203,7 @@ static irqreturn_t adf_isr(int irq, void *privdata)struct adf_bar *pmisc = &GET_BARS (accel_dev)[hw_data->get_misc_bar_id (hw_data)];void __iomem *pmisc_bar_addr = pmisc->virt_addr; +bool handled = false;u32 v_int;/* Read VF INT source CSR to determine the source of VF interrupt */
@@ -215,7 +216,7 @@ static irqreturn_t adf_isr(int irq, void *privdata)/* Schedule tasklet to handle interrupt BH */ tasklet_hi_schedule (&accel_dev->vf.pf2vf_bh_tasklet); -return IRQ_HANDLED ; + handled = true; }/* Check bundle interrupt */
@@ -227,10 +228,10 @@ static irqreturn_t adf_isr(int irq, void *privdata)WRITE_CSR_INT_FLAG_AND_COL (bank->csr_addr, bank->bank_number,0 );tasklet_hi_schedule (&bank->resp_handler); -return IRQ_HANDLED ; + handled = true; } -return IRQ_NONE ; +return handled ?IRQ_HANDLED :IRQ_NONE ; }static int adf_request_msi_irq (struct adf_accel_dev *accel_dev)
drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c +2 -2
@@ -123,10 +123,10 @@ void adf_init_hw_data_dh895xcciov(struct adf_hw_device_data *hw_data) hw_data->enable_error_correction = adf_vf_void_noop; hw_data->init_admin_comms = adf_vf_int_noop; hw_data->exit_admin_comms = adf_vf_void_noop; - hw_data->send_admin_init = adf_vf2pf_init; + hw_data->send_admin_init = adf_vf2pf_notify_init; hw_data->init_arb = adf_vf_int_noop; hw_data->exit_arb = adf_vf_void_noop; - hw_data->disable_iov = adf_vf2pf_shutdown; + hw_data->disable_iov = adf_vf2pf_notify_shutdown; hw_data->get_accel_mask = get_accel_mask; hw_data->get_ae_mask = get_ae_mask; hw_data->get_num_accels = get_num_accels;
drivers/crypto/talitos.c +4 -0
@@ -853,7 +853,11 @@ static void talitos_unregister_rng(struct device *dev)* HMAC_SNOOP_NO_AFEA (HSNA) instead of type IPSEC_ESP */ #define TALITOS_CRA_PRIORITY_AEAD_HSNA (TALITOS_CRA_PRIORITY - 1) +#ifdef CONFIG_CRYPTO_DEV_TALITOS_SEC2 #define TALITOS_MAX_KEY_SIZE (AES_MAX_KEY_SIZE + SHA512_BLOCK_SIZE) +#else +#define TALITOS_MAX_KEY_SIZE (AES_MAX_KEY_SIZE + SHA256_BLOCK_SIZE) +#endif #define TALITOS_MAX_IV_LENGTH 16/* max of AES_BLOCK_SIZE, DES3_EDE_BLOCK_SIZE */ struct talitos_ctx {
drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c +1 -1
@@ -338,7 +338,7 @@ static void amdgpu_i2c_put_byte(struct amdgpu_i2c_chan *i2c_bus,void amdgpu_i2c_router_select_ddc_port (const struct amdgpu_connector *amdgpu_connector) { -u8 val; +u8 val =0 ;if (!amdgpu_connector->router.ddc_valid)return ;
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +1 -1
@@ -216,7 +216,7 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain) c++; } -BUG_ON (c >=AMDGPU_BO_MAX_PLACEMENTS ); +BUG_ON (c >AMDGPU_BO_MAX_PLACEMENTS ); placement->num_placement = c; placement->placement = places;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +8 -8
@@ -92,29 +92,29 @@ static ssize_t dp_link_settings_read(struct file *f, char __user *buf, rd_buf_ptr = rd_buf; - str_len =strlen ("Current: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Current: %d %d %d " , + str_len =strlen ("Current: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Current: %d 0x%x %d " , link->cur_link_settings.lane_count, link->cur_link_settings.link_rate, link->cur_link_settings.link_spread); rd_buf_ptr += str_len; - str_len =strlen ("Verified: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Verified: %d %d %d " , + str_len =strlen ("Verified: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Verified: %d 0x%x %d " , link->verified_link_cap.lane_count, link->verified_link_cap.link_rate, link->verified_link_cap.link_spread); rd_buf_ptr += str_len; - str_len =strlen ("Reported: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Reported: %d %d %d " , + str_len =strlen ("Reported: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Reported: %d 0x%x %d " , link->reported_link_cap.lane_count, link->reported_link_cap.link_rate, link->reported_link_cap.link_spread); rd_buf_ptr += str_len; - str_len =strlen ("Preferred: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Preferred: %d %d %d\n" , + str_len =strlen ("Preferred: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Preferred: %d 0x%x %d\n" , link->preferred_link_setting.lane_count, link->preferred_link_setting.link_rate, link->preferred_link_setting.link_spread);
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +6 -4
@@ -296,10 +296,12 @@ static void dpu_hw_ctl_clear_all_blendstages(struct dpu_hw_ctl *ctx)int i;for (i =0 ; i < ctx->mixer_count; i++) { -DPU_REG_WRITE (c,CTL_LAYER (LM_0 + i),0 ); -DPU_REG_WRITE (c,CTL_LAYER_EXT (LM_0 + i),0 ); -DPU_REG_WRITE (c,CTL_LAYER_EXT2 (LM_0 + i),0 ); -DPU_REG_WRITE (c,CTL_LAYER_EXT3 (LM_0 + i),0 ); +enum dpu_lm mixer_id = ctx->mixer_hw_caps[i].id; + +DPU_REG_WRITE (c,CTL_LAYER (mixer_id),0 ); +DPU_REG_WRITE (c,CTL_LAYER_EXT (mixer_id),0 ); +DPU_REG_WRITE (c,CTL_LAYER_EXT2 (mixer_id),0 ); +DPU_REG_WRITE (c,CTL_LAYER_EXT3 (mixer_id),0 ); } }
drivers/gpu/drm/msm/dsi/dsi.c +3 -3
@@ -34,8 +34,10 @@ static int dsi_get_phy(struct msm_dsi *msm_dsi) } phy_pdev =of_find_device_by_node (phy_node); -if (phy_pdev) +if (phy_pdev) { msm_dsi->phy =platform_get_drvdata (phy_pdev); + msm_dsi->phy_dev = &phy_pdev->dev; + }of_node_put (phy_node);
@@ -44,8 +46,6 @@ static int dsi_get_phy(struct msm_dsi *msm_dsi)return -EPROBE_DEFER ; } - msm_dsi->phy_dev =get_device (&phy_pdev->dev); -return 0 ; }
drivers/gpu/ipu-v3/ipu-cpmem.c +15 -15
@@ -545,21 +545,21 @@ static const struct ipu_rgb def_bgra_16 = { .bits_per_pixel = 16, }; -#define Y_OFFSET (pix, x, y) ((x) + pix->width * (y)) -#define U_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * ((y) / 2) / 2) + (x) / 2) -#define V_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * pix->height / 4) + \ - (pix->width * ((y) / 2) / 2) + (x) / 2) -#define U2_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * (y) / 2) + (x) / 2) -#define V2_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * pix->height / 2) + \ - (pix->width * (y) / 2) + (x) / 2) -#define UV_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * ((y) / 2)) + (x)) -#define UV2_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * y) + (x)) +#define Y_OFFSET (pix, x, y) ((x) + pix->bytesperline * (y)) +#define U_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * ((y) / 2) / 2) + (x) / 2) +#define V_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * pix->height / 4) + \ + (pix->bytesperline * ((y) / 2) / 2) + (x) / 2) +#define U2_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * (y) / 2) + (x) / 2) +#define V2_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * pix->height / 2) + \ + (pix->bytesperline * (y) / 2) + (x) / 2) +#define UV_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * ((y) / 2)) + (x)) +#define UV2_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * y) + (x))#define NUM_ALPHA_CHANNELS 7
drivers/hid/hid-input.c +0 -2
@@ -427,8 +427,6 @@ static int hidinput_get_battery_property(struct power_supply *psy,if (dev->battery_status ==HID_BATTERY_UNKNOWN ) val->intval =POWER_SUPPLY_STATUS_UNKNOWN ; -else if (dev->battery_capacity ==100 ) - val->intval =POWER_SUPPLY_STATUS_FULL ;else val->intval =POWER_SUPPLY_STATUS_DISCHARGING ;break ;
drivers/i2c/busses/i2c-highlander.c +1 -1
@@ -379,7 +379,7 @@ static int highlander_i2c_probe(struct platform_device *pdev)platform_set_drvdata (pdev, dev); dev->irq =platform_get_irq (pdev,0 ); -if (iic_force_poll) +if (dev->irq <0 || iic_force_poll) dev->irq =0 ;if (dev->irq) {
drivers/i2c/busses/i2c-iop3xx.c +2 -4
@@ -456,16 +456,14 @@ iop3xx_i2c_probe(struct platform_device *pdev) irq =platform_get_irq (pdev,0 );if (irq <0 ) { - ret = -ENXIO ; + ret = irq; goto unmap; } ret =request_irq (irq, iop3xx_i2c_irq_handler,0 , pdev->name, adapter_data); -if (ret) { - ret = -EIO ; +if (ret) goto unmap; - }memcpy (new_adapter->name, pdev->name,strlen (pdev->name)); new_adapter->owner =THIS_MODULE ;
drivers/i2c/busses/i2c-mt65xx.c +1 -1
@@ -804,7 +804,7 @@ static int mtk_i2c_probe(struct platform_device *pdev)return PTR_ERR (i2c->pdmabase); irq =platform_get_irq (pdev,0 ); -if (irq <=0 ) +if (irq <0 )return irq;init_completion (&i2c->msg_complete);
drivers/i2c/busses/i2c-s3c2410.c +1 -1
@@ -1179,7 +1179,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)*/ if (!(i2c->quirks &QUIRK_POLL )) { i2c->irq = ret =platform_get_irq (pdev,0 ); -if (ret <=0 ) { +if (ret <0 ) {dev_err (&pdev->dev,"cannot find IRQ\n" );clk_unprepare (i2c->clk);return ret;
drivers/iio/dac/ad5624r_spi.c +17 -1
@@ -230,7 +230,7 @@ static int ad5624r_probe(struct spi_device *spi)if (!indio_dev)return -ENOMEM ; st =iio_priv (indio_dev); - st->reg =devm_regulator_get (&spi->dev,"vcc" ); + st->reg =devm_regulator_get_optional (&spi->dev,"vref" );if (!IS_ERR (st->reg)) { ret =regulator_enable (st->reg);if (ret)
@@ -241,6 +241,22 @@ static int ad5624r_probe(struct spi_device *spi) goto error_disable_reg; voltage_uv = ret; + }else { +if (PTR_ERR (st->reg) != -ENODEV ) +return PTR_ERR (st->reg); +/* Backwards compatibility. This naming is not correct */ + st->reg =devm_regulator_get_optional (&spi->dev,"vcc" ); +if (!IS_ERR (st->reg)) { + ret =regulator_enable (st->reg); +if (ret) +return ret; + + ret =regulator_get_voltage (st->reg); +if (ret <0 ) + goto error_disable_reg; + + voltage_uv = ret; + } }spi_set_drvdata (spi, indio_dev);
drivers/infiniband/core/iwcm.c +12 -7
@@ -1173,29 +1173,34 @@ static int __init iw_cm_init(void) ret =iwpm_init (RDMA_NL_IWCM );if (ret) -pr_err ("iw_cm: couldn't init iwpm\n" ); -else -rdma_nl_register (RDMA_NL_IWCM , iwcm_nl_cb_table); +return ret; + iwcm_wq =alloc_ordered_workqueue ("iw_cm_wq" ,0 );if (!iwcm_wq) -return -ENOMEM ; + goto err_alloc; iwcm_ctl_table_hdr =register_net_sysctl (&init_net,"net/iw_cm" , iwcm_ctl_table);if (!iwcm_ctl_table_hdr) {pr_err ("iw_cm: couldn't register sysctl paths\n" ); -destroy_workqueue (iwcm_wq); -return -ENOMEM ; + goto err_sysctl; } +rdma_nl_register (RDMA_NL_IWCM , iwcm_nl_cb_table);return 0 ; + +err_sysctl: +destroy_workqueue (iwcm_wq); +err_alloc: +iwpm_exit (RDMA_NL_IWCM ); +return -ENOMEM ; } static void __exit iw_cm_cleanup(void) { +rdma_nl_unregister (RDMA_NL_IWCM );unregister_net_sysctl_table (iwcm_ctl_table_hdr);destroy_workqueue (iwcm_wq); -rdma_nl_unregister (RDMA_NL_IWCM );iwpm_exit (RDMA_NL_IWCM ); }
drivers/md/bcache/super.c +11 -5
@@ -824,20 +824,20 @@ static int bcache_device_init(struct bcache_device *d, unsigned int block_size, n =BITS_TO_LONGS (d->nr_stripes) *sizeof (unsigned long ); d->full_dirty_stripes =kvzalloc (n,GFP_KERNEL );if (!d->full_dirty_stripes) -return -ENOMEM ; + goto out_free_stripe_sectors_dirty; idx =ida_simple_get (&bcache_device_idx,0 ,BCACHE_DEVICE_IDX_MAX ,GFP_KERNEL );if (idx <0 ) -return idx; + goto out_free_full_dirty_stripes;if (bioset_init (&d->bio_split,4 , offsetof(struct bbio , bio),BIOSET_NEED_BVECS |BIOSET_NEED_RESCUER )) - goto err; + goto out_ida_remove; d->disk =alloc_disk (BCACHE_MINORS );if (!d->disk) - goto err; + goto out_bioset_exit;set_capacity (d->disk, sectors);snprintf (d->disk->disk_name,DISK_NAME_LEN ,"bcache%i" , idx);
@@ -872,8 +872,14 @@ static int bcache_device_init(struct bcache_device *d, unsigned int block_size,return 0 ; -err: +out_bioset_exit: +bioset_exit (&d->bio_split); +out_ida_remove:ida_simple_remove (&bcache_device_idx, idx); +out_free_full_dirty_stripes: +kvfree (d->full_dirty_stripes); +out_free_stripe_sectors_dirty: +kvfree (d->stripe_sectors_dirty);return -ENOMEM ; }
drivers/md/dm-crypt.c +6 -1
@@ -2181,7 +2181,12 @@ static void *crypt_page_alloc(gfp_t gfp_mask, void *pool_data)struct crypt_config *cc = pool_data;struct page *page; -if (unlikely (percpu_counter_compare (&cc->n_allocated_pages, dm_crypt_pages_per_client) >=0 ) && +/* +* Note, percpu_counter_read_positive() may over (and under) estimate +* the current usage by at most (batch - 1) * num_online_cpus() pages, +* but avoids potential spinlock contention of an exact result. +*/ +if (unlikely (percpu_counter_read_positive (&cc->n_allocated_pages) >= dm_crypt_pages_per_client) &&likely (gfp_mask & __GFP_NORETRY))return NULL ;
drivers/md/dm-thin-metadata.c +1 -1
@@ -901,7 +901,7 @@ int dm_pool_metadata_close(struct dm_pool_metadata *pmd)return -EBUSY ; } -if (!dm_bm_is_read_only (pmd->bm) && !pmd->fail_io) { +if (!pmd->fail_io && !dm_bm_is_read_only (pmd->bm)) { r =__commit_transaction (pmd);if (r <0 ) DMWARN("%s: __commit_transaction() failed, error = %d",
drivers/md/persistent-data/dm-block-manager.c +8 -6
@@ -494,7 +494,7 @@ int dm_bm_write_lock(struct dm_block_manager *bm,void *p;int r; -if (bm->read_only) +if (dm_bm_is_read_only (bm))return -EPERM ; p =dm_bufio_read (bm->bufio, b, (struct dm_buffer **) result);
@@ -563,7 +563,7 @@ int dm_bm_write_lock_zero(struct dm_block_manager *bm,struct buffer_aux *aux;void *p; -if (bm->read_only) +if (dm_bm_is_read_only (bm))return -EPERM ; p =dm_bufio_new (bm->bufio, b, (struct dm_buffer **) result);
@@ -603,7 +603,7 @@ EXPORT_SYMBOL_GPL(dm_bm_unlock);int dm_bm_flush (struct dm_block_manager *bm) { -if (bm->read_only) +if (dm_bm_is_read_only (bm))return -EPERM ;return dm_bufio_write_dirty_buffers (bm->bufio);
@@ -617,19 +617,21 @@ void dm_bm_prefetch(struct dm_block_manager *bm, dm_block_t b)bool dm_bm_is_read_only (struct dm_block_manager *bm) { -return bm->read_only; +return (bm ? bm->read_only : true); }EXPORT_SYMBOL_GPL (dm_bm_is_read_only);void dm_bm_set_read_only (struct dm_block_manager *bm) { - bm->read_only = true; +if (bm) + bm->read_only = true; }EXPORT_SYMBOL_GPL (dm_bm_set_read_only);void dm_bm_set_read_write (struct dm_block_manager *bm) { - bm->read_only = false; +if (bm) + bm->read_only = false; }EXPORT_SYMBOL_GPL (dm_bm_set_read_write);
drivers/media/dvb-frontends/dib8000.c +41 -17
97 lines not on this page · raw message
drivers/media/i2c/imx258.c +2 -2
@@ -22,7 +22,7 @@#define IMX258_CHIP_ID 0x0258/* V_TIMING internal */ -#define IMX258_VTS_30FPS 0x0c98 +#define IMX258_VTS_30FPS 0x0c50#define IMX258_VTS_30FPS_2K 0x0638#define IMX258_VTS_30FPS_VGA 0x034c#define IMX258_VTS_MAX 0xffff
@@ -46,7 +46,7 @@/* Analog gain control */ #define IMX258_REG_ANALOG_GAIN 0x0204#define IMX258_ANA_GAIN_MIN 0 -#define IMX258_ANA_GAIN_MAX 0x1fff +#define IMX258_ANA_GAIN_MAX 480#define IMX258_ANA_GAIN_STEP 1#define IMX258_ANA_GAIN_DEFAULT 0x0
drivers/media/i2c/tda1997x.c +4 -2
@@ -1695,14 +1695,15 @@ static int tda1997x_query_dv_timings(struct v4l2_subdev *sd, struct v4l2_dv_timings *timings) {struct tda1997x_state *state =to_state (sd); +int ret;v4l_dbg (1 , debug, state->client,"%s\n" , __func__);memset (timings,0 ,sizeof (struct v4l2_dv_timings ));mutex_lock (&state->lock); -tda1997x_detect_std (state, timings); + ret =tda1997x_detect_std (state, timings);mutex_unlock (&state->lock); -return 0 ; +return ret; }static const struct v4l2_subdev_video_ops tda1997x_video_ops = {
@@ -2229,6 +2230,7 @@ static int tda1997x_core_init(struct v4l2_subdev *sd)/* get initial HDMI status */ state->hdmi_status =io_read (sd,REG_HDMI_FLAGS ); +io_write (sd,REG_EDID_ENABLE ,EDID_ENABLE_A_EN |EDID_ENABLE_B_EN );return 0 ; }
drivers/media/platform/qcom/venus/venc.c +2 -0
@@ -316,6 +316,8 @@ venc_try_fmt_common(struct venus_inst *inst, struct v4l2_format *f)else return NULL ; fmt =find_format (inst, pixmp->pixelformat, f->type); +if (!fmt) +return NULL ; } pixmp->width = clamp(pixmp->width, frame_width_min(inst),
drivers/media/platform/tegra-cec/tegra_cec.c +6 -4
@@ -383,7 +383,11 @@ static int tegra_cec_probe(struct platform_device *pdev)return -ENOENT ; } -clk_prepare_enable (cec->clk); + ret =clk_prepare_enable (cec->clk); +if (ret) { +dev_err (&pdev->dev,"Unable to prepare clock for CEC\n" ); +return ret; + }/* set context info. */ cec->dev = &pdev->dev;
@@ -462,9 +466,7 @@ static int tegra_cec_resume(struct platform_device *pdev)dev_notice (&pdev->dev,"Resuming\n" ); -clk_prepare_enable (cec->clk); - - return 0; + return clk_prepare_enable(cec->clk); }#endif
drivers/media/rc/rc-loopback.c +1 -1
@@ -52,7 +52,7 @@ static int loop_set_tx_mask(struct rc_dev *dev, u32 mask)if ((mask & (RXMASK_REGULAR |RXMASK_LEARNING )) != mask) {dprintk ("invalid tx mask: %u\n" , mask); -return -EINVAL ; +return 2 ; }dprintk ("setting tx mask: %u\n" , mask);
drivers/media/usb/dvb-usb/nova-t-usb2.c +4 -2
@@ -133,7 +133,7 @@ static int nova_t_rc_query(struct dvb_usb_device *d, u32 *event, int *state)static int nova_t_read_mac_address (struct dvb_usb_device *d,u8 mac[6 ]) { -int i; +int i, ret;u8 b; mac[0 ] =0x00 ;
@@ -142,7 +142,9 @@ static int nova_t_read_mac_address (struct dvb_usb_device *d, u8 mac[6])/* this is a complete guess, but works for my box */ for (i =136 ; i <139 ; i++) { -dibusb_read_eeprom_byte (d,i, &b); + ret =dibusb_read_eeprom_byte (d, i, &b); +if (ret) +return ret; mac[5 - (i -136 )] = b; }
drivers/media/usb/dvb-usb/vp702x.c +9 -3
@@ -294,16 +294,22 @@ static int vp702x_rc_query(struct dvb_usb_device *d, u32 *event, int *state)static int vp702x_read_mac_addr (struct dvb_usb_device *d,u8 mac[6 ]) {u8 i, *buf; +int ret;struct vp702x_device_state *st = d->priv;mutex_lock (&st->buf_mutex); buf = st->buf; -for (i =6 ; i <12 ; i++) -vp702x_usb_in_op (d,READ_EEPROM_REQ , i,1 , &buf[i -6 ],1 ); +for (i =6 ; i <12 ; i++) { + ret =vp702x_usb_in_op (d,READ_EEPROM_REQ , i,1 , + &buf[i -6 ],1 ); +if (ret <0 ) + goto err; + }memcpy (mac, buf,6 ); +err:mutex_unlock (&st->buf_mutex); -return 0 ; +return ret; }static int vp702x_frontend_attach (struct dvb_usb_adapter *adap)
drivers/media/usb/em28xx/em28xx-input.c +0 -1
@@ -865,7 +865,6 @@ static int em28xx_ir_init(struct em28xx *dev)kfree (ir); ref_put:em28xx_shutdown_buttons (dev); -kref_put (&dev->ref, em28xx_free_device);return err; }
drivers/media/usb/go7007/go7007-driver.c +0 -26
@@ -699,49 +699,23 @@ struct go7007 *go7007_alloc(const struct go7007_board_info *board, struct device *dev) {struct go7007 *go; -int i; go =kzalloc (sizeof (struct go7007 ),GFP_KERNEL );if (go ==NULL )return NULL ; go->dev = dev; go->board_info = board; - go->board_id =0 ; go->tuner_type =-1 ; - go->channel_number =0 ; - go->name[0 ] =0 ;mutex_init (&go->hw_lock);init_waitqueue_head (&go->frame_waitq);spin_lock_init (&go->spinlock); go->status =STATUS_INIT ; -memset (&go->i2c_adapter,0 ,sizeof (go->i2c_adapter)); - go->i2c_adapter_online =0 ; - go->interrupt_available =0 ;init_waitqueue_head (&go->interrupt_waitq); - go->input =0 ;go7007_update_board (go); - go->encoder_h_halve =0 ; - go->encoder_v_halve =0 ; - go->encoder_subsample =0 ; go->format =V4L2_PIX_FMT_MJPEG ; go->bitrate =1500000 ; go->fps_scale =1 ; - go->pali =0 ; go->aspect_ratio =GO7007_RATIO_1_1 ; - go->gop_size =0 ; - go->ipb =0 ; - go->closed_gop =0 ; - go->repeat_seqhead =0 ; - go->seq_header_enable =0 ; - go->gop_header_enable =0 ; - go->dvd_mode =0 ; - go->interlace_coding =0 ; -for (i =0 ; i <4 ; ++i) - go->modet[i].enable =0 ; -for (i =0 ; i <1624 ; ++i) - go->modet_map[i] =0 ; - go->audio_deliver =NULL ; - go->audio_enabled =0 ;return go; }
drivers/media/usb/stkwebcam/stk-webcam.c +4 -2
@@ -1355,7 +1355,7 @@ static int stk_camera_probe(struct usb_interface *interface,if (!dev->isoc_ep) {pr_err ("Could not find isoc-in endpoint\n" ); err = -ENODEV ; - goto error; + goto error_put; } dev->vsettings.palette =V4L2_PIX_FMT_RGB565 ; dev->vsettings.mode =MODE_VGA ;
@@ -1368,10 +1368,12 @@ static int stk_camera_probe(struct usb_interface *interface, err =stk_register_video_device (dev);if (err) - goto error; + goto error_put;return 0 ; +error_put: +usb_put_intf (interface); error:v4l2_ctrl_handler_free (hdl);v4l2_device_unregister (&dev->v4l2_dev);
drivers/media/usb/uvc/uvc_v4l2.c +23 -11
@@ -900,8 +900,8 @@ static int uvc_ioctl_g_input(struct file *file, void *fh, unsigned int *input) {struct uvc_fh *handle = fh;struct uvc_video_chain *chain = handle->chain; +u8 *buf;int ret; -u8 i;if (chain->selector ==NULL || (chain->dev->quirks &UVC_QUIRK_IGNORE_SELECTOR_UNIT )) {
@@ -909,22 +909,27 @@ static int uvc_ioctl_g_input(struct file *file, void *fh, unsigned int *input)return 0 ; } + buf =kmalloc (1 ,GFP_KERNEL ); +if (!buf) +return -ENOMEM ; + ret =uvc_query_ctrl (chain->dev,UVC_GET_CUR , chain->selector->id, chain->dev->intfnum,UVC_SU_INPUT_SELECT_CONTROL , - &i,1 ); -if (ret <0 ) -return ret; + buf,1 ); +if (!ret) + *input = *buf -1 ; - *input = i -1 ; -return 0 ; +kfree (buf); + +return ret; }static int uvc_ioctl_s_input (struct file *file,void *fh,unsigned int input) {struct uvc_fh *handle = fh;struct uvc_video_chain *chain = handle->chain; +u8 *buf;int ret; -u32 i; ret =uvc_acquire_privileges (handle);if (ret <0 )
@@ -940,10 +945,17 @@ static int uvc_ioctl_s_input(struct file *file, void *fh, unsigned int input)if (input >= chain->selector->bNrInPins)return -EINVAL ; - i = input +1 ; -return uvc_query_ctrl (chain->dev,UVC_SET_CUR , chain->selector->id, - chain->dev->intfnum,UVC_SU_INPUT_SELECT_CONTROL , - &i,1 ); + buf =kmalloc (1 ,GFP_KERNEL ); +if (!buf) +return -ENOMEM ; + + *buf = input +1 ; + ret =uvc_query_ctrl (chain->dev,UVC_SET_CUR , chain->selector->id, + chain->dev->intfnum,UVC_SU_INPUT_SELECT_CONTROL , + buf,1 ); +kfree (buf); + +return ret; } static int uvc_ioctl_queryctrl(struct file *file, void *fh,
drivers/media/v4l2-core/v4l2-dv-timings.c +2 -2
@@ -196,7 +196,7 @@ bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings *t,if (!v4l2_valid_dv_timings (t, cap, fnc, fnc_handle))return false; - for (i = 0; i < v4l2_dv_timings_presets[i].bt.width; i++) { + for (i = 0; v4l2_dv_timings_presets[i].bt.width; i++) { if (v4l2_valid_dv_timings(v4l2_dv_timings_presets + i, cap, fnc, fnc_handle) && v4l2_match_dv_timings(t, v4l2_dv_timings_presets + i,
@@ -218,7 +218,7 @@ bool v4l2_find_dv_timings_cea861_vic(struct v4l2_dv_timings *t, u8 vic) {unsigned int i; -for (i =0 ; i < v4l2_dv_timings_presets[i].bt.width; i++) { +for (i =0 ; v4l2_dv_timings_presets[i].bt.width; i++) {const struct v4l2_bt_timings *bt = &v4l2_dv_timings_presets[i].bt;
drivers/mfd/ab8500-core.c +1 -1
@@ -493,7 +493,7 @@ static int ab8500_handle_hierarchical_line(struct ab8500 *ab8500,if (line ==AB8540_INT_GPIO43F || line ==AB8540_INT_GPIO44F ) line +=1 ; -handle_nested_irq (irq_create_mapping (ab8500->domain, line)); +handle_nested_irq (irq_find_mapping (ab8500->domain, line)); }return 0 ;
drivers/mfd/axp20x.c +2 -1
@@ -127,12 +127,13 @@ static const struct regmap_range axp288_writeable_ranges[] = {static const struct regmap_range axp288_volatile_ranges[] = {regmap_reg_range (AXP20X_PWR_INPUT_STATUS ,AXP288_POWER_REASON ), +regmap_reg_range (AXP22X_PWR_OUT_CTRL1 ,AXP22X_ALDO3_V_OUT ),regmap_reg_range (AXP288_BC_GLOBAL ,AXP288_BC_GLOBAL ),regmap_reg_range (AXP288_BC_DET_STAT ,AXP20X_VBUS_IPSOUT_MGMT ),regmap_reg_range (AXP20X_CHRG_BAK_CTRL ,AXP20X_CHRG_BAK_CTRL ),regmap_reg_range (AXP20X_IRQ1_EN ,AXP20X_IPSOUT_V_HIGH_L ),regmap_reg_range (AXP20X_TIMER_CTRL ,AXP20X_TIMER_CTRL ), -regmap_reg_range (AXP22X_GPIO_STATE ,AXP22X_GPIO_STATE ), +regmap_reg_range (AXP20X_GPIO1_CTRL ,AXP22X_GPIO_STATE ),regmap_reg_range (AXP288_RT_BATT_V_H ,AXP288_RT_BATT_V_L ),regmap_reg_range (AXP20X_FG_RES ,AXP288_FG_CC_CAP_REG ), };
drivers/mfd/stmpe.c +2 -2
@@ -1035,7 +1035,7 @@ static irqreturn_t stmpe_irq(int irq, void *data)if (variant->id_val ==STMPE801_ID || variant->id_val ==STMPE1600_ID ) { -int base =irq_create_mapping (stmpe->domain,0 ); +int base =irq_find_mapping (stmpe->domain,0 );handle_nested_irq (base);return IRQ_HANDLED ;
@@ -1063,7 +1063,7 @@ static irqreturn_t stmpe_irq(int irq, void *data)while (status) {int bit =__ffs (status);int line = bank *8 + bit; -int nestedirq =irq_create_mapping (stmpe->domain, line); +int nestedirq =irq_find_mapping (stmpe->domain, line);handle_nested_irq (nestedirq); status &= ~(1 << bit);
drivers/mfd/tc3589x.c +1 -1
@@ -187,7 +187,7 @@ static irqreturn_t tc3589x_irq(int irq, void *data)while (status) {int bit =__ffs (status); -int virq =irq_create_mapping (tc3589x->domain, bit); +int virq =irq_find_mapping (tc3589x->domain, bit);handle_nested_irq (virq); status &= ~(1 << bit);
drivers/mfd/wm8994-irq.c +1 -1
@@ -159,7 +159,7 @@ static irqreturn_t wm8994_edge_irq(int irq, void *data)struct wm8994 *wm8994 = data;while (gpio_get_value_cansleep (wm8994->pdata.irq_gpio)) -handle_nested_irq (irq_create_mapping (wm8994->edge_irq,0 )); +handle_nested_irq (irq_find_mapping (wm8994->edge_irq,0 ));return IRQ_HANDLED ; }
drivers/misc/aspeed-lpc-ctrl.c +1 -1
@@ -50,7 +50,7 @@ static int aspeed_lpc_ctrl_mmap(struct file *file, struct vm_area_struct *vma)unsigned long vsize = vma->vm_end - vma->vm_start;pgprot_t prot = vma->vm_page_prot; -if (vma->vm_pgoff + vsize > lpc_ctrl->mem_base + lpc_ctrl->mem_size) +if (vma->vm_pgoff +vma_pages (vma) > lpc_ctrl->mem_size >>PAGE_SHIFT )return -EINVAL ;/* ast2400/2500 AHB accesses are not cache coherent */
drivers/misc/vmw_vmci/vmci_queue_pair.c +4 -2
@@ -2249,7 +2249,8 @@ int vmci_qp_broker_map(struct vmci_handle handle, result =VMCI_SUCCESS ; -if (context_id !=VMCI_HOST_CONTEXT_ID ) { +if (context_id !=VMCI_HOST_CONTEXT_ID && + !QPBROKERSTATE_HAS_MEM (entry)) {struct vmci_qp_page_store page_store; page_store.pages = guest_mem;
@@ -2356,7 +2357,8 @@ int vmci_qp_broker_unmap(struct vmci_handle handle, goto out; } -if (context_id !=VMCI_HOST_CONTEXT_ID ) { +if (context_id !=VMCI_HOST_CONTEXT_ID && +QPBROKERSTATE_HAS_MEM (entry)) {qp_acquire_queue_mutex (entry->produce_q); result =qp_save_headers (entry);if (result <VMCI_SUCCESS )
drivers/mmc/core/block.c +1 -2
@@ -592,6 +592,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, }mmc_wait_for_req (card->host, &mrq); +memcpy (&idata->ic.response, cmd.resp,sizeof (cmd.resp));if (cmd.error) { dev_err(mmc_dev(card->host), "%s: cmd error %d\n",
@@ -641,8 +642,6 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,if (idata->ic.postsleep_min_us)usleep_range (idata->ic.postsleep_min_us, idata->ic.postsleep_max_us); -memcpy (&(idata->ic.response), cmd.resp,sizeof (cmd.resp)); -if (idata->rpmb || (cmd.flags &MMC_RSP_R1B ) ==MMC_RSP_R1B ) {/* * Ensure RPMB/R1B command has completed by polling CMD13
drivers/mmc/host/dw_mmc.c +1 -0
@@ -808,6 +808,7 @@ static int dw_mci_edmac_start_dma(struct dw_mci *host,int ret =0 ;/* Set external dma config: burst size, burst width */ +memset (&cfg,0 ,sizeof (cfg)); cfg.dst_addr = host->phy_regs + fifo_offset; cfg.src_addr = cfg.dst_addr; cfg.dst_addr_width =DMA_SLAVE_BUSWIDTH_4_BYTES ;
drivers/mmc/host/moxart-mmc.c +1 -0
@@ -631,6 +631,7 @@ static int moxart_probe(struct platform_device *pdev) host->dma_chan_tx, host->dma_chan_rx); host->have_dma = true; +memset (&cfg,0 ,sizeof (cfg)); cfg.src_addr_width =DMA_SLAVE_BUSWIDTH_4_BYTES ; cfg.dst_addr_width =DMA_SLAVE_BUSWIDTH_4_BYTES ;
drivers/mmc/host/rtsx_pci_sdmmc.c +23 -13
@@ -551,9 +551,22 @@ static int sd_write_long_data(struct realtek_pci_sdmmc *host,return 0 ; } +static inline void sd_enable_initial_mode (struct realtek_pci_sdmmc *host) +{ +rtsx_pci_write_register (host->pcr,SD_CFG1 , +SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_128 ); +} + +static inline void sd_disable_initial_mode (struct realtek_pci_sdmmc *host) +{ +rtsx_pci_write_register (host->pcr,SD_CFG1 , +SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_0 ); +} +static int sd_rw_multi (struct realtek_pci_sdmmc *host,struct mmc_request *mrq) {struct mmc_data *data = mrq->data; +int err;if (host->sg_count <0 ) { data->error = host->sg_count;
@@ -562,22 +575,19 @@ static int sd_rw_multi(struct realtek_pci_sdmmc *host, struct mmc_request *mrq)return data->error; } -if (data->flags &MMC_DATA_READ ) -return sd_read_long_data (host, mrq); +if (data->flags &MMC_DATA_READ ) { +if (host->initial_mode) +sd_disable_initial_mode (host); -return sd_write_long_data (host, mrq); -} + err =sd_read_long_data (host, mrq); -static inline void sd_enable_initial_mode (struct realtek_pci_sdmmc *host) -{ -rtsx_pci_write_register (host->pcr,SD_CFG1 , -SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_128 ); -} +if (host->initial_mode) +sd_enable_initial_mode (host); -static inline void sd_disable_initial_mode (struct realtek_pci_sdmmc *host) -{ -rtsx_pci_write_register (host->pcr,SD_CFG1 , -SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_0 ); +return err; + } + +return sd_write_long_data (host, mrq); } static void sd_normal_rw(struct realtek_pci_sdmmc *host,
drivers/mmc/host/sdhci-of-arasan.c +15 -3
@@ -185,7 +185,12 @@ static void sdhci_arasan_set_clock(struct sdhci_host *host, unsigned int clock)* through low speeds without power cycling. */ sdhci_set_clock (host, host->max_clk); -phy_power_on (sdhci_arasan->phy); +if (phy_power_on (sdhci_arasan->phy)) { +pr_err ("%s: Cannot power on phy.\n" , +mmc_hostname (host->mmc)); +return ; + } + sdhci_arasan->is_phy_on = true;/*
@@ -221,7 +226,12 @@ static void sdhci_arasan_set_clock(struct sdhci_host *host, unsigned int clock)msleep (20 );if (ctrl_phy) { -phy_power_on (sdhci_arasan->phy); +if (phy_power_on (sdhci_arasan->phy)) { +pr_err ("%s: Cannot power on phy.\n" , +mmc_hostname (host->mmc)); +return ; + } + sdhci_arasan->is_phy_on = true; } }
@@ -395,7 +405,9 @@ static int sdhci_arasan_suspend(struct device *dev) ret =phy_power_off (sdhci_arasan->phy);if (ret) {dev_err (dev,"Cannot power off phy.\n" ); -sdhci_resume_host (host); +if (sdhci_resume_host (host)) +dev_err (dev,"Cannot resume host.\n" ); +return ret; } sdhci_arasan->is_phy_on = false;
drivers/mtd/nand/raw/cafe_nand.c +3 -1
@@ -758,7 +758,7 @@ static int cafe_nand_probe(struct pci_dev *pdev, "CAFE NAND", mtd);if (err) {dev_warn (&pdev->dev,"Could not register IRQ %d\n" , pdev->irq); - goto out_ior; + goto out_free_rs; }/* Disable master reset, enable NAND clock */
@@ -802,6 +802,8 @@ static int cafe_nand_probe(struct pci_dev *pdev,/* Disable NAND IRQ in global IRQ mask register */ cafe_writel (cafe, ~1 &cafe_readl (cafe,GLOBAL_IRQ_MASK ),GLOBAL_IRQ_MASK );free_irq (pdev->irq, mtd); + out_free_rs: +free_rs (cafe->rs); out_ior:pci_iounmap (pdev, cafe->mmio); out_free_mtd:
drivers/net/bonding/bond_main.c +2 -1
@@ -1912,7 +1912,6 @@ static int __bond_release_one(struct net_device *bond_dev,/* recompute stats just before removing the slave */ bond_get_stats (bond->dev, &bond->bond_stats); -bond_upper_dev_unlink (bond, slave);/* unregister rx_handler early so bond_handle_frame wouldn't be called * for this slave anymore. */
@@ -1921,6 +1920,8 @@ static int __bond_release_one(struct net_device *bond_dev,if (BOND_MODE (bond) ==BOND_MODE_8023AD )bond_3ad_unbind_slave (slave); +bond_upper_dev_unlink (bond, slave); +if (bond_mode_can_use_xmit_hash (bond))bond_update_slave_arr (bond, slave);
drivers/net/dsa/b53/b53_common.c +1 -2
@@ -2135,9 +2135,8 @@ static int b53_switch_init(struct b53_device *dev) dev->cpu_port =5 ; } -/* cpu port is always last */ - dev->num_ports = dev->cpu_port +1 ; dev->enabled_ports |=BIT (dev->cpu_port); + dev->num_ports =fls (dev->enabled_ports);/* Include non standard CPU port built-in PHYs to be probed */ if (is539x (dev) ||is531x5 (dev)) {
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c +1 -1
@@ -1245,7 +1245,7 @@ int bnx2x_iov_init_one(struct bnx2x *bp, int int_mode_param,/* SR-IOV capability was enabled but there are no VFs*/ if (iov->total ==0 ) { - err = -EINVAL ; + err =0 ; goto failed; }
drivers/net/ethernet/cadence/macb_ptp.c +10 -1
@@ -286,6 +286,12 @@ void gem_ptp_rxstamp(struct macb *bp, struct sk_buff *skb,if (GEM_BFEXT (DMA_RXVALID , desc->addr)) { desc_ptp =macb_ptp_desc (bp, desc); +/* Unlikely but check */ +if (!desc_ptp) { +dev_warn_ratelimited (&bp->pdev->dev, +"Timestamp not supported in BD\n" ); +return ; + }gem_hw_timestamp (bp, desc_ptp->ts_1, desc_ptp->ts_2, &ts);memset (shhwtstamps,0 ,sizeof (struct skb_shared_hwtstamps )); shhwtstamps->hwtstamp =ktime_set (ts.tv_sec, ts.tv_nsec);
@@ -318,8 +324,11 @@ int gem_ptp_txstamp(struct macb_queue *queue, struct sk_buff *skb,if (CIRC_SPACE (head, tail,PTP_TS_BUFFER_SIZE ) ==0 )return -ENOMEM ; -skb_shinfo (skb)->tx_flags |=SKBTX_IN_PROGRESS ; desc_ptp =macb_ptp_desc (queue->bp, desc); +/* Unlikely but check */ +if (!desc_ptp) +return -EINVAL ; +skb_shinfo (skb)->tx_flags |=SKBTX_IN_PROGRESS ; tx_timestamp = &queue->tx_timestamps[head]; tx_timestamp->skb = skb;/* ensure ts_1/ts_2 is loaded after ctrl (TX_USED check) */
drivers/net/ethernet/chelsio/cxgb/cxgb2.c +1 -0
@@ -1153,6 +1153,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)if (!adapter->registered_device_map) {pr_err ("%s: could not register any net devices\n" ,pci_name (pdev)); + err = -EINVAL ; goto out_release_adapter_res; }
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +7 -2
@@ -29,6 +29,8 @@ static const char hns3_driver_string[] =static const char hns3_copyright[] ="Copyright (c) 2017 Huawei Corporation." ;static struct hnae3_client client; +#define HNS3_MIN_TUN_PKT_LEN 65U +/* hns3_pci_tbl - PCI Device ID Table * * Last entry must be all 0s
@@ -792,8 +794,11 @@ static int hns3_set_l3l4_type_csum(struct sk_buff *skb, u8 ol4_proto, HNS3_L4T_TCP);break ;case IPPROTO_UDP : -if (hns3_tunnel_csum_bug (skb)) -return skb_checksum_help (skb); +if (hns3_tunnel_csum_bug (skb)) { +int ret =skb_put_padto (skb,HNS3_MIN_TUN_PKT_LEN ); + +return ret ? ret :skb_checksum_help (skb); + }hnae3_set_bit (*type_cs_vlan_tso,HNS3_TXD_L4CS_B ,1 ); hnae3_set_field(*type_cs_vlan_tso,
drivers/net/ethernet/ibm/ibmvnic.c +8 -0
@@ -4038,6 +4038,14 @@ static int handle_login_rsp(union ibmvnic_crq *login_rsp_crq,return 0 ; } +if (adapter->failover_pending) { + adapter->init_done_rc = -EAGAIN ; +netdev_dbg (netdev,"Failover pending, ignoring login response\n" ); +complete (&adapter->init_done); +/* login response buffer will be released on reset */ +return 0 ; + } + netdev->mtu = adapter->req_mtu -ETH_HLEN ;netdev_dbg (adapter->netdev,"Login Response Buffer:\n" );
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +2 -3
@@ -1558,9 +1558,9 @@ static int build_match_list(struct match_list_head *match_head, curr_match =kmalloc (sizeof (*curr_match),GFP_ATOMIC );if (!curr_match) { +rcu_read_unlock ();free_match_list (match_head); - err = -ENOMEM ; - goto out; +return -ENOMEM ; }if (!tree_get_node (&g->node)) {kfree (curr_match);
@@ -1569,7 +1569,6 @@ static int build_match_list(struct match_list_head *match_head, curr_match->g = g;list_add_tail (&curr_match->list, &match_head->list); } -out:rcu_read_unlock ();return err; }
drivers/net/ethernet/qlogic/qed/qed_main.c +6 -1
@@ -439,7 +439,12 @@ static int qed_enable_msix(struct qed_dev *cdev, rc = cnt; } -if (rc >0 ) { +/* For VFs, we should return with an error in case we didn't get the +* exact number of msix vectors as we requested. +* Not doing that will lead to a crash when starting queues for +* this VF. +*/ +if ((IS_PF (cdev) && rc >0 ) || (IS_VF (cdev) && rc == cnt)) {/* MSI-x configuration was achieved */ int_params->out.int_mode =QED_INT_MODE_MSIX ; int_params->out.num_vectors = rc;
drivers/net/ethernet/qlogic/qed/qed_mcp.c +5 -1
@@ -2841,6 +2841,7 @@ qed_mcp_get_nvm_image_att(struct qed_hwfn *p_hwfn, struct qed_nvm_image_att *p_image_att) {enum nvm_image_type type; +int rc;u32 i;/* Translate image_id into MFW definitions */
@@ -2866,7 +2867,10 @@ qed_mcp_get_nvm_image_att(struct qed_hwfn *p_hwfn,return -EINVAL ; } -qed_mcp_nvm_info_populate (p_hwfn); + rc =qed_mcp_nvm_info_populate (p_hwfn); +if (rc) +return rc; +for (i =0 ; i < p_hwfn->nvm_info.num_images; i++)if (type == p_hwfn->nvm_info.image_att[i].image_type)break ;
drivers/net/ethernet/qlogic/qede/qede_main.c +1 -1
@@ -1676,6 +1676,7 @@ static void qede_sync_free_irqs(struct qede_dev *edev) } edev->int_info.used_cnt =0 ; + edev->int_info.msix_cnt =0 ; }static int qede_req_msix_irqs (struct qede_dev *edev)
@@ -2193,7 +2194,6 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode, goto out; err4:qede_sync_free_irqs (edev); -memset (&edev->int_info.msix_cnt,0 ,sizeof (struct qed_int_info )); err3:qede_napi_disable_remove (edev); err2:
drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c +0 -1
@@ -440,7 +440,6 @@ int qlcnic_pinit_from_rom(struct qlcnic_adapter *adapter)QLCWR32 (adapter,QLCNIC_CRB_PEG_NET_4 +0x3c ,1 );msleep (20 ); -qlcnic_rom_unlock (adapter);/* big hammer don't reset CAM block on reset */ QLCWR32 (adapter,QLCNIC_ROMUSB_GLB_SW_RESET ,0xfeffffff );
drivers/net/ethernet/qualcomm/qca_spi.c +1 -1
@@ -413,7 +413,7 @@ qcaspi_receive(struct qcaspi *qca)skb_put (qca->rx_skb, retcode); qca->rx_skb->protocol =eth_type_trans ( qca->rx_skb, qca->rx_skb->dev); - qca->rx_skb->ip_summed =CHECKSUM_UNNECESSARY ; +skb_checksum_none_assert (qca->rx_skb);netif_rx_ni (qca->rx_skb); qca->rx_skb =netdev_alloc_skb_ip_align (net_dev, net_dev->mtu +VLAN_ETH_HLEN );
drivers/net/ethernet/qualcomm/qca_uart.c +1 -1
@@ -107,7 +107,7 @@ qca_tty_receive(struct serdev_device *serdev, const unsigned char *data,skb_put (qca->rx_skb, retcode); qca->rx_skb->protocol =eth_type_trans ( qca->rx_skb, qca->rx_skb->dev); - qca->rx_skb->ip_summed =CHECKSUM_UNNECESSARY ; +skb_checksum_none_assert (qca->rx_skb);netif_rx_ni (qca->rx_skb); qca->rx_skb = netdev_alloc_skb_ip_align(netdev, netdev->mtu +
drivers/net/ethernet/rdc/r6040.c +8 -1
@@ -133,6 +133,8 @@#define PHY_ST 0x8A/* PHY status register */ #define MAC_SM 0xAC/* MAC status machine */ #define MAC_SM_RST 0x0002/* MAC status machine reset */ +#define MD_CSC 0xb6/* MDC speed control register */ +#define MD_CSC_DEFAULT 0x0030#define MAC_ID 0xBE/* Identifier register */ #define TX_DCNT 0x80/* TX descriptor count */
@@ -368,8 +370,9 @@ static void r6040_reset_mac(struct r6040_private *lp) {void __iomem *ioaddr = lp->base;int limit =MAC_DEF_TIMEOUT ; -u16 cmd; +u16 cmd, md_csc; + md_csc =ioread16 (ioaddr +MD_CSC );iowrite16 (MAC_RST , ioaddr +MCR1 );while (limit--) { cmd =ioread16 (ioaddr +MCR1 );
@@ -381,6 +384,10 @@ static void r6040_reset_mac(struct r6040_private *lp)iowrite16 (MAC_SM_RST , ioaddr +MAC_SM );iowrite16 (0 , ioaddr +MAC_SM );mdelay (5 ); + +/* Restore MDIO clock frequency */ +if (md_csc !=MD_CSC_DEFAULT ) +iowrite16 (md_csc, ioaddr +MD_CSC ); }static void r6040_init_mac_regs (struct net_device *dev)
drivers/net/ethernet/renesas/sh_eth.c +1 -0
@@ -2547,6 +2547,7 @@ static int sh_eth_start_xmit(struct sk_buff *skb, struct net_device *ndev)else txdesc->status |=cpu_to_le32 (TD_TACT ); +wmb ();/* cur_tx must be incremented after TACT bit was set */ mdp->cur_tx++;if (!(sh_eth_read (ndev,EDTRR ) & mdp->cd->edtrr_trns))
drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +8 -10
@@ -288,10 +288,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev) val &= ~NSS_COMMON_GMAC_CTL_PHY_IFACE_SEL ;break ;default : -dev_err (&pdev->dev,"Unsupported PHY mode: \"%s\"\n" , -phy_modes (gmac->phy_mode)); - err = -EINVAL ; - goto err_remove_config_dt; + goto err_unsupported_phy; }regmap_write (gmac->nss_common,NSS_COMMON_GMAC_CTL (gmac->id), val);
@@ -308,10 +305,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev)NSS_COMMON_CLK_SRC_CTRL_OFFSET (gmac->id);break ;default : -dev_err (&pdev->dev,"Unsupported PHY mode: \"%s\"\n" , -phy_modes (gmac->phy_mode)); - err = -EINVAL ; - goto err_remove_config_dt; + goto err_unsupported_phy; }regmap_write (gmac->nss_common,NSS_COMMON_CLK_SRC_CTRL , val);
@@ -328,8 +322,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev)NSS_COMMON_CLK_GATE_GMII_TX_EN (gmac->id);break ;default : -/* We don't get here; the switch above will have errored out */ -unreachable (); + goto err_unsupported_phy; }regmap_write (gmac->nss_common,NSS_COMMON_CLK_GATE , val);
@@ -360,6 +353,11 @@ static int ipq806x_gmac_probe(struct platform_device *pdev)return 0 ; +err_unsupported_phy: +dev_err (&pdev->dev,"Unsupported PHY mode: \"%s\"\n" , +phy_modes (gmac->phy_mode)); + err = -EINVAL ; + err_remove_config_dt:stmmac_remove_config_dt (pdev, plat_dat);
drivers/net/ethernet/wiznet/w5100.c +2 -0
@@ -1059,6 +1059,8 @@ static int w5100_mmio_probe(struct platform_device *pdev) mac_addr = data->mac_addr; mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!mem) +return -EINVAL ;if (resource_size (mem) <W5100_BUS_DIRECT_SIZE ) ops = &w5100_mmio_indirect_ops;else
drivers/net/ethernet/xilinx/ll_temac_main.c +1 -3
@@ -736,10 +736,8 @@ temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)/* Kick off the transfer */ lp->dma_out (lp,TX_TAILDESC_PTR , tail_p);/* DMA start */ -if (temac_check_tx_bd_space (lp,MAX_SKB_FRAGS +1 )) { -netdev_info (ndev,"%s -> netif_stop_queue\n" , __func__); +if (temac_check_tx_bd_space (lp,MAX_SKB_FRAGS +1 ))netif_stop_queue (ndev); - }return NETDEV_TX_OK ; }
drivers/net/phy/dp83640_reg.h +1 -1
@@ -5,7 +5,7 @@#ifndef HAVE_DP83640_REGISTERS #define HAVE_DP83640_REGISTERS -#define PAGE0 0x0000 +/* #define PAGE0 0x0000 */ #define PHYCR2 0x001c/* PHY Control Register 2 */ #define PAGE4 0x0004
drivers/net/usb/cdc_mbim.c +5 -0
@@ -655,6 +655,11 @@ static const struct usb_device_id mbim_devs[] = { .driver_info = (unsigned long)&cdc_mbim_info_avoid_altsetting_toggle, }, +/* Telit LN920 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x1061, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long )&cdc_mbim_info_avoid_altsetting_toggle, + }, + /* default entry */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&cdc_mbim_info_zlp,
drivers/net/wireless/ath/ath6kl/wmi.c +3 -1
@@ -2513,8 +2513,10 @@ static int ath6kl_wmi_sync_point(struct wmi *wmi, u8 if_idx) goto free_data_skb;for (index =0 ; index < num_pri_streams; index++) { -if (WARN_ON (!data_sync_bufs[index].skb)) +if (WARN_ON (!data_sync_bufs[index].skb)) { + ret = -ENOMEM ; goto free_data_skb; + } ep_id = ath6kl_ac2_endpoint_id(wmi->parent_dev, data_sync_bufs[index].
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +2 -1
@@ -3351,7 +3351,8 @@ static int ar9300_eeprom_restore_internal(struct ath_hw *ah,"Found block at %x: code=%d ref=%d length=%d major=%d minor=%d\n" , cptr, code, reference, length, major, minor);if ((!AR_SREV_9485 (ah) && length >=1024 ) || - (AR_SREV_9485 (ah) && length >EEPROM_DATA_LEN_9485 )) { + (AR_SREV_9485 (ah) && length >EEPROM_DATA_LEN_9485 ) || + (length > cptr)) {ath_dbg (common,EEPROM ,"Skipping bad header\n" ); cptr -=COMP_HDR_LEN ;continue ;
drivers/net/wireless/ath/ath9k/hw.c +7 -5
@@ -1622,7 +1622,6 @@ static void ath9k_hw_apply_gpio_override(struct ath_hw *ah)ath9k_hw_gpio_request_out (ah, i,NULL ,AR_GPIO_OUTPUT_MUX_AS_OUTPUT );ath9k_hw_set_gpio (ah, i, !!(ah->gpio_val &BIT (i))); -ath9k_hw_gpio_free (ah, i); } }
@@ -2729,14 +2728,17 @@ static void ath9k_hw_gpio_cfg_output_mux(struct ath_hw *ah, u32 gpio, u32 type)static void ath9k_hw_gpio_cfg_soc (struct ath_hw *ah,u32 gpio,bool out,const char *label) { +int err; +if (ah->caps.gpio_requested &BIT (gpio))return ; -/* may be requested by BSP, free anyway */ -gpio_free (gpio); - -if (gpio_request_one (gpio, out ?GPIOF_OUT_INIT_LOW :GPIOF_IN , label)) + err =gpio_request_one (gpio, out ?GPIOF_OUT_INIT_LOW :GPIOF_IN , label); +if (err) { +ath_err (ath9k_hw_common (ah),"request GPIO%d failed:%d\n" , + gpio, err);return ; + } ah->caps.gpio_requested |=BIT (gpio); }
drivers/ntb/test/ntb_perf.c +1 -0
@@ -600,6 +600,7 @@ static int perf_setup_inbuf(struct perf_peer *peer)return -ENOMEM ; }if (!IS_ALIGNED (peer->inbuf_xlat, xlat_align)) { + ret = -EINVAL ;dev_err (&perf->ntb->dev,"Unaligned inbuf allocated\n" ); goto err_free_inbuf; }
drivers/nvme/host/rdma.c +2 -2
@@ -643,13 +643,13 @@ static int nvme_rdma_alloc_io_queues(struct nvme_rdma_ctrl *ctrl)if (ret)return ret; - ctrl->ctrl.queue_count = nr_io_queues +1 ; -if (ctrl->ctrl.queue_count <2 ) { +if (nr_io_queues ==0 ) {dev_err (ctrl->ctrl.device,"unable to set any I/O queues\n" );return -ENOMEM ; } + ctrl->ctrl.queue_count = nr_io_queues +1 ;dev_info (ctrl->ctrl.device,"creating %d I/O queues.\n" , nr_io_queues);
drivers/of/kobj.c +1 -1
@@ -119,7 +119,7 @@ int __of_attach_node_sysfs(struct device_node *np)struct property *pp;int rc; -if (!of_kset) +if (!IS_ENABLED (CONFIG_SYSFS ) || !of_kset)return 0 ; np->kobj.kset = of_kset;
drivers/parport/ieee1284_ops.c +1 -1
@@ -535,7 +535,7 @@ size_t parport_ieee1284_ecp_read_data (struct parport *port, goto out;/* Yield the port for a while. */ -if (count && dev->port->irq !=PARPORT_IRQ_NONE ) { +if (dev->port->irq !=PARPORT_IRQ_NONE ) {parport_release (dev);schedule_timeout_interruptible (msecs_to_jiffies (40 ));parport_claim_or_block (dev);
drivers/pci/controller/pci-aardvark.c +10 -1
@@ -166,7 +166,7 @@ (PCIE_CONF_BUS (bus) |PCIE_CONF_DEV (PCI_SLOT (devfn)) | \ PCIE_CONF_FUNC(PCI_FUNC(devfn)) | PCIE_CONF_REG(where)) -#define PIO_RETRY_CNT 500 +#define PIO_RETRY_CNT 750000/* 1.5 s */ #define PIO_RETRY_DELAY 2/* 2 us*/ #define LINK_WAIT_MAX_RETRIES 10
@@ -181,6 +181,7 @@ struct advk_pcie {struct list_head resources;struct irq_domain *irq_domain;struct irq_chip irq_chip; +raw_spinlock_t irq_lock;struct irq_domain *msi_domain;struct irq_domain *msi_inner_domain;struct irq_chip msi_bottom_irq_chip;
@@ -603,22 +604,28 @@ static void advk_pcie_irq_mask(struct irq_data *d) {struct advk_pcie *pcie = d->domain->host_data;irq_hw_number_t hwirq =irqd_to_hwirq (d); +unsigned long flags;u32 mask; +raw_spin_lock_irqsave (&pcie->irq_lock, flags); mask =advk_readl (pcie,PCIE_ISR1_MASK_REG ); mask |=PCIE_ISR1_INTX_ASSERT (hwirq);advk_writel (pcie, mask,PCIE_ISR1_MASK_REG ); +raw_spin_unlock_irqrestore (&pcie->irq_lock, flags); }static void advk_pcie_irq_unmask (struct irq_data *d) {struct advk_pcie *pcie = d->domain->host_data;irq_hw_number_t hwirq =irqd_to_hwirq (d); +unsigned long flags;u32 mask; +raw_spin_lock_irqsave (&pcie->irq_lock, flags); mask =advk_readl (pcie,PCIE_ISR1_MASK_REG ); mask &= ~PCIE_ISR1_INTX_ASSERT (hwirq);advk_writel (pcie, mask,PCIE_ISR1_MASK_REG ); +raw_spin_unlock_irqrestore (&pcie->irq_lock, flags); } static int advk_pcie_irq_map(struct irq_domain *h,
@@ -701,6 +708,8 @@ static int advk_pcie_init_irq_domain(struct advk_pcie *pcie)struct device_node *pcie_intc_node;struct irq_chip *irq_chip; +raw_spin_lock_init (&pcie->irq_lock); + pcie_intc_node =of_get_next_child (node,NULL );if (!pcie_intc_node) {dev_err (dev,"No PCIe Intc node found\n" );
drivers/pci/controller/pcie-xilinx-nwl.c +12 -0
@@ -6,6 +6,7 @@* (C) Copyright 2014 - 2015, Xilinx, Inc. */ +#include <linux/clk.h> #include <linux/delay.h> #include <linux/interrupt.h> #include <linux/irq.h>
@@ -169,6 +170,7 @@ struct nwl_pcie {u8 root_busno;struct nwl_msi msi;struct irq_domain *legacy_irq_domain; +struct clk *clk;raw_spinlock_t leg_mask_lock; };
@@ -849,6 +851,16 @@ static int nwl_pcie_probe(struct platform_device *pdev)return err; } + pcie->clk =devm_clk_get (dev,NULL ); +if (IS_ERR (pcie->clk)) +return PTR_ERR (pcie->clk); + + err =clk_prepare_enable (pcie->clk); +if (err) { +dev_err (dev,"can't enable PCIe ref clock\n" ); +return err; + } + err =nwl_pcie_bridge_init (pcie);if (err) {dev_err (dev,"HW Initialization failed\n" );
drivers/pci/msi.c +3 -0
@@ -754,6 +754,9 @@ static void msix_mask_all(void __iomem *base, int tsize)u32 ctrl =PCI_MSIX_ENTRY_CTRL_MASKBIT ;int i; +if (pci_msi_ignore_mask) +return ; +for (i =0 ; i < tsize; i++, base +=PCI_MSIX_ENTRY_SIZE )writel (ctrl, base +PCI_MSIX_ENTRY_VECTOR_CTRL ); }
drivers/pci/pci.c +20 -13
@@ -224,7 +224,7 @@ static int pci_dev_str_match_path(struct pci_dev *dev, const char *path, *endptr =strchrnul (path,';' ); - wpath =kmemdup_nul (path, *endptr - path,GFP_KERNEL ); + wpath =kmemdup_nul (path, *endptr - path,GFP_ATOMIC );if (!wpath)return -ENOMEM ;
@@ -1591,11 +1591,7 @@ static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags)* so that things like MSI message writing will behave as expected * (e.g. if the device really is in D0 at enable time). */ -if (dev->pm_cap) { -u16 pmcsr; -pci_read_config_word (dev, dev->pm_cap +PCI_PM_CTRL , &pmcsr); - dev->current_state = (pmcsr &PCI_PM_CTRL_STATE_MASK ); - } +pci_update_current_state (dev, dev->current_state);if (atomic_inc_return (&dev->enable_cnt) >1 )return 0 ;/* already enabled */
@@ -2170,7 +2166,14 @@ static int __pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool enableif (enable) {int error; -if (pci_pme_capable (dev, state)) +/* +* Enable PME signaling if the device can signal PME from +* D3cold regardless of whether or not it can signal PME from +* the current target state, because that will allow it to +* signal PME when the hierarchy above it goes into D3cold and +* the device itself ends up in D3cold as a result of that. +*/ +if (pci_pme_capable (dev, state) ||pci_pme_capable (dev, PCI_D3cold))pci_pme_active (dev, true);else ret =1 ;
@@ -2274,16 +2277,20 @@ static pci_power_t pci_target_state(struct pci_dev *dev, bool wakeup)if (dev->current_state == PCI_D3cold) target_state = PCI_D3cold; -if (wakeup) { +if (wakeup && dev->pme_support) { +pci_power_t state = target_state; +/* * Find the deepest state from which the device can generate * PME#. */ -if (dev->pme_support) { -while (target_state - && !(dev->pme_support & (1 << target_state))) - target_state--; - } +while (state && !(dev->pme_support & (1 << state))) + state--; + +if (state) +return state; +else if (dev->pme_support &1 ) +return PCI_D0 ; }return target_state;
drivers/pci/quirks.c +18 -8
@@ -3152,12 +3152,13 @@ static void fixup_mpss_256(struct pci_dev *dev) { dev->pcie_mpss =1 ;/* 256 bytes */ } -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0 , fixup_mpss_256); -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1 , fixup_mpss_256); -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000B , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0 , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1 , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000B , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_ASMEDIA ,0x0612 , fixup_mpss_256);/* * Intel 5000 and 5100 Memory controllers have an erratum with read completion
@@ -4777,6 +4778,10 @@ static const struct pci_dev_acs_enabled { { 0x10df, 0x720, pci_quirk_mf_endpoint_acs }, /* Emulex Skyhawk-R *//* Cavium ThunderX */ { PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs }, +/* Cavium multi-function devices */ + { PCI_VENDOR_ID_CAVIUM, 0xA026, pci_quirk_mf_endpoint_acs }, + { PCI_VENDOR_ID_CAVIUM, 0xA059, pci_quirk_mf_endpoint_acs }, + { PCI_VENDOR_ID_CAVIUM, 0xA060, pci_quirk_mf_endpoint_acs },/* APM X-Gene */ { PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs }, /* Ampere Computing */
@@ -5253,7 +5258,7 @@ DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, PCI_CLASS_MULTIMEDIA_HD_AUDIO, 8, quirk_gpu_hda);/* -* Create device link for NVIDIA GPU with integrated USB xHCI Host +* Create device link for GPUs with integrated USB xHCI Host * controller to VGA. */ static void quirk_gpu_usb (struct pci_dev *usb)
@@ -5262,9 +5267,11 @@ static void quirk_gpu_usb(struct pci_dev *usb) }DECLARE_PCI_FIXUP_CLASS_FINAL (PCI_VENDOR_ID_NVIDIA ,PCI_ANY_ID ,PCI_CLASS_SERIAL_USB ,8 , quirk_gpu_usb); +DECLARE_PCI_FIXUP_CLASS_FINAL (PCI_VENDOR_ID_ATI ,PCI_ANY_ID , +PCI_CLASS_SERIAL_USB ,8 , quirk_gpu_usb);/* -* Create device link for NVIDIA GPU with integrated Type-C UCSI controller +* Create device link for GPUs with integrated Type-C UCSI controller * to VGA. Currently there is no class code defined for UCSI device over PCI * so using UNKNOWN class for now and it will be updated when UCSI * over PCI gets a class code.
@@ -5277,6 +5284,9 @@ static void quirk_gpu_usb_typec_ucsi(struct pci_dev *ucsi)DECLARE_PCI_FIXUP_CLASS_FINAL (PCI_VENDOR_ID_NVIDIA ,PCI_ANY_ID ,PCI_CLASS_SERIAL_UNKNOWN ,8 , quirk_gpu_usb_typec_ucsi); +DECLARE_PCI_FIXUP_CLASS_FINAL (PCI_VENDOR_ID_ATI ,PCI_ANY_ID , +PCI_CLASS_SERIAL_UNKNOWN ,8 , + quirk_gpu_usb_typec_ucsi);/* * Enable the NVIDIA GPU integrated HDA controller if the BIOS left it
drivers/pci/syscall.c +3 -1
@@ -21,8 +21,10 @@ SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,long err;int cfg_ret; + err = -EPERM ; + dev =NULL ;if (!capable (CAP_SYS_ADMIN )) -return -EPERM ; + goto error; err = -ENODEV ; dev =pci_get_domain_bus_and_slot (0 , bus, dfn);
drivers/pinctrl/pinctrl-single.c +1 -0
@@ -1201,6 +1201,7 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs,if (PCS_HAS_PINCONF ) {dev_err (pcs->dev,"pinconf not supported\n" ); + res = -ENOTSUPP ; goto free_pingroups; }
drivers/pinctrl/samsung/pinctrl-samsung.c +1 -1
@@ -918,7 +918,7 @@ static int samsung_pinctrl_register(struct platform_device *pdev, pin_bank->grange.pin_base = drvdata->pin_base + pin_bank->pin_base; pin_bank->grange.base = pin_bank->grange.pin_base; - pin_bank->grange.npins = pin_bank->gpio_chip.ngpio; + pin_bank->grange.npins = pin_bank->nr_pins; pin_bank->grange.gc = &pin_bank->gpio_chip;pinctrl_add_gpio_range (drvdata->pctl_dev, &pin_bank->grange); }
drivers/platform/chrome/cros_ec_proto.c +9 -0
@@ -219,6 +219,15 @@ static int cros_ec_host_command_proto_query(struct cros_ec_device *ec_dev, msg->insize =sizeof (struct ec_response_get_protocol_info ); ret =send_command (ec_dev, msg); +/* +* Send command once again when timeout occurred. +* Fingerprint MCU (FPMCU) is restarted during system boot which +* introduces small window in which FPMCU won't respond for any +* messages sent by kernel. There is no need to wait before next +* attempt because we waited at least EC_MSG_DEADLINE_MS. +*/ +if (ret == -ETIMEDOUT ) + ret =send_command (ec_dev, msg);if (ret <0 ) { dev_dbg(ec_dev->dev,
drivers/platform/x86/dell-smbios-wmi.c +1 -0
@@ -72,6 +72,7 @@ static int run_smbios_call(struct wmi_device *wdev)if (obj->type ==ACPI_TYPE_INTEGER )dev_dbg (&wdev->dev,"SMBIOS call failed: %llu\n" , obj->integer.value); +kfree (output.pointer);return -EIO ; }memcpy (&priv->buf->std, obj->buffer.pointer, obj->buffer.length);
drivers/power/supply/axp288_fuel_gauge.c +2 -2
@@ -158,7 +158,7 @@ static int fuel_gauge_reg_readb(struct axp288_fg_info *info, int reg) }if (ret <0 ) { -dev_err (&info->pdev->dev,"axp288 reg read err:%d\n" , ret); +dev_err (&info->pdev->dev,"Error reading reg 0x%02x err: %d\n" , reg, ret);return ret; }
@@ -172,7 +172,7 @@ static int fuel_gauge_reg_writeb(struct axp288_fg_info *info, int reg, u8 val) ret =regmap_write (info->regmap, reg, (unsigned int )val);if (ret <0 ) -dev_err (&info->pdev->dev,"axp288 reg write err:%d\n" , ret); +dev_err (&info->pdev->dev,"Error writing reg 0x%02x err: %d\n" , reg, ret);return ret; }
drivers/power/supply/max17042_battery.c +6 -2
@@ -740,7 +740,7 @@ static inline void max17042_override_por_values(struct max17042_chip *chip)struct max17042_config_data *config = chip->pdata->config_data;max17042_override_por (map,MAX17042_TGAIN , config->tgain); -max17042_override_por (map, MAx17042_TOFF, config->toff); +max17042_override_por (map,MAX17042_TOFF , config->toff);max17042_override_por (map,MAX17042_CGAIN , config->cgain);max17042_override_por (map,MAX17042_COFF , config->coff);
@@ -856,8 +856,12 @@ static irqreturn_t max17042_thread_handler(int id, void *dev) {struct max17042_chip *chip = dev;u32 val; +int ret; + + ret =regmap_read (chip->regmap,MAX17042_STATUS , &val); +if (ret) +return IRQ_HANDLED ; -regmap_read (chip->regmap,MAX17042_STATUS , &val);if ((val &STATUS_INTR_SOCMIN_BIT ) || (val &STATUS_INTR_SOCMAX_BIT )) {dev_info (&chip->client->dev,"SOC threshold INTR\n" );
drivers/rtc/rtc-tps65910.c +1 -1
@@ -470,6 +470,6 @@ static struct platform_driver tps65910_rtc_driver = { };module_platform_driver (tps65910_rtc_driver); -MODULE_ALIAS ("platform:rtc-tps65910" ); +MODULE_ALIAS ("platform:tps65910-rtc" );MODULE_AUTHOR ("Venu Byravarasu <[email protected]>" );MODULE_LICENSE ("GPL" );
drivers/s390/cio/css.c +17 -0
@@ -364,9 +364,26 @@ static ssize_t pimpampom_show(struct device *dev, }static DEVICE_ATTR_RO (pimpampom); +static ssize_t dev_busid_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct subchannel *sch =to_subchannel (dev); +struct pmcw *pmcw = &sch->schib.pmcw; + +if ((pmcw->st ==SUBCHANNEL_TYPE_IO || + pmcw->st ==SUBCHANNEL_TYPE_MSG ) && pmcw->dnv) + return sysfs_emit(buf, "0.%x.%04x\n", sch->schid.ssid,
Lines of this file are not shown. View the raw message.
drivers/usb/host/fotg210-hcd.c +19 -22
41 lines not on this page · raw message
drivers/video/backlight/pwm_bl.c +28 -26
54 lines not on this page · raw message
fs/crypto/hooks.c +44 -0
44 lines not on this page · raw message
fs/userfaultfd.c +45 -48
93 lines not on this page · raw message
kernel/bpf/verifier.c +242 -256
498 lines not on this page · raw message
kernel/time/hrtimer.c +53 -7
60 lines not on this page · raw message
net/bluetooth/hci_event.c +77 -31
108 lines not on this page · raw message
net/bluetooth/sco.c +51 -34
85 lines not on this page · raw message
net/ipv4/route.c +31 -17
48 lines not on this page · raw message
tools/testing/selftests/bpf/test_maps.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_verifier.c +126 -18
144 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.207 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
------------
Documentation/admin-guide/devices.txt | 6 Documentation/devicetree/bindings/mtd/gpmc-nand.txt | 2 Makefile | 2 arch/arc/mm/cache.c | 2 arch/arm/boot/compressed/Makefile | 2 arch/arm/boot/dts/imx53-ppd.dts | 23 arch/arm/boot/dts/qcom-apq8064.dtsi | 6 arch/arm/boot/dts/tegra20-tamonten.dtsi | 14 arch/arm/kernel/Makefile | 6 arch/arm/kernel/return_address.c | 4 arch/arm/mach-imx/mmdc.c | 14 arch/arm/net/bpf_jit_32.c | 3 arch/arm64/boot/dts/exynos/exynos7.dtsi | 2 arch/arm64/boot/dts/qcom/ipq8074-hk01.dts | 2 arch/arm64/include/asm/kernel-pgtable.h | 4 arch/arm64/kernel/fpsimd.c | 2 arch/arm64/kernel/head.S | 11 arch/arm64/net/bpf_jit_comp.c | 13 arch/m68k/emu/nfeth.c | 4 arch/mips/mti-malta/malta-dtshim.c | 2 arch/mips/net/ebpf_jit.c | 3 arch/openrisc/kernel/entry.S | 2 arch/parisc/kernel/signal.c | 6 arch/powerpc/boot/crt0.S | 3 arch/powerpc/kernel/module_64.c | 2 arch/powerpc/kernel/stacktrace.c | 1 arch/powerpc/net/bpf_jit_comp64.c | 6 arch/powerpc/perf/hv-gpci.c | 2 arch/s390/kernel/jump_label.c | 2 arch/s390/kvm/interrupt.c | 4 arch/s390/kvm/kvm-s390.h | 2 arch/s390/net/bpf_jit_comp.c | 14 arch/sparc/net/bpf_jit_comp_64.c | 3 arch/x86/events/amd/ibs.c | 8 arch/x86/events/intel/pt.c | 2 arch/x86/kernel/cpu/intel_rdt_monitor.c | 6 arch/x86/kernel/reboot.c | 3 arch/x86/kvm/x86.c | 4 arch/x86/mm/init_64.c | 6 arch/x86/net/bpf_jit_comp.c | 7 arch/x86/net/bpf_jit_comp32.c | 6 arch/x86/xen/enlighten_pv.c | 7 arch/x86/xen/p2m.c | 4 arch/xtensa/Kconfig | 2 arch/xtensa/platforms/iss/console.c | 17 block/bfq-iosched.c | 18 block/blk-zoned.c | 6 certs/Makefile | 8 drivers/ata/libata-core.c | 6 drivers/ata/sata_dwc_460ex.c | 12 drivers/base/power/trace.c | 10 drivers/base/regmap/regmap.c | 2 drivers/bcma/main.c | 6 drivers/block/Kconfig | 4 drivers/block/cryptoloop.c | 2 drivers/clk/clk.c | 10 drivers/clk/mvebu/kirkwood.c | 1 drivers/clocksource/sh_cmt.c | 30 drivers/cpufreq/powernv-cpufreq.c | 16 drivers/crypto/mxs-dcp.c | 81 +- drivers/crypto/omap-sham.c | 2 drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c | 4 drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c | 4 drivers/crypto/qat/qat_common/adf_common_drv.h | 8 drivers/crypto/qat/qat_common/adf_init.c | 5 drivers/crypto/qat/qat_common/adf_isr.c | 7 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c | 3 drivers/crypto/qat/qat_common/adf_vf2pf_msg.c | 12 drivers/crypto/qat/qat_common/adf_vf_isr.c | 7 drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c | 4 drivers/crypto/talitos.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 16 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 10 drivers/gpu/drm/msm/dsi/dsi.c | 6 drivers/gpu/ipu-v3/ipu-cpmem.c | 30 drivers/hid/hid-input.c | 2 drivers/i2c/busses/i2c-highlander.c | 2 drivers/i2c/busses/i2c-iop3xx.c | 6 drivers/i2c/busses/i2c-mt65xx.c | 2 drivers/i2c/busses/i2c-s3c2410.c | 2 drivers/iio/dac/ad5624r_spi.c | 18 drivers/infiniband/core/iwcm.c | 19 drivers/md/bcache/super.c | 16 drivers/md/dm-crypt.c | 7 drivers/md/dm-thin-metadata.c | 2 drivers/md/persistent-data/dm-block-manager.c | 14 drivers/media/dvb-frontends/dib8000.c | 58 + drivers/media/i2c/imx258.c | 4 drivers/media/i2c/tda1997x.c | 6 drivers/media/platform/qcom/venus/venc.c | 2 drivers/media/platform/tegra-cec/tegra_cec.c | 10 drivers/media/rc/rc-loopback.c | 2 drivers/media/usb/dvb-usb/nova-t-usb2.c | 6 drivers/media/usb/dvb-usb/vp702x.c | 12 drivers/media/usb/em28xx/em28xx-input.c | 1 drivers/media/usb/go7007/go7007-driver.c | 26 drivers/media/usb/stkwebcam/stk-webcam.c | 6 drivers/media/usb/uvc/uvc_v4l2.c | 34 drivers/media/v4l2-core/v4l2-dv-timings.c | 4 drivers/mfd/ab8500-core.c | 2 drivers/mfd/axp20x.c | 3 drivers/mfd/stmpe.c | 4 drivers/mfd/tc3589x.c | 2 drivers/mfd/wm8994-irq.c | 2 drivers/misc/aspeed-lpc-ctrl.c | 2 drivers/misc/vmw_vmci/vmci_queue_pair.c | 6 drivers/mmc/core/block.c | 3 drivers/mmc/host/dw_mmc.c | 1 drivers/mmc/host/moxart-mmc.c | 1 drivers/mmc/host/rtsx_pci_sdmmc.c | 36 drivers/mmc/host/sdhci-of-arasan.c | 18 drivers/mtd/nand/raw/cafe_nand.c | 4 drivers/net/bonding/bond_main.c | 3 drivers/net/dsa/b53/b53_common.c | 3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 2 drivers/net/ethernet/cadence/macb_ptp.c | 11 drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 1 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 9 drivers/net/ethernet/ibm/ibmvnic.c | 8 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 5 drivers/net/ethernet/qlogic/qed/qed_main.c | 7 drivers/net/ethernet/qlogic/qed/qed_mcp.c | 6 drivers/net/ethernet/qlogic/qede/qede_main.c | 2 drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c | 1 drivers/net/ethernet/qualcomm/qca_spi.c | 2 drivers/net/ethernet/qualcomm/qca_uart.c | 2 drivers/net/ethernet/rdc/r6040.c | 9 drivers/net/ethernet/renesas/sh_eth.c | 1 drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 18 drivers/net/ethernet/wiznet/w5100.c | 2 drivers/net/ethernet/xilinx/ll_temac_main.c | 4 drivers/net/phy/dp83640_reg.h | 2 drivers/net/usb/cdc_mbim.c | 5 drivers/net/wireless/ath/ath6kl/wmi.c | 4 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 3 drivers/net/wireless/ath/ath9k/hw.c | 12 drivers/ntb/test/ntb_perf.c | 1 drivers/nvme/host/rdma.c | 4 drivers/of/kobj.c | 2 drivers/parport/ieee1284_ops.c | 2 drivers/pci/controller/pci-aardvark.c | 11 drivers/pci/controller/pcie-xilinx-nwl.c | 12 drivers/pci/msi.c | 3 drivers/pci/pci.c | 33 drivers/pci/quirks.c | 26 drivers/pci/syscall.c | 4 drivers/pinctrl/pinctrl-single.c | 1 drivers/pinctrl/samsung/pinctrl-samsung.c | 2 drivers/platform/chrome/cros_ec_proto.c | 9 drivers/platform/x86/dell-smbios-wmi.c | 1 drivers/power/supply/axp288_fuel_gauge.c | 4 drivers/power/supply/max17042_battery.c | 8 drivers/rtc/rtc-tps65910.c | 2 drivers/s390/cio/css.c | 17 drivers/scsi/BusLogic.c | 4 drivers/scsi/qedi/qedi_main.c | 14 drivers/scsi/qla2xxx/qla_nvme.c | 5 drivers/soc/qcom/smsm.c | 11 drivers/soc/rockchip/Kconfig | 4 drivers/spi/spi-fsl-dspi.c | 1 drivers/spi/spi-pic32.c | 1 drivers/spi/spi-sprd-adi.c | 2 drivers/staging/board/board.c | 7 drivers/staging/ks7010/ks7010_sdio.c | 2 drivers/staging/rts5208/rtsx_scsi.c | 10 drivers/tty/hvc/hvsi.c | 19 drivers/tty/serial/8250/8250_pci.c | 2 drivers/tty/serial/8250/8250_port.c | 3 drivers/tty/serial/fsl_lpuart.c | 2 drivers/tty/serial/jsm/jsm_neo.c | 2 drivers/tty/serial/jsm/jsm_tty.c | 3 drivers/tty/serial/sh-sci.c | 7 drivers/tty/tty_io.c | 4 drivers/usb/gadget/composite.c | 8 drivers/usb/gadget/function/u_ether.c | 5 drivers/usb/gadget/udc/at91_udc.c | 4 drivers/usb/gadget/udc/bdc/bdc_core.c | 3 drivers/usb/gadget/udc/mv_u3d_core.c | 19 drivers/usb/host/ehci-orion.c | 8 drivers/usb/host/fotg210-hcd.c | 41 - drivers/usb/host/fotg210.h | 5 drivers/usb/host/ohci-tmio.c | 3 drivers/usb/host/xhci-rcar.c | 7 drivers/usb/host/xhci.c | 24 drivers/usb/mtu3/mtu3_gadget.c | 6 drivers/usb/musb/musb_dsps.c | 13 drivers/usb/phy/phy-fsl-usb.c | 2 drivers/usb/phy/phy-tahvo.c | 4 drivers/usb/phy/phy-twl6030-usb.c | 5 drivers/usb/serial/mos7720.c | 4 drivers/usb/usbip/vhci_hcd.c | 32 drivers/vfio/Kconfig | 2 drivers/video/backlight/pwm_bl.c | 54 - drivers/video/fbdev/asiliantfb.c | 3 drivers/video/fbdev/core/fbmem.c | 6 drivers/video/fbdev/kyro/fbdev.c | 8 drivers/video/fbdev/riva/fbdev.c | 3 fs/btrfs/inode.c | 2 fs/btrfs/volumes.c | 3 fs/cifs/cifs_unicode.c | 9 fs/cifs/sess.c | 2 fs/crypto/hooks.c | 44 + fs/ext4/inline.c | 6 fs/ext4/symlink.c | 11 fs/f2fs/file.c | 4 fs/f2fs/gc.c | 4 fs/f2fs/namei.c | 11 fs/fcntl.c | 5 fs/fscache/cookie.c | 14 fs/fscache/internal.h | 2 fs/fscache/main.c | 39 + fs/gfs2/lock_dlm.c | 5 fs/isofs/inode.c | 27 fs/isofs/isofs.h | 1 fs/isofs/joliet.c | 4 fs/nfs/callback_xdr.c | 2 fs/overlayfs/dir.c | 6 fs/ubifs/file.c | 12 fs/udf/misc.c | 13 fs/udf/super.c | 25 fs/userfaultfd.c | 93 +- include/crypto/public_key.h | 4 include/linux/bpf_verifier.h | 19 include/linux/filter.h | 15 include/linux/fscrypt_notsupp.h | 6 include/linux/fscrypt_supp.h | 1 include/linux/hugetlb.h | 9 include/linux/list.h | 29 include/linux/memory_hotplug.h | 4 include/linux/pci.h | 5 include/linux/power/max17042_battery.h | 2 include/linux/skbuff.h | 2 include/linux/sunrpc/svc.h | 2 include/uapi/linux/pkt_sched.h | 2 include/uapi/linux/serial_reg.h | 1 kernel/bpf/core.c | 18 kernel/bpf/disasm.c | 16 kernel/bpf/verifier.c | 498 ++++++------- kernel/events/core.c | 2 kernel/fork.c | 1 kernel/locking/mutex.c | 15 kernel/pid_namespace.c | 3 kernel/sched/deadline.c | 8 kernel/sched/sched.h | 2 kernel/time/hrtimer.c | 60 + lib/mpi/mpiutil.c | 2 lib/test_bpf.c | 13 mm/memory_hotplug.c | 4 mm/page_alloc.c | 8 net/9p/trans_xen.c | 4 net/bluetooth/cmtp/cmtp.h | 2 net/bluetooth/hci_core.c | 14 net/bluetooth/hci_event.c | 108 ++ net/bluetooth/sco.c | 85 +- net/caif/chnl_net.c | 19 net/core/flow_dissector.c | 12 net/core/net_namespace.c | 18 net/dccp/minisocks.c | 2 net/dsa/slave.c | 12 net/ipv4/icmp.c | 23 net/ipv4/igmp.c | 2 net/ipv4/ip_gre.c | 9 net/ipv4/ip_output.c | 5 net/ipv4/route.c | 48 - net/ipv4/tcp_fastopen.c | 3 net/ipv4/tcp_input.c | 2 net/ipv4/tcp_ipv4.c | 5 net/ipv6/netfilter/nf_socket_ipv6.c | 4 net/l2tp/l2tp_core.c | 4 net/mac80211/tx.c | 4 net/netlabel/netlabel_cipso_v4.c | 12 net/netlink/af_netlink.c | 4 net/sched/sch_cbq.c | 2 net/sched/sch_fq_codel.c | 12 net/sunrpc/auth_gss/svcauth_gss.c | 2 net/sunrpc/svc.c | 27 net/tipc/socket.c | 36 net/unix/af_unix.c | 2 samples/bpf/test_override_return.sh | 1 samples/bpf/tracex7_user.c | 5 security/integrity/ima/Kconfig | 1 security/integrity/ima/ima_mok.c | 2 security/smack/smack_access.c | 17 sound/core/pcm_lib.c | 2 sound/soc/intel/boards/bytcr_rt5640.c | 9 sound/soc/rockchip/rockchip_i2s.c | 35 sound/usb/quirks.c | 1 tools/perf/util/machine.c | 1 tools/testing/selftests/bpf/test_maps.c | 2 tools/testing/selftests/bpf/test_verifier.c | 144 +++ tools/thermal/tmon/Makefile | 2 virt/kvm/arm/arm.c | 8 294 files changed, 2188 insertions(+), 1184 deletions(-)
Adrian Bunk (1):
bnx2x: Fix enabling network interfaces without VFs
Alexander Tsoy (1):
ALSA: usb-audio: Add registration quirk for JBL Quantum 800
Alexei Starovoitov (2):
bpf: track spill/fill of constants selftests/bpf: fix tests due to const spill/fill
Andreas Obergschwandtner (1):
ARM: tegra: tamonten: Fix UART pad setting
Andrey Grodzovsky (1):
drm/amdgpu: Fix BUG_ON assert
Andrey Ignatov (5):
bpf: Support variable offset stack access from helpers
bpf: Reject indirect var_off stack access in raw mode
bpf: Reject indirect var_off stack access in unpriv mode
bpf: Sanity check max value for var_off stack access selftests/bpf: Test variable offset stack access
Andy Duan (1):
tty: serial: fsl_lpuart: fix the wrong mapbase value
Andy Shevchenko (3):
include/linux/list.h: add a macro to test if entry is pointing to the head
ata: sata_dwc_460ex: No need to call phy_exit() befre phy_init()
PCI: Sync __pci_register_driver() stub for CONFIG_PCI=n
Anirudh Rayabharam (1):
usbip: give back URBs for unsent unlink requests during cleanup
Anson Jacob (1):
drm/amd/amdgpu: Update debugfs link_settings output link_rate field in hex
Arne Welzel (1):
dm crypt: Avoid percpu_counter spinlock contention in crypt_page_alloc()
Austin Kim (1):
IMA: remove -Wmissing-prototypes warning
Babu Moger (1):
x86/resctrl: Fix a maybe-uninitialized build warning treated as error
Baptiste Lepers (1):
events: Reuse value read using READ_ONCE instead of re-reading it
Ben Dooks (1):
ARM: 8918/2: only build return_address() if needed
Benjamin Hesmans (1):
netfilter: socket: icmp6: fix use-after-scope
Bob Peterson (1):
gfs2: Don't call dlm after protocol is unmounted
Chao Yu (2):
f2fs: fix to account missing .skipped_gc_rwsem
f2fs: fix to unmap pages from userspace process in punch_hole()
Chih-Kang Chang (1):
mac80211: Fix insufficient headroom issue for AMSDU
Christoph Hellwig (2):
cryptoloop: add a deprecation warning
bcache: add proper error unwinding in bcache_device_init
Christophe JAILLET (4):
drm/msm/dsi: Fix some reference counted resource leaks
usb: bdc: Fix an error handling path in 'bdc_probe()' when no suitable DMA config is available
staging: ks7010: Fix the initialization of the 'sleep_status' structure
mtd: rawnand: cafe: Fix a resource leak in the error handling path of 'cafe_nand_probe()'
Christophe Leroy (1):
crypto: talitos - reduce max key size for SEC1
Chunfeng Yun (2):
usb: mtu3: use @mult for HS isoc or intr
usb: mtu3: fix the wrong HS mult value
Chunyan Zhang (1):
spi: sprd: Fix the wrong WDG_LOAD_VAL
Colin Ian King (4):
ARM: imx: fix missing 3rd argument in macro imx_mmdc_perf_init
media: venus: venc: Fix potential null pointer dereference on pointer fmt
Bluetooth: increase BTNAMSIZ to 21 chars to fix potential buffer overflow
parport: remove non-zero check on count
Damien Le Moal (2):
libata: fix ata_host_start()
block: bfq: fix bfq_set_next_ioprio_data()
Dan Carpenter (4):
Bluetooth: sco: prevent information leak in sco_conn_defer_accept()
ath6kl: wmi: fix an error code in ath6kl_wmi_sync_point()
scsi: qedi: Fix error codes in qedi_alloc_global_queues()
PCI: Fix pci_dev_str_match_path() alloc while atomic bug
Daniel Borkmann (3):
bpf: Introduce BPF nospec instruction for mitigating Spectre v4
bpf: Fix leakage due to insufficient speculative store bypass mitigation
bpf: Fix pointer arithmetic mask tightening under state pruning
Daniel Thompson (1):
backlight: pwm_bl: Improve bootloader/kernel device handover
Daniele Palmas (1):
net: usb: cdc_mbim: avoid altsetting toggling for Telit LN920
David Heidelberg (2):
ARM: 9105/1: atags_to_fdt: don't warn about stack size
ARM: dts: qcom: apq8064: correct clock names
David Hildenbrand (1):
mm/memory_hotplug: use "unsigned long" for PFN in zone_for_pfn_range()
David Howells (1):
fscache: Fix cookie key hashing
Desmond Cheong Zhi Xi (6):
fcntl: fix potential deadlock for &fasync_struct.fa_lock
Bluetooth: fix repeated calls to sco_sock_kill
btrfs: reset replace target device to allocation state on close
Bluetooth: skip invalid hci_sync_conn_complete_evt
Bluetooth: schedule SCO timeouts with delayed_work
Bluetooth: avoid circular locks in sco_sock_connect
Dietmar Eggemann (1):
sched/deadline: Fix missing clock update in migrate_task_rq_dl()
Ding Hui (1):
cifs: fix wrong release in sess_alloc_buffer() failed path
Dinghao Liu (1):
qlcnic: Remove redundant unlock in qlcnic_pinit_from_rom
Dmitry Baryshkov (1):
drm/msm/dpu: make dpu_hw_ctl_clear_all_blendstages clear necessary LMs
Dmitry Osipenko (1):
rtc: tps65910: Correct driver module alias
Dmitry Torokhov (1):
HID: input: do not report stylus battery state as "full"
Dongliang Mu (3):
media: dvb-usb: fix uninit-value in dvb_usb_adapter_dvb_init
media: dvb-usb: fix uninit-value in vp702x_read_mac_addr
media: em28xx-input: fix refcount bug in em28xx_usb_disconnect
Edward Cree (1):
bpf/verifier: per-register parent pointers
Eric Biggers (4):
fscrypt: add fscrypt_symlink_getattr() for computing st_size
ext4: report correct st_size for encrypted symlinks
f2fs: report correct st_size for encrypted symlinks
ubifs: report correct st_size for encrypted symlinks
Eric Dumazet (5):
ipv4: make exception cache less predictible
ipv4: fix endianness issue in inet_rtm_getroute_build_skb()
net-caif: avoid user-triggerable WARN_ON(1) net/af_unix: fix a data-race in unix_dgram_poll
fq_codel: reject silly quantum parameters
Esben Haabendal (1):
net: ll_temac: Remove left-over debug message
Evan Quan (1):
PCI: Add AMD GPU multi-function power dependencies
Evgeny Novikov (2):
usb: ehci-orion: Handle errors of clk_prepare_enable() in probe
media: tegra-cec: Handle errors of clk_prepare_enable()
Fangrui Song (1):
powerpc/boot: Delete unneeded .globl _zimage_start
Florian Fainelli (1):
r6040: Restore MDIO clock frequency after MAC reset
Geert Uytterhoeven (2):
soc: rockchip: ROCKCHIP_GRF should not default to y, unconditionally
staging: board: Fix uninitialized spinlock when attaching genpd
George Cherian (1):
PCI: Add ACS quirks for Cavium multi-function devices
Giovanni Cabiddu (4):
crypto: qat - do not ignore errors from enable_vf2pf_comms()
crypto: qat - handle both source of interrupt in VF ISR
crypto: qat - do not export adf_iov_putmsg()
crypto: qat - use proper type for vf_mask
Greg Kroah-Hartman (3):
clk: fix build warning for orphan_list
serial: 8250_pci: make setup_port() parameters explicitly unsigned Linux 4.19.207
Guillaume Nault (1):
netns: protect netns ID lookups with RCU
Gustavo A. R. Silva (2):
ipv4: ip_output.c: Fix out-of-bounds warning in ip_copy_addrs()
flow_dissector: Fix out-of-bounds warnings
Halil Pasic (1):
KVM: s390: index kvm->arch.idle_mask by vcpu_idx
Hans Verkuil (1):
media: v4l2-dv-timings.c: fix wrong condition in two for-loops
Hans de Goede (5):
power: supply: axp288_fuel_gauge: Report register-address on readb / writeb errors
libata: add ATA_HORKAGE_NO_NCQ_TRIM for Samsung 860 and 870 SSDs
platform/x86: dell-smbios-wmi: Add missing kfree in error-exit from run_smbios_call
ASoC: Intel: bytcr_rt5640: Move "Platform Clock" routes to the maps for the matching in-/output
mfd: axp20x: Update AXP288 volatile ranges
Harini Katakam (1):
net: macb: Add a NULL check on desc_ptp
Harshvardhan Jha (1):
9p/xen: Fix end of loop tests for list_for_each_entry
Heiko Carstens (1):
s390/jump_label: print real address in a case of a jump label bug
Hoang Le (1):
tipc: increase timeout in tipc_sk_enqueue()
Hongbo Li (1):
lib/mpi: use kcalloc in mpi_resize
Hyun Kwon (1):
PCI: xilinx-nwl: Enable the clock through CCF
Ilya Leoshkevich (1):
s390/bpf: Fix 64-bit subtraction of the -0x80000000 constant
Iwona Winiarska (1):
soc: aspeed: lpc-ctrl: Fix boundary check for mmap
J. Bruce Fields (1):
rpc: fix gss_svc_init cleanup on failure
Jack Pham (1):
usb: gadget: composite: Allow bMaxPower=0 if self-powered
Jaehyoung Choi (1):
pinctrl: samsung: Fix pinctrl bank pin count
Jan Kara (1):
udf: Check LVID earlier
Jason Gunthorpe (1):
vfio: Use config not menuconfig for VFIO_NOIOMMU
Jeongtae Park (1):
regmap: fix the offset of register error log
Jiong Wang (1):
bpf: correct slot_type marking logic to allow more stack slot sharing
Jiri Slaby (2):
xtensa: ISS: don't panic in rs_init
hvsi: don't panic on tty_register_driver failure
Johan Almbladh (2):
bpf/tests: Fix copy-and-paste error in double word test bpf/tests: Do not PASS tests without actually testing the result
Jonathan Cameron (1):
iio: dac: ad5624r: Fix incorrect handling of an optional regulator.
Juergen Gross (3):
xen: fix setting of max_pfn in shared_info
xen: reset legacy rtc flag for PV domU
PM: base: power: don't try to use non-existing RTC for storing data
Juhee Kang (1):
samples: bpf: Fix tracex7 error raised on the missing argument
Kai-Heng Feng (1):
Bluetooth: Move shutdown callback before flushing tx and rx queue
Kajol Jain (1):
powerpc/perf/hv-gpci: Fix counter value parsing
Kees Cook (1):
staging: rts5208: Fix get_ms_information() heap buffer size
Kelly Devilliv (2):
usb: host: fotg210: fix the endpoint's transactional opportunities calculation
usb: host: fotg210: fix the actual_length of an iso packet
Kim Phillips (1):
perf/x86/amd/ibs: Work around erratum #1197
Krzysztof Hałasa (3):
gpu: ipu-v3: Fix i.MX IPU-v3 offset calculations for (semi)planar U/V formats
media: TDA1997x: enable EDID support
media: TDA1997x: fix tda1997x_query_dv_timings() return value
Krzysztof Kozlowski (2):
arm64: dts: exynos: correct GIC CPU interfaces address range on Exynos7
power: supply: max17042: handle fails of reading status register
Krzysztof Wilczyński (1):
PCI: Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure
Laurent Pinchart (1):
media: imx258: Rectify mismatch of VTS value
Len Baker (1):
CIFS: Fix a potencially linear read overflow
Leon Romanovsky (2):
RDMA/iwcm: Release resources if iw_cm module initialization fails
docs: Fix infiniband uverbs minor number
Li Zhijian (1):
selftests/bpf: Enlarge select() timeout for test_maps
Lin, Zhenpeng (1):
dccp: don't duplicate ccid when cloning dccp sock
Linus Walleij (1):
clk: kirkwood: Fix a clocking boot regression
Liu Jian (1):
igmp: Add ip_mc_list lock in ip_check_mc_rcu
Liu Zixian (1):
mm/hugetlb: initialize hugetlb_usage in mm_init
Lorenz Bauer (1):
bpf: verifier: Allocate idmap scratch in verifier env
Luiz Augusto von Dentz (1):
Bluetooth: Fix handling of LE Enhanced Connection Complete
Luke Hsiao (1):
tcp: enable data-less, empty-cookie SYN with TFO_SERVER_COOKIE_NOT_REQD
Maciej W. Rozycki (2):
serial: 8250: Define RX trigger levels for OxSemi 950 devices
scsi: BusLogic: Fix missing pr_cont() use
Maciej Żenczykowski (1):
usb: gadget: u_ether: fix a potential null pointer dereference
Manish Narani (1):
mmc: sdhci-of-arasan: Check return value of non-void funtions
Maor Gottlieb (1):
net/mlx5: Fix potential sleeping in atomic context
Marc Zyngier (2):
of: Don't allow __of_attached_node_sysfs() without CONFIG_SYSFS
mfd: Don't use irq_create_mapping() to resolve a mapping
Marco Chiappero (2):
crypto: qat - fix reuse of completion variable
crypto: qat - fix naming for init/shutdown VF to PF notifications
Marek Behún (2):
PCI: Call Max Payload Size-related fixup quirks early
PCI: Restrict ASMedia ASM1062 SATA Max Payload Size Supported
Marek Marczykowski-Górecki (1):
PCI/MSI: Skip masking MSI-X on Xen PV
Mark Brown (1):
arm64/sve: Use correct size when reinitialising SVE state
Mark Rutland (1):
arm64: head: avoid over-mapping in map_memory
Martin KaFai Lau (1):
tcp: seq_file: Avoid skipping sk during tcp_seek_last_pos
Mathias Nyman (1):
Revert "USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set"
Mathieu Desnoyers (1):
ipv4/icmp: l3mdev: Perform icmp error route lookup on source device routing table (v2)
Mauro Carvalho Chehab (2):
media: uvc: don't do DMA on stack
media: dib8000: rewrite the init prbs logic
Miaoqing Pan (1):
ath9k: fix sleeping in atomic context
Michael Ellerman (1):
powerpc/module64: Fix comment in R_PPC64_ENTRY handling
Michael Petlan (1):
perf machine: Initialize srcline string member in add_location struct
Michal Suchanek (1):
powerpc/stacktrace: Include linux/delay.h
Mike Rapoport (1):
x86/mm: Fix kern_addr_valid() to cope with existing but not present entries
Mikulas Patocka (1):
parisc: fix crash with signals and alloca
Miquel Raynal (1):
dt-bindings: mtd: gpmc: Fix the ECC bytes vs. OOB bytes equation
Muchun Song (1):
mm/page_alloc: speed up the iteration of max_order
Nadav Amit (1):
userfaultfd: prevent concurrent API initialization
Nadezda Lutovinova (2):
usb: gadget: mv_u3d: request_irq() after initializing UDC
usb: musb: musb_dsps: request_irq() after initializing musb
Nathan Chancellor (1):
net: ethernet: stmmac: Do not use unreachable() in ipq806x_gmac_probe()
Nguyen Dinh Phi (1):
tty: Fix data race between tiocsti() and flush_to_ldisc()
Niklas Cassel (2):
blk-zoned: allow zone management send operations without CAP_SYS_ADMIN
blk-zoned: allow BLKREPORTZONE without CAP_SYS_ADMIN
Nishad Kamdar (1):
mmc: core: Return correct emmc response in case of ioctl error
Oleksij Rempel (1):
MIPS: Malta: fix alignment of the devicetree buffer
Oliver Upton (1):
KVM: arm64: Handle PSCI resets before userspace touches vCPU state
Pali Rohár (3):
isofs: joliet: Fix iocharset=utf8 mount option
PCI: aardvark: Increase polling delay to 1.5s while waiting for PIO response
PCI: aardvark: Fix masking and unmasking legacy INTx interrupts
Paolo Valente (1):
block, bfq: honor already-setup queue merges
Patryk Duda (1):
platform/chrome: cros_ec_proto: Send command again when timeout occurs
Paul Gortmaker (1):
x86/reboot: Limit Dell Optiplex 990 quirk to early BIOS versions
Pavel Skripkin (5):
media: stkwebcam: fix memory leak in stk_camera_probe
m68k: emu: Fix invalid free in nfeth_cleanup()
media: go7007: remove redundant initialization
net: cipso: fix warnings in netlbl_cipsov4_add_std
Bluetooth: add timeout sanity check to hci_inquiry
Peter Zijlstra (1):
locking/mutex: Fix HANDOFF condition
Phong Hoang (1):
clocksource/drivers/sh_cmt: Fix wrong setting if don't request IRQ for clock source channel
Pratik R. Sampat (1):
cpufreq: powernv: Fix init_chip_info initialization in numa=off
Qu Wenruo (1):
Revert "btrfs: compression: don't try to compress if we don't have enough pages"
Quentin Perret (1):
sched/deadline: Fix reset_on_fork reporting of DL tasks
Rafael J. Wysocki (3):
PCI: PM: Avoid forcing PCI_D0 for wakeup reasons inconsistently
PCI: PM: Enable PME if it can be signaled from D3cold
PCI: Use pci_update_current_state() in pci_enable_device_flags()
Rafał Miłecki (1):
net: dsa: b53: Fix calculating number of switch ports
Randy Dunlap (4):
xtensa: fix kconfig unmet dependency warning for HAVE_FUTEX_CMPXCHG
openrisc: don't printk() unconditionally
ptp: dp83640: don't define PAGE0
ARC: export clear_user_page() for modules
Rolf Eike Beer (1):
tools/thermal/tmon: Add cross compiling support
Ruozhu Li (1):
nvme-rdma: don't update queue count when failing to set io queues
Saurav Kashyap (1):
scsi: qla2xxx: Sync queue idx with queue_pair_map idx
Sean Anderson (2):
crypto: mxs-dcp - Check for DMA mapping errors
crypto: mxs-dcp - Use sg_mapping_iter to copy data
Sean Young (1):
media: rc-loopback: return number of emitters rather than error
Sebastian Krzyszkowiak (1):
power: supply: max17042_battery: fix typo in MAx17042_TOFF
Sebastian Reichel (1):
ARM: dts: imx53-ppd: Fix ACHC entry
Sergey Shtylyov (9):
i2c: highlander: add IRQ check
usb: gadget: udc: at91: add IRQ check
usb: phy: fsl-usb: add IRQ check
usb: phy: twl6030: add IRQ checks
usb: host: ohci-tmio: add IRQ check
usb: phy: tahvo: add IRQ check
i2c: iop3xx: fix deferred probing
i2c: s3c2410: fix IRQ check
i2c: mt65xx: fix IRQ check
Shai Malin (3):
qed: Fix the VF msix vectors flow
qede: Fix memset corruption
qed: Handle management FW error
Shuah Khan (1):
usbip:vhci_hcd USB port can get stuck in the disabled state
Stefan Berger (1):
certs: Trigger creation of RSA module signing key if it's not an RSA key
Stefan Wahren (1):
net: qualcomm: fix QCA7000 checksum handling
Stephan Gerhold (1):
soc: qcom: smsm: Fix missed interrupts if state changes while masked
Stian Skjelstad (1):
udf_get_extendedattr() had no boundary checks.
Sugar Zhang (1):
ASoC: rockchip: i2s: Fix regmap_ops hang
Sukadev Bhattiprolu (1):
ibmvnic: check failover_pending in login response
THOBY Simon (1):
IMA: remove the dependency on CRYPTO_MD5
Tetsuo Handa (1):
fbmem: don't allow too huge resolutions
Theodore Ts'o (1):
ext4: fix race writing to an inline_data file while its xattrs are changing
Thomas Gleixner (1):
hrtimer: Avoid double reprogramming in __hrtimer_start_range_ns()
Thomas Hebb (1):
mmc: rtsx_pci: Fix long reads when clock is prescaled
Tianjia Zhang (1):
Smack: Fix wrong semantics in smk_access_entry()
Tom Rix (1):
USB: serial: mos7720: improve OOM-handling in read_mos_reg()
Tony Lindgren (5):
crypto: omap-sham - clear dma flags only after omap_sham_update_dma_stop()
spi: spi-fsl-dspi: Fix issue with uninitialized dma_slave_config
spi: spi-pic32: Fix issue with uninitialized dma_slave_config
mmc: dw_mmc: Fix issue with uninitialized dma_slave_config
mmc: moxart: Fix issue with uninitialized dma_slave_config
Trond Myklebust (1):
SUNRPC/nfs: Fix return value for nfs4_callback_compound()
Tuo Li (1):
gpu: drm: amd: amdgpu: amdgpu_i2c: fix possible uninitialized-variable access in amdgpu_i2c_router_select_ddc_port()
Ulrich Hecht (1):
serial: sh-sci: fix break handling for sysrq
Umang Jain (1):
media: imx258: Limit the max analogue gain to 480
Vasily Averin (1):
memcg: enable accounting for pids in nested pid namespaces
Vineeth Vijayan (1):
s390/cio: add dev_busid sysfs entry for each subchannel
Vinod Koul (1):
arm64: dts: qcom: sdm660: use reg value for memory node
Vladimir Oltean (1):
net: dsa: destroy the phylink instance on any error in dsa_slave_phy_setup
Wang Hai (1):
VMCI: fix NULL pointer dereference when unmapping queue pair
Willem de Bruijn (1):
ip_gre: validate csum_start only on pull
Xiaotan Luo (1):
ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B
Xiaoyao Li (1):
perf/x86/intel/pt: Fix mask of num_address_ranges
Xin Long (2):
tipc: keep the skb in rcv queue until the whole data is read
tipc: fix an use-after-free issue in tipc_recvmsg
Xiyu Yang (2):
net: sched: Fix qdisc_rate_table refcount leak when get tcf_block failed net/l2tp: Fix reference count leak in l2tp_udp_recv_core
Yajun Deng (1):
netlink: Deal with ESRCH error in nlmsg_notify()
Yang Li (2):
ethtool: Fix an error code in cxgb2.c
NTB: perf: Fix an error code in perf_setup_inbuf()
Yang Yingliang (2):
ARM: imx: add missing clk_disable_unprepare()
net: w5100: check return value after calling platform_get_resource()
Ye Bin (1):
dm thin metadata: Fix use-after-free in dm_bm_set_read_only
Yoshihiro Shimoda (2):
usb: host: xhci-rcar: Don't reload firmware after the completion
net: renesas: sh_eth: Fix freeing wrong tx descriptor
Yufeng Mo (2):
bonding: 3ad: fix the concurrency between __bond_release_one() and bond_3ad_state_machine_handler()
net: hns3: pad the short tunnel frame before sending to hardware
Zekun Shen (1):
ath9k: fix OOB read ar9300_eeprom_restore_internal
Zelin Deng (1):
KVM: x86: Update vCPU's hv_clock before back to guest when tsc_offset is adjusted
Zenghui Yu (1):
bcma: Fix memory leak for internally-handled cores
Zhen Lei (1):
pinctrl: single: Fix error return code in pcs_parse_bits_in_pinctrl_entry()
Zheyu Ma (5):
video: fbdev: kyro: fix a DoS bug by restricting user input
tty: serial: jsm: hold port lock when reporting modem line changes
video: fbdev: asiliantfb: Error out if 'pixclock' equals zero
video: fbdev: kyro: Error out if 'pixclock' equals zero
video: fbdev: riva: Error out if 'pixclock' equals zero
Zubin Mithra (1):
ALSA: pcm: fix divide error in snd_pcm_lib_ioctl
chenying (1):
ovl: fix BUG_ON() in may_delete() when called from ovl_cleanup()
zhenggy (1):
tcp: fix tp->undo_retrans accounting in tcp_sacktag_one()
zhenwei pi (1):
crypto: public_key: fix overflow during implicit conversion
王贇 (1):
net: fix NULL pointer reference in cipso_v4_doi_free