Linux 4.19.189
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.189 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arc/kernel/signal.c | 4 - arch/arm/boot/dts/omap3.dtsi | 3 + arch/arm/boot/dts/omap4.dtsi | 5 + arch/arm/boot/dts/omap44xx-clocks.dtsi | 8 -- arch/arm/boot/dts/omap5.dtsi | 5 + arch/arm/mach-footbridge/cats-pci.c | 4 - arch/arm/mach-footbridge/ebsa285-pci.c | 4 - arch/arm/mach-footbridge/netwinder-pci.c | 2 arch/arm/mach-footbridge/personal-pci.c | 5 - arch/arm/mach-keystone/keystone.c | 4 - arch/arm/probes/uprobes/core.c | 4 - arch/arm64/include/asm/alternative.h | 8 +- arch/arm64/include/asm/word-at-a-time.h | 10 +-- arch/ia64/mm/discontig.c | 6 +- arch/s390/kernel/entry.S | 1 arch/x86/events/intel/uncore_snbep.c | 61 ++++++++------------- arch/x86/kernel/crash.c | 2 drivers/dma/dw/Kconfig | 2 drivers/gpio/gpiolib-sysfs.c | 8 ++ drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 4 - drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 4 - drivers/hid/hid-alps.c | 1 drivers/hid/hid-google-hammer.c | 2 drivers/hid/hid-ids.h | 1 drivers/hid/wacom_wac.c | 8 +- drivers/input/keyboard/nspire-keypad.c | 56 ++++++++++--------- drivers/input/serio/i8042-x86ia64io.h | 1 drivers/input/touchscreen/s6sy761.c | 4 - drivers/md/dm-verity-fec.c | 11 ++- drivers/md/dm-verity-fec.h | 1 drivers/net/dsa/mv88e6xxx/chip.c | 30 ++++------ drivers/net/ethernet/amd/pcnet32.c | 5 + drivers/net/ethernet/cavium/liquidio/cn66xx_regs.h | 2 drivers/net/ethernet/davicom/dm9000.c | 6 +- drivers/net/ethernet/ibm/ibmvnic.c | 14 ---- drivers/net/ethernet/intel/i40e/i40e_main.c | 6 ++ drivers/net/geneve.c | 6 ++ drivers/net/phy/marvell.c | 28 ++++++++- drivers/net/usb/hso.c | 2 drivers/net/xen-netback/xenbus.c | 12 ++-- drivers/pinctrl/intel/pinctrl-lewisburg.c | 6 +- drivers/scsi/libsas/sas_ata.c | 9 +-- drivers/scsi/scsi_transport_srp.c | 2 drivers/usb/class/cdc-acm.c | 3 - fs/readdir.c | 6 ++ include/linux/marvell_phy.h | 5 + kernel/locking/lockdep.c | 3 - kernel/locking/qrwlock.c | 7 +- mm/gup.c | 44 +++++++++++++-- mm/huge_memory.c | 7 +- net/core/neighbour.c | 2 net/ieee802154/nl802154.c | 29 +++++++++ net/ipv6/ip6_tunnel.c | 10 +++ net/ipv6/sit.c | 4 - net/mac80211/cfg.c | 4 + net/netfilter/nf_conntrack_standalone.c | 1 net/netfilter/nft_limit.c | 4 - net/sctp/socket.c | 13 +--- sound/soc/fsl/fsl_esai.c | 8 +- tools/arch/ia64/include/asm/barrier.h | 3 - 61 files changed, 324 insertions(+), 198 deletions(-)
Alexander Aring (7):
net: ieee802154: stop dump llsec keys for monitors
net: ieee802154: stop dump llsec devs for monitors
net: ieee802154: forbid monitor for add llsec dev
net: ieee802154: stop dump llsec devkeys for monitors
net: ieee802154: forbid monitor for add llsec devkey
net: ieee802154: stop dump llsec seclevels for monitors
net: ieee802154: forbid monitor for add llsec seclevel
Alexander Shiyan (1):
ASoC: fsl_esai: Fix TDM slot setup for I2S mode
Ali Saidi (1):
locking/qrwlock: Fix ordering in queued_write_lock_slowpath()
Andy Shevchenko (1):
dmaengine: dw: Make it dependent to HAS_IOMEM
Arnd Bergmann (2):
ARM: keystone: fix integer overflow warning
Input: i8042 - fix Pegatron C15B ID entry
Caleb Connolly (1):
Input: s6sy761 - fix coordinate read bit shift
Christophe JAILLET (1):
net: davicom: Fix regulator not turned off on failed probe
Eric Dumazet (1):
netfilter: nft_limit: avoid possible divide error in nft_limit_init
Fabian Vogt (1):
Input: nspire-keypad - enable interrupts only when opened
Fredrik Strupe (1):
ARM: 9071/1: uprobes: Don't hook on thumb instructions
Greg Kroah-Hartman (1):
Linux 4.19.189
Guenter Roeck (1):
pcnet32: Use pci_resource_len to validate PCI resource
Hristo Venev (2):
net: sit: Unregister catch-all devices
net: ip6_tunnel: Unregister catch-all devices
Jaegeuk Kim (1):
dm verity fec: fix misaligned RS roots IO
Jason Xing (1):
i40e: fix the panic when running bpf in xdpdrv mode
Jia-Ju Bai (1):
HID: alps: fix error return code in alps_input_configured()
Jiapeng Zhong (1):
HID: wacom: Assign boolean values to a bool variable
Johan Hovold (1):
net: hso: fix NULL-deref on disconnect regression
John Paul Adrian Glaubitz (1):
ia64: tools: remove duplicate definition of ia64_mf() on ia64
Jolly Shah (1):
scsi: libsas: Reset num_scatter if libata marks qc as NODATA
Kan Liang (1):
perf/x86/intel/uncore: Remove uncore extra PCI dev HSWEP_PCI_PCU_3
Lijun Pan (3):
ibmvnic: avoid calling napi_disable() twice
ibmvnic: remove duplicate napi_schedule call in do_reset function
ibmvnic: remove duplicate napi_schedule call in open function
Linus Torvalds (2):
readdir: make sure to verify directory entry for legacy interfaces too
gup: document and work around "COW can break either way" issue
Martin Wilck (1):
scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state
Matti Vaittinen (1):
gpio: sysfs: Obey valid_mask
Michael Brown (1):
xen-netback: Check for hotplug-status existence before watching
Mike Galbraith (1):
x86/crash: Fix crash_setup_memmap_entries() out-of-bounds access
Nathan Chancellor (1):
arm64: alternatives: Move length validation in alternative_{insn, endif}Oliver Neukum (1):
USB: CDC-ACM: fix poison/unpoison imbalance
Or Cohen (1):
net/sctp: fix race condition in sctp_destroy_sock
Pablo Neira Ayuso (1):
netfilter: conntrack: do not print icmpv6 as unknown via /proc
Pali Rohár (1):
net: phy: marvell: fix detection of PHY on Topaz switches
Peter Collingbourne (1):
arm64: fix inline asm in load_unaligned_zeropad()
Phillip Potter (1):
net: geneve: check skb is large enough for IPv4/IPv6 header
Ping Cheng (1):
HID: wacom: set EV_KEY and EV_ABS only for non-HID_GENERIC type of devices
Randy Dunlap (1):
ia64: fix discontig.c section mismatches
Rob Clark (1):
drm/msm: Fix a5xx/a6xx timestamps
Russell King (1):
ARM: footbridge: fix PCI interrupt mapping
Seevalamuthu Mariappan (1):
mac80211: clear sta->fast_rx when STA removed from 4-addr VLAN
Shou-Chieh Hsu (1):
HID: google: add don USB id
Tetsuo Handa (1):
lockdep: Add a missing initialization hint to the "INFO: Trying to register non-static key" message
Tong Zhu (1):
neighbour: Disregard DEAD dst in neigh_update
Tony Lindgren (3):
ARM: dts: Drop duplicate sha2md5_fck to fix clk_disable race
ARM: dts: Fix moving mmc devices with aliases for omap4 & 5
ARM: dts: Fix swapped mmc order for omap3
Vasily Gorbik (1):
s390/entry: save the caller of psw_idle
Wan Jiabing (1):
cavium/liquidio: Fix duplicate argument
Wang Qing (1):
arc: kernel: Return -EFAULT if copy_to_user() fails
Yuanyuan Zhong (1):
pinctrl: lewisburg: Update number of pins in community
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 188 +SUBLEVEL = 189 EXTRAVERSION = NAME = "People's Front"
arch/arc/kernel/signal.c +2 -2
@@ -99,7 +99,7 @@ stash_usr_regs(struct rt_sigframe __user *sf, struct pt_regs *regs, sizeof(sf->uc.uc_mcontext.regs.scratch)); err |=__copy_to_user (&sf->uc.uc_sigmask, set,sizeof (sigset_t)); -return err; +return err ? -EFAULT :0 ; }static int restore_usr_regs (struct pt_regs *regs,struct rt_sigframe __user *sf)
@@ -113,7 +113,7 @@ static int restore_usr_regs(struct pt_regs *regs, struct rt_sigframe __user *sf) &(sf->uc.uc_mcontext.regs.scratch), sizeof(sf->uc.uc_mcontext.regs.scratch));if (err) -return err; +return -EFAULT ;set_current_blocked (&set); regs->bta = uregs.scratch.bta;
arch/arm/boot/dts/omap3.dtsi +3 -0
@@ -23,6 +23,9 @@ i2c0 = &i2c1; i2c1 = &i2c2; i2c2 = &i2c3; + mmc0 = &mmc1; + mmc1 = &mmc2; + mmc2 = &mmc3; serial0 = &uart1; serial1 = &uart2; serial2 = &uart3;
arch/arm/boot/dts/omap4.dtsi +5 -0
@@ -25,6 +25,11 @@ i2c1 = &i2c2; i2c2 = &i2c3; i2c3 = &i2c4; + mmc0 = &mmc1; + mmc1 = &mmc2; + mmc2 = &mmc3; + mmc3 = &mmc4; + mmc4 = &mmc5; serial0 = &uart1; serial1 = &uart2; serial2 = &uart3;
arch/arm/boot/dts/omap44xx-clocks.dtsi +0 -8
@@ -773,14 +773,6 @@ ti,max-div = <2>; }; - sha2md5_fck: sha2md5_fck@15c8 { - #clock-cells = <0>; - compatible = "ti,gate-clock"; - clocks = <&l3_div_ck>; - ti,bit-shift = <1>; - reg = <0x15c8>; - }; - usb_phy_cm_clk32k: usb_phy_cm_clk32k@640 { #clock-cells = <0>; compatible = "ti,gate-clock";
arch/arm/boot/dts/omap5.dtsi +5 -0
@@ -26,6 +26,11 @@ i2c2 = &i2c3; i2c3 = &i2c4; i2c4 = &i2c5; + mmc0 = &mmc1; + mmc1 = &mmc2; + mmc2 = &mmc3; + mmc3 = &mmc4; + mmc4 = &mmc5; serial0 = &uart1; serial1 = &uart2; serial2 = &uart3;
arch/arm/mach-footbridge/cats-pci.c +2 -2
@@ -15,14 +15,14 @@#include <asm/mach-types.h> /* cats host-specific stuff */ -static int irqmap_cats[]__initdata = {IRQ_PCI ,IRQ_IN0 ,IRQ_IN1 ,IRQ_IN3 }; +static int irqmap_cats[] = {IRQ_PCI ,IRQ_IN0 ,IRQ_IN1 ,IRQ_IN3 };static u8 cats_no_swizzle (struct pci_dev *dev,u8 *pin) {return 0 ; } -static int __init cats_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) +static int cats_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) {if (dev->irq >=255 )return -1 ;/* not a valid interrupt. */
arch/arm/mach-footbridge/ebsa285-pci.c +2 -2
@@ -14,9 +14,9 @@#include <asm/mach/pci.h> #include <asm/mach-types.h> -static int irqmap_ebsa285[]__initdata = {IRQ_IN3 ,IRQ_IN1 ,IRQ_IN0 ,IRQ_PCI }; +static int irqmap_ebsa285[] = {IRQ_IN3 ,IRQ_IN1 ,IRQ_IN0 ,IRQ_PCI }; -static int __init ebsa285_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) +static int ebsa285_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) {if (dev->vendor ==PCI_VENDOR_ID_CONTAQ && dev->device ==PCI_DEVICE_ID_CONTAQ_82C693 )
arch/arm/mach-footbridge/netwinder-pci.c +1 -1
@@ -18,7 +18,7 @@* We now use the slot ID instead of the device identifiers to select * which interrupt is routed where. */ -static int __init netwinder_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) +static int netwinder_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) {switch (slot) {case 0 :/* host bridge */
arch/arm/mach-footbridge/personal-pci.c +2 -3
@@ -14,13 +14,12 @@#include <asm/mach/pci.h> #include <asm/mach-types.h> -static int irqmap_personal_server[]__initdata = { +static int irqmap_personal_server[] = {IRQ_IN0 ,IRQ_IN1 ,IRQ_IN2 ,IRQ_IN3 ,0 ,0 ,0 ,IRQ_DOORBELLHOST ,IRQ_DMA1 ,IRQ_DMA2 ,IRQ_PCI }; -static int __init personal_server_map_irq (const struct pci_dev *dev,u8 slot, -u8 pin) +static int personal_server_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) {unsigned char line;
arch/arm/mach-keystone/keystone.c +2 -2
@@ -65,7 +65,7 @@ static void __init keystone_init(void)static long long __init keystone_pv_fixup (void ) {long long offset; -phys_addr_t mem_start, mem_end; +u64 mem_start, mem_end; mem_start =memblock_start_of_DRAM (); mem_end =memblock_end_of_DRAM ();
@@ -78,7 +78,7 @@ static long long __init keystone_pv_fixup(void)if (mem_start <KEYSTONE_HIGH_PHYS_START || mem_end >KEYSTONE_HIGH_PHYS_END ) {pr_crit ("Invalid address space for memory (%08llx-%08llx)\n" , - (u64 )mem_start, (u64 )mem_end); + mem_start, mem_end);return 0 ; }
arch/arm/probes/uprobes/core.c +2 -2
@@ -207,7 +207,7 @@ unsigned long uprobe_get_swbp_addr(struct pt_regs *regs)static struct undef_hook uprobes_arm_break_hook = { .instr_mask =0x0fffffff , .instr_val = (UPROBE_SWBP_ARM_INSN &0x0fffffff ), - .cpsr_mask =MODE_MASK , + .cpsr_mask = (PSR_T_BIT |MODE_MASK ), .cpsr_val =USR_MODE , .fn = uprobe_trap_handler, };
@@ -215,7 +215,7 @@ static struct undef_hook uprobes_arm_break_hook = {static struct undef_hook uprobes_arm_ss_hook = { .instr_mask =0x0fffffff , .instr_val = (UPROBE_SS_ARM_INSN &0x0fffffff ), - .cpsr_mask =MODE_MASK , + .cpsr_mask = (PSR_T_BIT |MODE_MASK ), .cpsr_val =USR_MODE , .fn = uprobe_trap_handler, };
arch/arm64/include/asm/alternative.h +4 -4
@@ -119,9 +119,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { } .popsection .subsection 1 663: \insn2 -664: .previous - .org . - (664b-663b) + (662b-661b) +664: .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) + .previous .endif .endm
@@ -191,11 +191,11 @@ static inline void apply_alternatives_module(void *start, size_t length) { }*/ .macro alternative_endif 664: + .org . - (664b-663b) + (662b-661b) + .org . - (662b-661b) + (664b-663b) .if .Lasm_alt_mode==0 .previous .endif - .org . - (664b-663b) + (662b-661b) - .org . - (662b-661b) + (664b-663b) .endm/*
arch/arm64/include/asm/word-at-a-time.h +5 -5
@@ -64,7 +64,7 @@ static inline unsigned long find_zero(unsigned long mask)*/ static inline unsigned long load_unaligned_zeropad (const void *addr) { -unsigned long ret, offset; +unsigned long ret, tmp;/* Load word from unaligned pointer addr */ asm(
@@ -72,9 +72,9 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)"2:\n" " .pushsection .fixup,\"ax\"\n" " .align 2\n" -"3: and %1, %2, #0x7\n" -" bic %2, %2, #0x7\n" -" ldr %0, [%2]\n" +"3: bic %1, %2, #0x7\n" +" ldr %0, [%1]\n" +" and %1, %2, #0x7\n" " lsl %1, %1, #0x3\n" #ifndef __AARCH64EB__" lsr %0, %0, %1\n"
@@ -84,7 +84,7 @@ static inline unsigned long load_unaligned_zeropad(const void *addr)" b 2b\n" " .popsection\n" _ASM_EXTABLE(1b ,3b ) - : "=&r" (ret), "=&r" (offset) + : "=&r" (ret), "=&r" (tmp) : "r" (addr), "Q" (*(unsigned long *)addr)); return ret;
arch/ia64/mm/discontig.c +3 -3
@@ -96,7 +96,7 @@ static int __init build_node_maps(unsigned long start, unsigned long len,* acpi_boot_init() (which builds the node_to_cpu_mask array) hasn't been * called yet. Note that node 0 will also count all non-existent cpus. */ -static int __meminit early_nr_cpus_node (int node) +static int early_nr_cpus_node (int node) {int cpu, n =0 ;
@@ -111,7 +111,7 @@ static int __meminit early_nr_cpus_node(int node)* compute_pernodesize - compute size of pernode data * @node: the node id. */ -static unsigned long __meminit compute_pernodesize (int node) +static unsigned long compute_pernodesize (int node) {unsigned long pernodesize =0 , cpus;
@@ -371,7 +371,7 @@ static void __init reserve_pernode_space(void) } } -static void __meminit scatter_node_data (void ) +static void scatter_node_data (void ) {pg_data_t **dst;int node;
arch/s390/kernel/entry.S +1 -0
@@ -949,6 +949,7 @@ ENTRY(ext_int_handler) * Load idle PSW. The second "half" of this function is in .Lcleanup_idle. */ ENTRY(psw_idle) + stg %r14,(__SF_GPRS+8*8)(%r15) stg %r3,__SF_EMPTY(%r15) larl %r1,.Lpsw_idle_lpsw+4 stg %r1,__SF_EMPTY+8(%r15)
arch/x86/events/intel/uncore_snbep.c +26 -35
104 lines not on this page · raw message
arch/x86/kernel/crash.c +1 -1
@@ -356,7 +356,7 @@ int crash_setup_memmap_entries(struct kimage *image, struct boot_params *params)struct crash_memmap_data cmd;struct crash_mem *cmem; - cmem =vzalloc (sizeof (struct crash_mem )); + cmem =vzalloc (struct_size (cmem, ranges,1 ));if (!cmem)return -ENOMEM ;
drivers/dma/dw/Kconfig +2 -0
@@ -8,6 +8,7 @@ config DW_DMAC_CORE config DW_DMAC tristate "Synopsys DesignWare AHB DMA platform driver" + depends on HAS_IOMEM select DW_DMAC_CORE help Support the Synopsys DesignWare AHB DMA controller. This
@@ -16,6 +17,7 @@ config DW_DMAC config DW_DMAC_PCI tristate "Synopsys DesignWare AHB DMA PCI driver" depends on PCI + depends on HAS_IOMEM select DW_DMAC_CORE help Support the Synopsys DesignWare AHB DMA controller on the
drivers/gpio/gpiolib-sysfs.c +8 -0
@@ -462,6 +462,8 @@ static ssize_t export_store(struct class *class,long gpio;struct gpio_desc *desc;int status; +struct gpio_chip *gc; +int offset; status =kstrtol (buf,0 , &gpio);if (status <0 )
@@ -473,6 +475,12 @@ static ssize_t export_store(struct class *class,pr_warn ("%s: invalid GPIO %ld\n" , __func__, gpio);return -EINVAL ; } + gc = desc->gdev->chip; + offset =gpio_chip_hwgpio (desc); +if (!gpiochip_line_is_valid (gc, offset)) { +pr_warn ("%s: GPIO %ld masked\n" , __func__, gpio); +return -EINVAL ; + }/* No extra locking here; FLAG_SYSFS just signifies that the * request and export were done by on behalf of userspace, so
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +2 -2
@@ -1194,8 +1194,8 @@ static int a5xx_pm_suspend(struct msm_gpu *gpu)static int a5xx_get_timestamp (struct msm_gpu *gpu,uint64_t *value) { - *value =gpu_read64 (gpu,REG_A5XX_RBBM_PERFCTR_CP_0_LO , -REG_A5XX_RBBM_PERFCTR_CP_0_HI ); + *value =gpu_read64 (gpu,REG_A5XX_RBBM_ALWAYSON_COUNTER_LO , +REG_A5XX_RBBM_ALWAYSON_COUNTER_HI );return 0 ; }
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +2 -2
@@ -713,8 +713,8 @@ static int a6xx_get_timestamp(struct msm_gpu *gpu, uint64_t *value)/* Force the GPU power on so we can read this register */ a6xx_gmu_set_oob (&a6xx_gpu->gmu,GMU_OOB_GPU_SET ); - *value =gpu_read64 (gpu,REG_A6XX_RBBM_PERFCTR_CP_0_LO , -REG_A6XX_RBBM_PERFCTR_CP_0_HI ); + *value =gpu_read64 (gpu,REG_A6XX_CP_ALWAYS_ON_COUNTER_LO , +REG_A6XX_CP_ALWAYS_ON_COUNTER_HI );a6xx_gmu_clear_oob (&a6xx_gpu->gmu,GMU_OOB_GPU_SET );return 0 ;
drivers/hid/hid-alps.c +1 -0
@@ -766,6 +766,7 @@ static int alps_input_configured(struct hid_device *hdev, struct hid_input *hi)if (input_register_device (data->input2)) {input_free_device (input2); + ret = -ENOENT ; goto exit; } }
drivers/hid/hid-google-hammer.c +2 -0
@@ -118,6 +118,8 @@ static int hammer_input_configured(struct hid_device *hdev, }static const struct hid_device_id hammer_devices[] = { + {HID_DEVICE (BUS_USB ,HID_GROUP_GENERIC , +USB_VENDOR_ID_GOOGLE ,USB_DEVICE_ID_GOOGLE_DON ) }, {HID_DEVICE (BUS_USB ,HID_GROUP_GENERIC ,USB_VENDOR_ID_GOOGLE ,USB_DEVICE_ID_GOOGLE_HAMMER ) }, { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
drivers/hid/hid-ids.h +1 -0
@@ -478,6 +478,7 @@#define USB_DEVICE_ID_GOOGLE_MASTERBALL 0x503c#define USB_DEVICE_ID_GOOGLE_MAGNEMITE 0x503d#define USB_DEVICE_ID_GOOGLE_MOONBALL 0x5044 +#define USB_DEVICE_ID_GOOGLE_DON 0x5050#define USB_VENDOR_ID_GOTOP 0x08f2#define USB_DEVICE_ID_SUPER_Q2 0x007f
drivers/hid/wacom_wac.c +3 -5
@@ -2496,7 +2496,7 @@ static void wacom_wac_finger_slot(struct wacom_wac *wacom_wac, !wacom_wac->shared->is_touch_on) {if (!wacom_wac->shared->touch_down)return ; - prox =0 ; + prox = false; } wacom_wac->hid_data.num_received++;
@@ -3528,8 +3528,6 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev, {struct wacom_features *features = &wacom_wac->features; - input_dev->evbit[0 ] |=BIT_MASK (EV_KEY ) |BIT_MASK (EV_ABS ); -if (!(features->device_type &WACOM_DEVICETYPE_PEN ))return -ENODEV ;
@@ -3544,6 +3542,7 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,return 0 ; } + input_dev->evbit[0 ] |=BIT_MASK (EV_KEY ) |BIT_MASK (EV_ABS );__set_bit (BTN_TOUCH , input_dev->keybit);__set_bit (ABS_MISC , input_dev->absbit);
@@ -3694,8 +3693,6 @@ int wacom_setup_touch_input_capabilities(struct input_dev *input_dev, {struct wacom_features *features = &wacom_wac->features; - input_dev->evbit[0 ] |=BIT_MASK (EV_KEY ) |BIT_MASK (EV_ABS ); -if (!(features->device_type &WACOM_DEVICETYPE_TOUCH ))return -ENODEV ;
@@ -3708,6 +3705,7 @@ int wacom_setup_touch_input_capabilities(struct input_dev *input_dev,/* setup has already been done */ return 0 ; + input_dev->evbit[0 ] |=BIT_MASK (EV_KEY ) |BIT_MASK (EV_ABS );__set_bit (BTN_TOUCH , input_dev->keybit);if (features->touch_max ==1 ) {
drivers/input/keyboard/nspire-keypad.c +31 -25
82 lines not on this page · raw message
drivers/input/serio/i8042-x86ia64io.h +1 -0
@@ -592,6 +592,7 @@ static const struct dmi_system_id i8042_dmi_noselftest_table[] = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ),DMI_MATCH (DMI_CHASSIS_TYPE ,"10" ),/* Notebook */ }, + }, { .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), DMI_MATCH(DMI_CHASSIS_TYPE, "31"), /* Convertible Notebook */
drivers/input/touchscreen/s6sy761.c +2 -2
@@ -145,8 +145,8 @@ static void s6sy761_report_coordinates(struct s6sy761_data *sdata,u8 major = event[4 ];u8 minor = event[5 ];u8 z = event[6 ] &S6SY761_MASK_Z ; -u16 x = (event[1 ] <<3 ) | ((event[3 ] &S6SY761_MASK_X ) >>4 ); -u16 y = (event[2 ] <<3 ) | (event[3 ] &S6SY761_MASK_Y ); +u16 x = (event[1 ] <<4 ) | ((event[3 ] &S6SY761_MASK_X ) >>4 ); +u16 y = (event[2 ] <<4 ) | (event[3 ] &S6SY761_MASK_Y );input_mt_slot (sdata->input, tid);
drivers/md/dm-verity-fec.c +8 -3
@@ -69,7 +69,7 @@ static u8 *fec_read_parity(struct dm_verity *v, u64 rsb, int index,u8 *res; position = (index + rsb) * v->fec->roots; - block =div64_u64_rem (position, v->fec->roots <<SECTOR_SHIFT , &rem); + block =div64_u64_rem (position, v->fec->io_size, &rem); *offset = (unsigned )rem; res =dm_bufio_read (v->fec->bufio, block, buf);
@@ -158,7 +158,7 @@ static int fec_decode_bufs(struct dm_verity *v, struct dm_verity_fec_io *fio,/* read the next block when we run out of parity bytes */ offset += v->fec->roots; -if (offset >= v->fec->roots <<SECTOR_SHIFT ) { +if (offset >= v->fec->io_size) {dm_bufio_release (buf); par =fec_read_parity (v, rsb, block_offset, &offset, &buf);
@@ -743,8 +743,13 @@ int verity_fec_ctr(struct dm_verity *v)return -E2BIG ; } +if ((f->roots <<SECTOR_SHIFT ) & ((1 << v->data_dev_block_bits) -1 )) + f->io_size =1 << v->data_dev_block_bits; +else + f->io_size = v->fec->roots <<SECTOR_SHIFT ; + f->bufio =dm_bufio_client_create (f->dev->bdev, - f->roots <<SECTOR_SHIFT , + f->io_size,1 ,0 ,NULL ,NULL );if (IS_ERR (f->bufio)) { ti->error ="Cannot initialize FEC bufio client" ;
drivers/md/dm-verity-fec.h +1 -0
@@ -40,6 +40,7 @@ struct dm_verity_fec {struct dm_dev *dev;/* parity data device */ struct dm_bufio_client *data_bufio;/* for data dev access */ struct dm_bufio_client *bufio;/* for parity data access */ +size_t io_size;/* IO size for roots */ sector_t start;/* parity data start in blocks */ sector_t blocks;/* number of blocks covered */ sector_t rounds;/* number of interleaving rounds */
drivers/net/dsa/mv88e6xxx/chip.c +13 -17
@@ -2634,10 +2634,17 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)return err; } +/* prod_id for switch families which do not have a PHY model number */ +static const u16 family_prod_id_table[] = { + [MV88E6XXX_FAMILY_6341 ] =MV88E6XXX_PORT_SWITCH_ID_PROD_6341 , + [MV88E6XXX_FAMILY_6390 ] =MV88E6XXX_PORT_SWITCH_ID_PROD_6390 , +}; +static int mv88e6xxx_mdio_read (struct mii_bus *bus,int phy,int reg) {struct mv88e6xxx_mdio_bus *mdio_bus = bus->priv;struct mv88e6xxx_chip *chip = mdio_bus->chip; +u16 prod_id;u16 val;int err;
@@ -2648,23 +2655,12 @@ static int mv88e6xxx_mdio_read(struct mii_bus *bus, int phy, int reg) err = chip->info->ops->phy_read (chip, bus, phy, reg, &val);mutex_unlock (&chip->reg_lock); -if (reg ==MII_PHYSID2 ) { -/* Some internal PHYs don't have a model number. */ -if (chip->info->family !=MV88E6XXX_FAMILY_6165 ) -/* Then there is the 6165 family. It gets is -* PHYs correct. But it can also have two -* SERDES interfaces in the PHY address -* space. And these don't have a model -* number. But they are not PHYs, so we don't -* want to give them something a PHY driver -* will recognise. -* -* Use the mv88e6390 family model number -* instead, for anything which really could be -* a PHY, -*/ -if (!(val &0x3f0 )) - val |=MV88E6XXX_PORT_SWITCH_ID_PROD_6390 >>4 ; +/* Some internal PHYs don't have a model number. */ +if (reg ==MII_PHYSID2 && !(val &0x3f0 ) && + chip->info->family <ARRAY_SIZE (family_prod_id_table)) { + prod_id = family_prod_id_table[chip->info->family]; +if (prod_id) + val |= prod_id >>4 ; }return err ? err : val;
drivers/net/ethernet/amd/pcnet32.c +3 -2
@@ -1548,8 +1548,7 @@ pcnet32_probe_pci(struct pci_dev *pdev, const struct pci_device_id *ent) }pci_set_master (pdev); - ioaddr =pci_resource_start (pdev,0 ); -if (!ioaddr) { +if (!pci_resource_len (pdev,0 )) {if (pcnet32_debug &NETIF_MSG_PROBE )pr_err ("card has no PCI IO resources, aborting\n" ); err = -ENODEV ;
@@ -1562,6 +1561,8 @@ pcnet32_probe_pci(struct pci_dev *pdev, const struct pci_device_id *ent)pr_err ("architecture does not support 32bit PCI busmaster DMA\n" ); goto err_disable_dev; } + + ioaddr =pci_resource_start (pdev,0 );if (!request_region (ioaddr,PCNET32_TOTAL_SIZE ,"pcnet32_probe_pci" )) {if (pcnet32_debug &NETIF_MSG_PROBE )pr_err ("io address range already allocated\n" );
drivers/net/ethernet/cavium/liquidio/cn66xx_regs.h +1 -1
@@ -412,7 +412,7 @@ | CN6XXX_INTR_M0UNWI_ERR \ |CN6XXX_INTR_M1UPB0_ERR \ |CN6XXX_INTR_M1UPWI_ERR \ - |CN6XXX_INTR_M1UPB0_ERR \ + |CN6XXX_INTR_M1UNB0_ERR \ |CN6XXX_INTR_M1UNWI_ERR \ |CN6XXX_INTR_INSTR_DB_OF_ERR \ |CN6XXX_INTR_SLIST_DB_OF_ERR \
drivers/net/ethernet/davicom/dm9000.c +4 -2
@@ -1482,8 +1482,10 @@ dm9000_probe(struct platform_device *pdev)/* Init network device */ ndev =alloc_etherdev (sizeof (struct board_info )); -if (!ndev) -return -ENOMEM ; +if (!ndev) { + ret = -ENOMEM ; + goto out_regulator_disable; + }SET_NETDEV_DEV (ndev, &pdev->dev);
drivers/net/ethernet/ibm/ibmvnic.c +2 -12
@@ -1092,19 +1092,13 @@ static int __ibmvnic_open(struct net_device *netdev) rc =set_link_state (adapter,IBMVNIC_LOGICAL_LNK_UP );if (rc) { -for (i =0 ; i < adapter->req_rx_queues; i++) -napi_disable (&adapter->napi[i]); +ibmvnic_napi_disable (adapter);release_resources (adapter);return rc; }netif_tx_start_all_queues (netdev); -if (prev_state ==VNIC_CLOSED ) { -for (i =0 ; i < adapter->req_rx_queues; i++) -napi_schedule (&adapter->napi[i]); - } - adapter->state =VNIC_OPEN ;return rc; }
@@ -1761,7 +1755,7 @@ static int do_reset(struct ibmvnic_adapter *adapter,u64 old_num_rx_queues, old_num_tx_queues;u64 old_num_rx_slots, old_num_tx_slots;struct net_device *netdev = adapter->netdev; -int i, rc; +int rc;netdev_dbg (adapter->netdev,"Re-setting driver (%d)\n" , rwi->reset_reason);
@@ -1879,10 +1873,6 @@ static int do_reset(struct ibmvnic_adapter *adapter,/* refresh device's multicast list */ ibmvnic_set_multi (netdev); -/* kick napi */ -for (i =0 ; i < adapter->req_rx_queues; i++) -napi_schedule (&adapter->napi[i]); -if (adapter->reset_reason !=VNIC_RESET_FAILOVER && adapter->reset_reason !=VNIC_RESET_CHANGE_PARAM ) {call_netdevice_notifiers (NETDEV_NOTIFY_PEERS , netdev);
drivers/net/ethernet/intel/i40e/i40e_main.c +6 -0
@@ -11211,6 +11211,7 @@ static int i40e_sw_init(struct i40e_pf *pf) {int err =0 ;int size; +u16 pow;/* Set default capability flags */ pf->flags = I40E_FLAG_RX_CSUM_ENABLED |
@@ -11229,6 +11230,11 @@ static int i40e_sw_init(struct i40e_pf *pf) pf->rss_table_size = pf->hw.func_caps.rss_table_size; pf->rss_size_max =min_t (int, pf->rss_size_max, pf->hw.func_caps.num_tx_qp); + +/* find the next higher power-of-2 of num cpus */ + pow =roundup_pow_of_two (num_online_cpus ()); + pf->rss_size_max =min_t (int, pf->rss_size_max, pow); +if (pf->hw.func_caps.rss) { pf->flags |=I40E_FLAG_RSS_ENABLED ; pf->alloc_rss_size = min_t(int, pf->rss_size_max,
drivers/net/geneve.c +6 -0
@@ -839,6 +839,9 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev,__be16 df;int err; +if (!pskb_network_may_pull (skb,sizeof (struct iphdr ))) +return -EINVAL ; + sport =udp_flow_src_port (geneve->net, skb,1 ,USHRT_MAX , true); rt =geneve_get_v4_rt (skb, dev, gs4, &fl4, info, geneve->info.key.tp_dst, sport);
@@ -882,6 +885,9 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev,__be16 sport;int err; +if (!pskb_network_may_pull (skb,sizeof (struct ipv6hdr ))) +return -EINVAL ; + sport =udp_flow_src_port (geneve->net, skb,1 ,USHRT_MAX , true); dst =geneve_get_v6_dst (skb, dev, gs6, &fl6, info, geneve->info.key.tp_dst, sport);
drivers/net/phy/marvell.c +25 -3
@@ -2329,9 +2329,30 @@ static struct phy_driver marvell_drivers[] = { .get_stats = marvell_get_stats, }, { - .phy_id = MARVELL_PHY_ID_88E6390, + .phy_id = MARVELL_PHY_ID_88E6341_FAMILY, .phy_id_mask = MARVELL_PHY_ID_MASK, - .name = "Marvell 88E6390", + .name = "Marvell 88E6341 Family", + .features = PHY_GBIT_FEATURES, + .flags = PHY_HAS_INTERRUPT, + .probe = m88e1510_probe, + .config_init = &marvell_config_init, + .config_aneg = &m88e6390_config_aneg, + .read_status = &marvell_read_status, + .ack_interrupt = &marvell_ack_interrupt, + .config_intr = &marvell_config_intr, + .did_interrupt = &m88e1121_did_interrupt, + .resume = &genphy_resume, + .suspend = &genphy_suspend, + .read_page = marvell_read_page, + .write_page = marvell_write_page, + .get_sset_count = marvell_get_sset_count, + .get_strings = marvell_get_strings, + .get_stats = marvell_get_stats, + }, + { + .phy_id = MARVELL_PHY_ID_88E6390_FAMILY, + .phy_id_mask = MARVELL_PHY_ID_MASK, + .name = "Marvell 88E6390 Family", .features = PHY_GBIT_FEATURES, .flags = PHY_HAS_INTERRUPT, .probe = m88e6390_probe,
@@ -2368,7 +2389,8 @@ static struct mdio_device_id __maybe_unused marvell_tbl[] = { { MARVELL_PHY_ID_88E1540, MARVELL_PHY_ID_MASK }, { MARVELL_PHY_ID_88E1545, MARVELL_PHY_ID_MASK }, { MARVELL_PHY_ID_88E3016, MARVELL_PHY_ID_MASK }, - { MARVELL_PHY_ID_88E6390, MARVELL_PHY_ID_MASK }, + { MARVELL_PHY_ID_88E6341_FAMILY, MARVELL_PHY_ID_MASK }, + { MARVELL_PHY_ID_88E6390_FAMILY, MARVELL_PHY_ID_MASK }, { } };
drivers/net/usb/hso.c +1 -1
@@ -3114,7 +3114,7 @@ static void hso_free_interface(struct usb_interface *interface)cancel_work_sync (&serial_table[i]->async_put_intf);cancel_work_sync (&serial_table[i]->async_get_intf);hso_serial_tty_unregister (serial); -kref_put (&serial_table[i]->ref, hso_serial_ref_free); +kref_put (&serial->parent->ref, hso_serial_ref_free); } }
drivers/net/xen-netback/xenbus.c +8 -4
@@ -1043,11 +1043,15 @@ static void connect(struct backend_info *be)xenvif_carrier_on (be->vif);unregister_hotplug_status_watch (be); - err =xenbus_watch_pathfmt (dev, &be->hotplug_status_watch,NULL , - hotplug_status_changed, -"%s/%s" , dev->nodename,"hotplug-status" ); -if (!err) +if (xenbus_exists (XBT_NIL , dev->nodename,"hotplug-status" )) { + err =xenbus_watch_pathfmt (dev, &be->hotplug_status_watch, +NULL , hotplug_status_changed, +"%s/%s" , dev->nodename, +"hotplug-status" ); +if (err) + goto err; be->have_hotplug_status_watch =1 ; + }netif_tx_wake_all_queues (be->vif->dev);
drivers/pinctrl/intel/pinctrl-lewisburg.c +3 -3
@@ -297,9 +297,9 @@ static const struct pinctrl_pin_desc lbg_pins[] = {static const struct intel_community lbg_communities[] = {LBG_COMMUNITY (0 ,0 ,71 ),LBG_COMMUNITY (1 ,72 ,132 ), -LBG_COMMUNITY (3 ,133 ,144 ), -LBG_COMMUNITY (4 ,145 ,180 ), -LBG_COMMUNITY (5 ,181 ,246 ), +LBG_COMMUNITY (3 ,133 ,143 ), +LBG_COMMUNITY (4 ,144 ,178 ), +LBG_COMMUNITY (5 ,179 ,246 ), };static const struct intel_pinctrl_soc_data lbg_soc_data = {
drivers/scsi/libsas/sas_ata.c +4 -5
@@ -215,18 +215,17 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)memcpy (task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len); task->total_xfer_len = qc->nbytes; task->num_scatter = qc->n_elem; + task->data_dir = qc->dma_dir; + }else if (qc->tf.protocol ==ATA_PROT_NODATA ) { + task->data_dir =DMA_NONE ; }else {for_each_sg (qc->sg, sg, qc->n_elem, si) xfer +=sg_dma_len (sg); task->total_xfer_len = xfer; task->num_scatter = si; - } - -if (qc->tf.protocol ==ATA_PROT_NODATA ) - task->data_dir =DMA_NONE ; -else task->data_dir = qc->dma_dir; + } task->scatter = qc->sg; task->ata_task.retry_count =1 ; task->task_state_flags =SAS_TASK_STATE_PENDING ;
drivers/scsi/scsi_transport_srp.c +1 -1
@@ -555,7 +555,7 @@ int srp_reconnect_rport(struct srp_rport *rport) res =mutex_lock_interruptible (&rport->mutex);if (res) goto out; -if (rport->state !=SRP_RPORT_FAIL_FAST ) +if (rport->state !=SRP_RPORT_FAIL_FAST && rport->state !=SRP_RPORT_LOST )/* * sdev state must be SDEV_TRANSPORT_OFFLINE, transition * to SDEV_BLOCK is illegal. Calling scsi_target_unblock()
drivers/usb/class/cdc-acm.c +2 -1
@@ -1682,12 +1682,13 @@ static int acm_resume(struct usb_interface *intf)struct urb *urb;int rv =0 ; -acm_unpoison_urbs (acm);spin_lock_irq (&acm->write_lock);if (--acm->susp_count) goto out; +acm_unpoison_urbs (acm); +if (tty_port_initialized (&acm->port)) { rv =usb_submit_urb (acm->ctrlurb,GFP_ATOMIC );
fs/readdir.c +6 -0
@@ -132,6 +132,9 @@ static int fillonedir(struct dir_context *ctx, const char *name, int namlen,if (buf->result)return -EINVAL ; + buf->result =verify_dirent_name (name, namlen); +if (buf->result <0 ) +return buf->result; d_ino = ino;if (sizeof (d_ino) <sizeof (ino) && d_ino != ino) { buf->result = -EOVERFLOW ;
@@ -398,6 +401,9 @@ static int compat_fillonedir(struct dir_context *ctx, const char *name,if (buf->result)return -EINVAL ; + buf->result =verify_dirent_name (name, namlen); +if (buf->result <0 ) +return buf->result; d_ino = ino;if (sizeof (d_ino) <sizeof (ino) && d_ino != ino) { buf->result = -EOVERFLOW ;
include/linux/marvell_phy.h +3 -2
@@ -21,11 +21,12 @@#define MARVELL_PHY_ID_88E1545 0x01410ea0#define MARVELL_PHY_ID_88E3016 0x01410e60 -/* The MV88e6390 Ethernet switch contains embedded PHYs. These PHYs do +/* These Ethernet switch families contain embedded PHYs, but they do * not have a model ID. So the switch driver traps reads to the ID2 * register and returns the switch family ID */ -#define MARVELL_PHY_ID_88E6390 0x01410f90 +#define MARVELL_PHY_ID_88E6341_FAMILY 0x01410f41 +#define MARVELL_PHY_ID_88E6390_FAMILY 0x01410f90#define MARVELL_PHY_FAMILY_ID (id) ((id) >> 4)
kernel/locking/lockdep.c +2 -1
@@ -722,7 +722,8 @@ static bool assign_lock_key(struct lockdep_map *lock)/* Debug-check: all keys must be persistent! */ debug_locks_off ();pr_err ("INFO: trying to register non-static key.\n" ); -pr_err ("the code is fine but needs lockdep annotation.\n" ); +pr_err ("The code is fine but needs lockdep annotation, or maybe\n" ); +pr_err ("you didn't initialize this object before use?\n" );pr_err ("turning off the locking correctness validator.\n" );dump_stack ();return false;
kernel/locking/qrwlock.c +4 -3
@@ -70,6 +70,8 @@ EXPORT_SYMBOL(queued_read_lock_slowpath);*/ void queued_write_lock_slowpath (struct qrwlock *lock) { +int cnts; +/* Put the writer into the wait queue */ arch_spin_lock (&lock->wait_lock);
@@ -83,9 +85,8 @@ void queued_write_lock_slowpath(struct qrwlock *lock)/* When no more readers or writers, set the locked flag */ do { -atomic_cond_read_acquire (&lock->cnts,VAL == _QW_WAITING); - }while (atomic_cmpxchg_relaxed (&lock->cnts, _QW_WAITING, - _QW_LOCKED) != _QW_WAITING); + cnts =atomic_cond_read_relaxed (&lock->cnts,VAL == _QW_WAITING); + }while (!atomic_try_cmpxchg_acquire (&lock->cnts, &cnts, _QW_LOCKED)); unlock:arch_spin_unlock (&lock->wait_lock); }
mm/gup.c +38 -6
84 lines not on this page · raw message
mm/huge_memory.c +3 -4
@@ -1432,13 +1432,12 @@ vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd) }/* -* FOLL_FORCE can write to even unwritable pmd's, but only -* after we've gone through a COW cycle and they are dirty. +* FOLL_FORCE or a forced COW break can write even to unwritable pmd's, +* but only after we've gone through a COW cycle and they are dirty. */ static inline bool can_follow_write_pmd (pmd_t pmd,unsigned int flags) { -return pmd_write (pmd) || - ((flags &FOLL_FORCE ) && (flags &FOLL_COW ) &&pmd_dirty (pmd)); +return pmd_write (pmd) || ((flags &FOLL_COW ) &&pmd_dirty (pmd)); } struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,
net/core/neighbour.c +1 -1
@@ -1271,7 +1271,7 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new,* we can reinject the packet there. */ n2 =NULL ; -if (dst) { +if (dst && dst->obsolete !=DST_OBSOLETE_DEAD ) { n2 =dst_neigh_lookup_skb (dst, skb);if (n2) n1 = n2;
net/ieee802154/nl802154.c +29 -0
@@ -1516,6 +1516,11 @@ nl802154_dump_llsec_key(struct sk_buff *skb, struct netlink_callback *cb)if (err)return err; +if (wpan_dev->iftype ==NL802154_IFTYPE_MONITOR ) { + err = skb->len; + goto out_err; + } +if (!wpan_dev->netdev) { err = -EINVAL ; goto out_err;
@@ -1688,6 +1693,11 @@ nl802154_dump_llsec_dev(struct sk_buff *skb, struct netlink_callback *cb)if (err)return err; +if (wpan_dev->iftype ==NL802154_IFTYPE_MONITOR ) { + err = skb->len; + goto out_err; + } +if (!wpan_dev->netdev) { err = -EINVAL ; goto out_err;
@@ -1775,6 +1785,9 @@ static int nl802154_add_llsec_dev(struct sk_buff *skb, struct genl_info *info)struct wpan_dev *wpan_dev = dev->ieee802154_ptr;struct ieee802154_llsec_device dev_desc; +if (wpan_dev->iftype ==NL802154_IFTYPE_MONITOR ) +return -EOPNOTSUPP ; +if (ieee802154_llsec_parse_device (info->attrs[NL802154_ATTR_SEC_DEVICE ], &dev_desc) <0 )return -EINVAL ;
@@ -1861,6 +1874,11 @@ nl802154_dump_llsec_devkey(struct sk_buff *skb, struct netlink_callback *cb)if (err)return err; +if (wpan_dev->iftype ==NL802154_IFTYPE_MONITOR ) { + err = skb->len; + goto out_err; + } +if (!wpan_dev->netdev) { err = -EINVAL ; goto out_err;
@@ -1918,6 +1936,9 @@ static int nl802154_add_llsec_devkey(struct sk_buff *skb, struct genl_info *infostruct ieee802154_llsec_device_key key;__le64 extended_addr; +if (wpan_dev->iftype ==NL802154_IFTYPE_MONITOR ) +return -EOPNOTSUPP ; +if (!info->attrs[NL802154_ATTR_SEC_DEVKEY ] || nla_parse_nested(attrs, NL802154_DEVKEY_ATTR_MAX, info->attrs[NL802154_ATTR_SEC_DEVKEY],
@@ -2027,6 +2048,11 @@ nl802154_dump_llsec_seclevel(struct sk_buff *skb, struct netlink_callback *cb)if (err)return err; +if (wpan_dev->iftype ==NL802154_IFTYPE_MONITOR ) { + err = skb->len; + goto out_err; + } +if (!wpan_dev->netdev) { err = -EINVAL ; goto out_err;
@@ -2112,6 +2138,9 @@ static int nl802154_add_llsec_seclevel(struct sk_buff *skb,struct wpan_dev *wpan_dev = dev->ieee802154_ptr;struct ieee802154_llsec_seclevel sl; +if (wpan_dev->iftype ==NL802154_IFTYPE_MONITOR ) +return -EOPNOTSUPP ; +if (llsec_parse_seclevel (info->attrs[NL802154_ATTR_SEC_LEVEL ], &sl) <0 )return -EINVAL ;
net/ipv6/ip6_tunnel.c +10 -0
@@ -2222,6 +2222,16 @@ static void __net_exit ip6_tnl_destroy_tunnels(struct net *net, struct list_head t =rtnl_dereference (t->next); } } + + t =rtnl_dereference (ip6n->tnls_wc[0 ]); +while (t) { +/* If dev is in the same netns, it has already +* been added to the list by the previous loop. +*/ +if (!net_eq (dev_net (t->dev), net)) +unregister_netdevice_queue (t->dev, list); + t =rtnl_dereference (t->next); + } }static int __net_init ip6_tnl_init_net (struct net *net)
net/ipv6/sit.c +2 -2
@@ -1818,9 +1818,9 @@ static void __net_exit sit_destroy_tunnels(struct net *net,if (dev->rtnl_link_ops == &sit_link_ops)unregister_netdevice_queue (dev, head); -for (prio =1 ; prio <4 ; prio++) { +for (prio =0 ; prio <4 ; prio++) {int h; -for (h =0 ; h <IP6_SIT_HASH_SIZE ; h++) { +for (h =0 ; h < (prio ?IP6_SIT_HASH_SIZE :1 ); h++) {struct ip_tunnel *t; t =rtnl_dereference (sitn->tunnels[prio][h]);
net/mac80211/cfg.c +3 -1
@@ -1548,8 +1548,10 @@ static int ieee80211_change_station(struct wiphy *wiphy, }if (sta->sdata->vif.type ==NL80211_IFTYPE_AP_VLAN && - sta->sdata->u.vlan.sta) + sta->sdata->u.vlan.sta) { +ieee80211_clear_fast_rx (sta);RCU_INIT_POINTER (sta->sdata->u.vlan.sta,NULL ); + }if (test_sta_flag (sta,WLAN_STA_AUTHORIZED ))ieee80211_vif_dec_num_mcast (sta->sdata);
net/netfilter/nf_conntrack_standalone.c +1 -0
@@ -262,6 +262,7 @@ static const char* l4proto_name(u16 proto)case IPPROTO_GRE :return "gre" ;case IPPROTO_SCTP :return "sctp" ;case IPPROTO_UDPLITE :return "udplite" ; +case IPPROTO_ICMPV6 :return "icmpv6" ; }return "unknown" ;
net/netfilter/nft_limit.c +2 -2
@@ -79,13 +79,13 @@ static int nft_limit_init(struct nft_limit *limit,return -EOVERFLOW ;if (pkts) { - tokens =div_u64 (limit->nsecs, limit->rate) * limit->burst; + tokens =div64_u64 (limit->nsecs, limit->rate) * limit->burst; }else {/* The token bucket size limits the number of tokens can be * accumulated. tokens_max specifies the bucket size. * tokens_max = unit * (rate + burst) / rate. */ - tokens =div_u64 (limit->nsecs * (limit->rate + limit->burst), + tokens =div64_u64 (limit->nsecs * (limit->rate + limit->burst), limit->rate); }
net/sctp/socket.c +5 -8
@@ -1569,11 +1569,9 @@ static void sctp_close(struct sock *sk, long timeout)/* Supposedly, no process has access to the socket, but * the net layers still may. -* Also, sctp_destroy_sock() needs to be called with addr_wq_lock -* held and that should be grabbed before socket lock. */ -spin_lock_bh (&net->sctp.addr_wq_lock); -bh_lock_sock_nested (sk); +local_bh_disable (); +bh_lock_sock (sk);/* Hold the sock, since sk_common_release() will put sock_put() * and we have just a little more cleanup.
@@ -1582,7 +1580,7 @@ static void sctp_close(struct sock *sk, long timeout)sk_common_release (sk);bh_unlock_sock (sk); -spin_unlock_bh (&net->sctp.addr_wq_lock); +local_bh_enable ();sock_put (sk);
@@ -4776,9 +4774,6 @@ static int sctp_init_sock(struct sock *sk)sk_sockets_allocated_inc (sk);sock_prot_inuse_add (net, sk->sk_prot,1 ); -/* Nothing can fail after this block, otherwise -* sctp_destroy_sock() will be called without addr_wq_lock held -*/ if (net->sctp.default_auto_asconf) {spin_lock (&sock_net (sk)->sctp.addr_wq_lock); list_add_tail(&sp->auto_asconf_list,
@@ -4813,7 +4808,9 @@ static void sctp_destroy_sock(struct sock *sk)if (sp->do_auto_asconf) { sp->do_auto_asconf =0 ; +spin_lock_bh (&sock_net (sk)->sctp.addr_wq_lock);list_del (&sp->auto_asconf_list); +spin_unlock_bh (&sock_net (sk)->sctp.addr_wq_lock); }sctp_endpoint_free (sp->ep);local_bh_disable ();
sound/soc/fsl/fsl_esai.c +5 -3
@@ -497,11 +497,13 @@ static int fsl_esai_startup(struct snd_pcm_substream *substream,ESAI_SAICR_SYNC , esai_priv->synchronous ? ESAI_SAICR_SYNC : 0); -/* Set a default slot number -- 2 */ +/* Set slots count */ regmap_update_bits (esai_priv->regmap,REG_ESAI_TCCR , - ESAI_xCCR_xDC_MASK,ESAI_xCCR_xDC (2 )); + ESAI_xCCR_xDC_MASK, +ESAI_xCCR_xDC (esai_priv->slots));regmap_update_bits (esai_priv->regmap,REG_ESAI_RCCR , - ESAI_xCCR_xDC_MASK,ESAI_xCCR_xDC (2 )); + ESAI_xCCR_xDC_MASK, +ESAI_xCCR_xDC (esai_priv->slots)); }return 0 ;
tools/arch/ia64/include/asm/barrier.h +0 -3
@@ -39,9 +39,6 @@* sequential memory pages only. */ -/* XXX From arch/ia64/include/uapi/asm/gcc_intrin.h */ -#define ia64_mf () asm volatile ("mf" ::: "memory") -#define mb () ia64_mf()#define rmb () mb()#define wmb () mb()
Samuel Zou
Tested-by Hulk RobotQuoted 4 lines · Greg Kroah-Hartman
I'm announcing the release of the 4.19.189 kernel.
All users of the 4.19 kernel series must upgrade.
Quoted 9 lines
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitlinux-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=summarythanks,
greg k-h
Tested on arm64 and x86 for 4.19.189,
Kernel repo:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Branch: linux-4.19.y
Version: 4.19.189
Commit: 97a8651cadce7c2b7c4d8f108b392eff31fe2c08
Compiler: gcc version 7.3.0 (GCC)
arm64:
--------------------------------------------------------------------
Testcase Result Summary:
total: 6263
passed: 6263
failed: 0
timeout: 0
--------------------------------------------------------------------
x86:
--------------------------------------------------------------------
Testcase Result Summary:
total: 6263
passed: 6263
failed: 0
timeout: 0
--------------------------------------------------------------------