Linux 4.14.257
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.257 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.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/devicetree/bindings/pinctrl/marvell,armada-37xx-pinctrl.txt | 26 Documentation/networking/ipvs-sysctl.txt | 3 Makefile | 2 arch/arm/boot/dts/bcm5301x.dtsi | 4 arch/arm/include/asm/tlb.h | 8 arch/arm/mach-socfpga/core.h | 2 arch/arm/mach-socfpga/platsmp.c | 8 arch/arm64/boot/dts/marvell/armada-3720-db.dts | 3 arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts | 3 arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 9 arch/ia64/include/asm/tlb.h | 10 arch/mips/Kconfig | 2 arch/parisc/Makefile | 5 arch/parisc/install.sh | 1 arch/parisc/kernel/time.c | 24 arch/s390/include/asm/tlb.h | 14 arch/s390/kernel/setup.c | 3 arch/s390/mm/pgtable.c | 13 arch/sh/include/asm/tlb.h | 10 arch/um/include/asm/tlb.h | 12 arch/x86/realmode/init.c | 12 drivers/android/binder.c | 2 drivers/ata/sata_fsl.c | 20 drivers/block/xen-blkfront.c | 126 +- drivers/gpu/drm/vc4/vc4_bo.c | 2 drivers/hid/wacom_wac.c | 8 drivers/hid/wacom_wac.h | 1 drivers/media/cec/cec-adap.c | 1 drivers/net/ethernet/dec/tulip/de4x5.c | 34 drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c | 4 drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 9 drivers/net/ethernet/natsemi/xtsonic.c | 2 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 10 drivers/net/usb/lan78xx.c | 2 drivers/net/vrf.c | 2 drivers/net/xen-netfront.c | 257 +++-- drivers/pci/host/pci-aardvark.c | 463 ++++++++-- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 28 drivers/platform/x86/thinkpad_acpi.c | 12 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 2 drivers/scsi/scsi_transport_iscsi.c | 6 drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 3 drivers/staging/typec/tcpm.c | 4 drivers/thermal/thermal_core.c | 2 drivers/tty/hvc/hvc_xen.c | 17 drivers/tty/serial/amba-pl011.c | 1 drivers/tty/serial/msm_serial.c | 3 drivers/tty/serial/serial_core.c | 13 drivers/usb/core/hub.c | 23 drivers/usb/host/xhci-ring.c | 21 drivers/usb/serial/option.c | 5 drivers/vhost/vsock.c | 2 drivers/video/console/vgacon.c | 14 drivers/xen/xenbus/xenbus_probe.c | 27 fs/btrfs/disk-io.c | 14 fs/file.c | 19 fs/file_table.c | 9 fs/fuse/dev.c | 14 fs/nfs/nfs42proc.c | 5 fs/nfs/nfs42xdr.c | 3 fs/proc/vmcore.c | 15 include/asm-generic/tlb.h | 2 include/linux/file.h | 2 include/linux/fs.h | 4 include/linux/ipc_namespace.h | 15 include/linux/kprobes.h | 2 include/linux/sched/task.h | 2 include/linux/shm.h | 13 include/linux/siphash.h | 14 include/net/nfc/nci_core.h | 1 include/net/nl802154.h | 7 include/uapi/linux/pci_regs.h | 5 include/xen/interface/io/ring.h | 293 +++--- ipc/shm.c | 176 ++- ipc/util.c | 6 kernel/kprobes.c | 3 kernel/power/hibernate.c | 6 kernel/trace/trace.h | 24 kernel/trace/trace_events.c | 7 lib/siphash.c | 12 mm/hugetlb.c | 72 + mm/memory.c | 10 net/ipv4/devinet.c | 2 net/ipv4/tcp_cubic.c | 5 net/ipv6/ip6_output.c | 2 net/mpls/af_mpls.c | 68 + net/netfilter/ipvs/ip_vs_core.c | 8 net/nfc/nci/core.c | 19 net/rds/tcp.c | 2 net/smc/af_smc.c | 8 net/smc/smc_close.c | 10 sound/pci/ctxfi/ctamixer.c | 14 sound/pci/ctxfi/ctdaio.c | 16 sound/pci/ctxfi/ctresource.c | 7 sound/pci/ctxfi/ctresource.h | 4 sound/pci/ctxfi/ctsrc.c | 7 sound/soc/soc-topology.c | 3 tools/perf/ui/hist.c | 28 tools/perf/util/hist.h | 1 99 files changed, 1590 insertions(+), 669 deletions(-)
Alexander Aring (1):
net: ieee802154: handle iftypes as u32
Alexander Mikhalitsyn (2):
shm: extend forced shm destroy to support objects from several IPC nses
ipc: WARN if trying to remove ipc object which is absent
Arnd Bergmann (1):
siphash: use _unaligned version by default
Badhri Jagan Sridharan (1):
usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect
Baokun Li (2):
sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl
sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl
Benjamin Coddington (1):
NFSv42: Fix pagecache invalidation after COPY/CLONE
Benjamin Poirier (1):
net: mpls: Fix notifications when deleting a device
Dan Carpenter (2):
staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() drm/vc4: fix error code in vc4_create_object()
Daniele Palmas (1):
USB: serial: option: add Telit LE910S1 0x9200 composition
David Hildenbrand (2):
s390/mm: validate VMA in PGSTE manipulation functions proc/vmcore: fix clearing user buffer by properly using clear_user()
Eric Dumazet (2):
ipv6: fix typos in __ip6_finish_output()
tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows
Evan Wang (1):
PCI: aardvark: Remove PCIe outbound window configuration
Florian Fainelli (2):
ARM: dts: BCM5301X: Fix I2C controller interrupt
ARM: dts: BCM5301X: Add interrupt properties to GPIO node
Frederick Lawler (1):
PCI: Add PCI_EXP_LNKCTL2_TLS* macros
Greg Kroah-Hartman (1):
Linux 4.14.257
Gregory CLEMENT (1):
pinctrl: armada-37xx: add missing pin: PCIe1 Wakeup
Hans Verkuil (1):
media: cec: copy sequence field for the reply
Helge Deller (3):
parisc: Fix KBUILD_IMAGE for self-extracting kernel
parisc: Fix "make install" on newer debian releases
parisc: Mark cr16 CPU clocksource unstable on all SMP machines
Huang Pei (1):
MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48
Ian Rogers (1):
perf hist: Fix memory leak of a perf_hpp_fmt
Jason Gerecke (1):
HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts
Jens Axboe (1):
fs: add fget_many() and fput_many()
Joerg Roedel (1):
x86/64/mm: Map all kernel memory into trampoline_pgd
Johan Hovold (1):
serial: core: fix transmit-buffer reset and memleak
Juergen Gross (9):
xen: sync include/xen/interface/io/ring.h with Xen's newest version xen/blkfront: read response from backend only once xen/blkfront: don't take local copy of a request from the ring page xen/blkfront: don't trust the backend response data blindly xen/netfront: read response from backend only once xen/netfront: don't read data from request on the ring page xen/netfront: disentangle tx_skb_freelist
xen/netfront: don't trust the backend response data blindly
tty: hvc: replace BUG_ON() with negative return value
Lin Ma (1):
NFC: add NCI_UNREG flag to eliminate the race
Linus Torvalds (1):
fget: check that the fd still exists after getting a ref to it
Maciej W. Rozycki (1):
vgacon: Propagate console boot parameters before calling `vc_resize'
Manaf Meethalavalappu Pallikunhi (1):
thermal: core: Reset previous low and high trip during thermal zone init
Marek Behún (4):
PCI: aardvark: Improve link training
pinctrl: armada-37xx: Correct mpp definitions
pinctrl: armada-37xx: Correct PWM pins definitions
arm64: dts: marvell: armada-37xx: Set pcie_reset_pin to gpio function
Masami Hiramatsu (1):
kprobes: Limit max data_size of the kretprobe instances
Mathias Nyman (3):
usb: hub: Fix usb enumeration issue due to address0 race
usb: hub: Fix locking issues with address0_mutex
xhci: Fix commad ring abort, write all 64 bits to CRCR register.
Mike Christie (1):
scsi: iscsi: Unblock session then wake up error handler
Mike Kravetz (1):
hugetlb: take PMD sharing into account when flushing tlb/caches
Miklos Szeredi (2):
fuse: fix page stealing
fuse: release pipe buf after last use
Mingjie Zhang (1):
USB: serial: option: add Fibocom FM101-GL variants
Miquel Raynal (1):
arm64: dts: marvell: armada-37xx: declare PCIe reset pin
Nadav Amit (1):
hugetlbfs: flush TLBs correctly after huge_pmd_unshare
Pali Rohár (12):
PCI: aardvark: Train link immediately after enabling training
PCI: aardvark: Issue PERST via GPIO
PCI: aardvark: Replace custom macros by standard linux/pci_regs.h macros
PCI: aardvark: Indicate error in 'val' when config read fails
PCI: aardvark: Don't touch PCIe registers if no card connected
PCI: aardvark: Fix compilation on s390
PCI: aardvark: Move PCIe reset card code to advk_pcie_train_link()
PCI: aardvark: Update comment about disabling link training
PCI: aardvark: Configure PCIe resources from 'ranges' DT property
PCI: aardvark: Fix PCIe Max Payload Size setting
PCI: aardvark: Fix link training
PCI: aardvark: Fix checking for link up via LTSSM state
Pierre Gondois (1):
serial: pl011: Add ACPI SBSA UART match id
Randy Dunlap (1):
natsemi: xtensa: fix section mismatch warnings
Remi Pommarel (1):
PCI: aardvark: Wait for endpoint to be ready before training link
Sergei Shtylyov (1):
PCI: aardvark: Fix I/O space page leak
Slark Xiao (1):
platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep
Sreekanth Reddy (1):
scsi: mpt3sas: Fix kernel panic during drive powercycle test
Stefano Garzarella (1):
vhost/vsock: fix incorrect used length reported to the guest
Stefano Stabellini (2):
xen: don't continue xenstore initialization in case of errors
xen: detect uninitialized xenbus in xenbus_init
Stephen Suryaputra (1):
vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit
Steven Rostedt (VMware) (2):
tracing: Fix pid filtering when triggers are attached
tracing: Check pid filtering when creating events
Sven Eckelmann (1):
tty: serial: msm_serial: Deactivate RX DMA for polling support
Sven Schuchmann (1):
net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ is available
Takashi Iwai (3):
ALSA: ctxfi: Fix out-of-range access
ASoC: topology: Add missing rwsem around snd_ctl_remove() calls
ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE
Teng Qi (2):
ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in hns_dsaf_ge_srst_by_port()
net: ethernet: dec: tulip: de4x5: fix possible array overflows in type3_infoblock()
Thomas Petazzoni (1):
PCI: aardvark: Introduce an advk_pcie_valid_device() helper
Thomas Zeitlhofer (1):
PM: hibernate: use correct mode for swsusp_close()
Todd Kjos (1):
binder: fix test regression due to sender_euid change
Tony Lu (3):
net/smc: Ensure the active closing peer first closes clcsock net/smc: Don't call clcsock shutdown twice when smc shutdown net/smc: Keep smc_close_final rc during active close
Trond Myklebust (1):
NFSv42: Don't fail clone() unless the OP_CLONE operation failed
Vasily Gorbik (1):
s390/setup: avoid using memblock_enforce_memory_limit
Wang Yugui (1):
btrfs: check-integrity: fix a warning on write caching disabled disk
Wen Yang (1):
PCI: aardvark: Fix a leaked reference by adding missing of_node_put()
William Kucharski (1):
net/rds: correct socket tunable error in rds_tcp_tune()
Zhou Qingyang (2):
net: qlogic: qlcnic: Fix a NULL pointer dereference in qlcnic_83xx_add_rings() net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources()
liuguoqiang (1):
net: return correct error code
yangxingwu (1):
netfilter: ipvs: Fix reuse connection if RS weight is 0
zhangyue (1):
net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of bound
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/pinctrl/marvell,armada-37xx-pinctrl.txt +17 -9
@@ -43,26 +43,26 @@ group emmc_nb group pwm0 - pin 11 (GPIO1-11) - - functions pwm, gpio + - functions pwm, led, gpio group pwm1 - pin 12 - - functions pwm, gpio + - functions pwm, led, gpio group pwm2 - pin 13 - - functions pwm, gpio + - functions pwm, led, gpio group pwm3 - pin 14 - - functions pwm, gpio + - functions pwm, led, gpio group pmic1 - - pin 17 + - pin 7 - functions pmic, gpio group pmic0 - - pin 16 + - pin 6 - functions pmic, gpio group i2c2
@@ -112,17 +112,25 @@ group usb2_drvvbus1 - functions drvbus, gpio group sdio_sb - - pins 60-64 + - pins 60-65 - functions sdio, gpio group rgmii - - pins 42-55 + - pins 42-53 - functions mii, gpio group pcie1 - - pins 39-40 + - pins 39 + - functions pcie, gpio + +group pcie1_clkreq + - pins 40 - functions pcie, gpio +group smi + - pins 54-55 + - functions smi, gpio + group ptp - pins 56-58 - functions ptp, gpio
Documentation/networking/ipvs-sysctl.txt +1 -2
@@ -30,8 +30,7 @@ conn_reuse_mode - INTEGER 0: disable any special handling on port reuse. The new connection will be delivered to the same real server that was - servicing the previous connection. This will effectively - disable expire_nodest_conn. + servicing the previous connection. bit 1: enable rescheduling of new connections when it is safe. That is, whenever expire_nodest_conn and for TCP sockets, when
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 256 +SUBLEVEL = 257 EXTRAVERSION = NAME = Petit Gorille
arch/arm/boot/dts/bcm5301x.dtsi +3 -1
@@ -246,6 +246,8 @@ gpio-controller; #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; }; pcie0: pcie@12000 {
@@ -365,7 +367,7 @@ i2c0: i2c@18009000 { compatible = "brcm,iproc-i2c"; reg = <0x18009000 0x50>; - interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; clock-frequency = <100000>;
arch/arm/include/asm/tlb.h +8 -0
@@ -280,6 +280,14 @@ tlb_remove_pmd_tlb_entry(struct mmu_gather *tlb, pmd_t *pmdp, unsigned long addrtlb_add_flush (tlb, addr); } +static inline void +tlb_flush_pmd_range (struct mmu_gather *tlb,unsigned long address, +unsigned long size) +{ +tlb_add_flush (tlb, address); +tlb_add_flush (tlb, address + size -PMD_SIZE ); +} +#define pte_free_tlb (tlb, ptep, addr) __pte_free_tlb(tlb, ptep, addr)#define pmd_free_tlb (tlb, pmdp, addr) __pmd_free_tlb(tlb, pmdp, addr)#define pud_free_tlb (tlb, pudp, addr) pud_free((tlb)->mm, pudp)
arch/arm/mach-socfpga/core.h +1 -1
@@ -48,7 +48,7 @@ extern void __iomem *sdr_ctl_base_addr;u32 socfpga_sdram_self_refresh (u32 sdr_base);extern unsigned int socfpga_sdram_self_refresh_sz; -extern char secondary_trampoline, secondary_trampoline_end; +extern char secondary_trampoline[], secondary_trampoline_end[];extern unsigned long socfpga_cpu1start_addr;
arch/arm/mach-socfpga/platsmp.c +4 -4
@@ -31,14 +31,14 @@static int socfpga_boot_secondary (unsigned int cpu,struct task_struct *idle) { -int trampoline_size = &secondary_trampoline_end - &secondary_trampoline; +int trampoline_size = secondary_trampoline_end - secondary_trampoline;if (socfpga_cpu1start_addr) {/* This will put CPU #1 into reset. */ writel (RSTMGR_MPUMODRST_CPU1 , rst_manager_base_addr +SOCFPGA_RSTMGR_MODMPURST ); -memcpy (phys_to_virt (0 ), &secondary_trampoline, trampoline_size); +memcpy (phys_to_virt (0 ), secondary_trampoline, trampoline_size);writel (__pa_symbol (secondary_startup), sys_manager_base_addr + (socfpga_cpu1start_addr &0x000000ff ));
@@ -56,12 +56,12 @@ static int socfpga_boot_secondary(unsigned int cpu, struct task_struct *idle)static int socfpga_a10_boot_secondary (unsigned int cpu,struct task_struct *idle) { -int trampoline_size = &secondary_trampoline_end - &secondary_trampoline; +int trampoline_size = secondary_trampoline_end - secondary_trampoline;if (socfpga_cpu1start_addr) {writel (RSTMGR_MPUMODRST_CPU1 , rst_manager_base_addr +SOCFPGA_A10_RSTMGR_MODMPURST ); -memcpy (phys_to_virt (0 ), &secondary_trampoline, trampoline_size); +memcpy (phys_to_virt (0 ), secondary_trampoline, trampoline_size);writel (__pa_symbol (secondary_startup), sys_manager_base_addr + (socfpga_cpu1start_addr &0x00000fff ));
arch/arm64/boot/dts/marvell/armada-3720-db.dts +3 -0
@@ -155,6 +155,9 @@ /* CON15(V2.0)/CON17(V1.4) : PCIe / CON15(V2.0)/CON12(V1.4) :mini-PCIe */ &pcie0 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>; + reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>; status = "okay"; };
arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts +3 -0
@@ -82,6 +82,9 @@ /* J9 */ &pcie0 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>; + reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>; status = "okay"; };
arch/arm64/boot/dts/marvell/armada-37xx.dtsi +9 -0
@@ -239,6 +239,15 @@ function = "mii"; }; + pcie_reset_pins: pcie-reset-pins { + groups = "pcie1"; + function = "gpio"; + }; + + pcie_clkreq_pins: pcie-clkreq-pins { + groups = "pcie1_clkreq"; + function = "pcie"; + }; }; eth0: ethernet@30000 {
arch/ia64/include/asm/tlb.h +10 -0
@@ -269,6 +269,16 @@ __tlb_remove_tlb_entry (struct mmu_gather *tlb, pte_t *ptep, unsigned long addre tlb->end_addr = address +PAGE_SIZE ; } +static inline void +tlb_flush_pmd_range (struct mmu_gather *tlb,unsigned long address, +unsigned long size) +{ +if (tlb->start_addr > address) + tlb->start_addr = address; +if (tlb->end_addr < address + size) + tlb->end_addr = address + size; +} +#define tlb_migrate_finish (mm) platform_tlb_migrate_finish(mm)#define tlb_start_vma (tlb, vma) do { } while (0)
arch/mips/Kconfig +1 -1
@@ -2990,7 +2990,7 @@ config HAVE_LATENCYTOP_SUPPORT config PGTABLE_LEVELS int default 4 if PAGE_SIZE_4KB && MIPS_VA_BITS_48 - default 3 if 64BIT && !PAGE_SIZE_64KB + default 3 if 64BIT && (!PAGE_SIZE_64KB || MIPS_VA_BITS_48) default 2 source "init/Kconfig"
arch/parisc/Makefile +5 -0
@@ -17,7 +17,12 @@ # Mike Shaver, Helge Deller and Martin K. Petersen # +ifdef CONFIG_PARISC_SELF_EXTRACT +boot := arch/parisc/boot +KBUILD_IMAGE := $(boot)/bzImage +else KBUILD_IMAGE := vmlinuz +endif KBUILD_DEFCONFIG := default_defconfig
arch/parisc/install.sh +1 -0
@@ -39,6 +39,7 @@ verify "$3" if [ -n "${INSTALLKERNEL}" ]; then if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi + if [ -x /usr/sbin/${INSTALLKERNEL} ]; then exec /usr/sbin/${INSTALLKERNEL} "$@"; fi fi # Default install
arch/parisc/kernel/time.c +5 -19
@@ -245,27 +245,13 @@ void __init time_init(void)static int __init init_cr16_clocksource (void ) {/* -* The cr16 interval timers are not syncronized across CPUs on -* different sockets, so mark them unstable and lower rating on -* multi-socket SMP systems. +* The cr16 interval timers are not syncronized across CPUs, even if +* they share the same socket. */ if (num_online_cpus () >1 && !running_on_qemu) { -int cpu; -unsigned long cpu0_loc; - cpu0_loc =per_cpu (cpu_data,0 ).cpu_loc; - -for_each_online_cpu (cpu) { -if (cpu ==0 ) -continue ; -if ((cpu0_loc !=0 ) && - (cpu0_loc ==per_cpu (cpu_data, cpu).cpu_loc)) -continue ; - - clocksource_cr16.name ="cr16_unstable" ; - clocksource_cr16.flags =CLOCK_SOURCE_UNSTABLE ; - clocksource_cr16.rating =0 ; -break ; - } + clocksource_cr16.name ="cr16_unstable" ; + clocksource_cr16.flags =CLOCK_SOURCE_UNSTABLE ; + clocksource_cr16.rating =0 ; }/* XXX: We may want to mark sched_clock stable here if cr16 clocks are
arch/s390/include/asm/tlb.h +14 -0
@@ -116,6 +116,20 @@ static inline void tlb_remove_page_size(struct mmu_gather *tlb,return tlb_remove_page (tlb, page); } +static inline void tlb_flush_pmd_range (struct mmu_gather *tlb, +unsigned long address,unsigned long size) +{ +/* +* the range might exceed the original range that was provided to +* tlb_gather_mmu(), so we need to update it despite the fact it is +* usually not updated. +*/ +if (tlb->start > address) + tlb->start = address; +if (tlb->end < address + size) + tlb->end = address + size; +} +/* * pte_free_tlb frees a pte table and clears the CRSTE for the * page table from the tlb.
arch/s390/kernel/setup.c +0 -3
@@ -706,9 +706,6 @@ static void __init setup_memory(void)storage_key_init_range (reg->base, reg->base + reg->size); }psw_set_key (PAGE_DEFAULT_KEY ); - -/* Only cosmetics */ -memblock_enforce_memory_limit (memblock_end_of_DRAM ()); }/*
arch/s390/mm/pgtable.c +13 -0
@@ -896,6 +896,7 @@ EXPORT_SYMBOL(get_guest_storage_key);int pgste_perform_essa (struct mm_struct *mm,unsigned long hva,int orc,unsigned long *oldpte,unsigned long *oldpgste) { +struct vm_area_struct *vma;unsigned long pgstev;spinlock_t *ptl;pgste_t pgste;
@@ -905,6 +906,10 @@ int pgste_perform_essa(struct mm_struct *mm, unsigned long hva, int orc,WARN_ON_ONCE (orc >ESSA_MAX );if (unlikely (orc >ESSA_MAX ))return -EINVAL ; + + vma =find_vma (mm, hva); +if (!vma || hva < vma->vm_start ||is_vm_hugetlb_page (vma)) +return -EFAULT ; ptep =get_locked_pte (mm, hva, &ptl);if (unlikely (!ptep))return -EFAULT ;
@@ -997,10 +1002,14 @@ EXPORT_SYMBOL(pgste_perform_essa);int set_pgste_bits (struct mm_struct *mm,unsigned long hva,unsigned long bits,unsigned long value) { +struct vm_area_struct *vma;spinlock_t *ptl;pgste_t new;pte_t *ptep; + vma =find_vma (mm, hva); +if (!vma || hva < vma->vm_start ||is_vm_hugetlb_page (vma)) +return -EFAULT ; ptep =get_locked_pte (mm, hva, &ptl);if (unlikely (!ptep))return -EFAULT ;
@@ -1025,9 +1034,13 @@ EXPORT_SYMBOL(set_pgste_bits);*/ int get_pgste (struct mm_struct *mm,unsigned long hva,unsigned long *pgstep) { +struct vm_area_struct *vma;spinlock_t *ptl;pte_t *ptep; + vma =find_vma (mm, hva); +if (!vma || hva < vma->vm_start ||is_vm_hugetlb_page (vma)) +return -EFAULT ; ptep =get_locked_pte (mm, hva, &ptl);if (unlikely (!ptep))return -EFAULT ;
arch/sh/include/asm/tlb.h +10 -0
@@ -127,6 +127,16 @@ static inline void tlb_remove_page_size(struct mmu_gather *tlb,return tlb_remove_page (tlb, page); } +static inline void +tlb_flush_pmd_range (struct mmu_gather *tlb,unsigned long address, +unsigned long size) +{ +if (tlb->start > address) + tlb->start = address; +if (tlb->end < address + size) + tlb->end = address + size; +} +#define tlb_remove_check_page_size_change tlb_remove_check_page_size_changestatic inline void tlb_remove_check_page_size_change (struct mmu_gather *tlb,unsigned int page_size)
arch/um/include/asm/tlb.h +12 -0
@@ -130,6 +130,18 @@ static inline void tlb_remove_page_size(struct mmu_gather *tlb,return tlb_remove_page (tlb, page); } +static inline void +tlb_flush_pmd_range (struct mmu_gather *tlb,unsigned long address, +unsigned long size) +{ + tlb->need_flush =1 ; + +if (tlb->start > address) + tlb->start = address; +if (tlb->end < address + size) + tlb->end = address + size; +} +/** * tlb_remove_tlb_entry - remember a pte unmapping for later tlb invalidation. *
arch/x86/realmode/init.c +11 -1
@@ -57,6 +57,7 @@ static void __init setup_real_mode(void)#ifdef CONFIG_X86_64 u64 *trampoline_pgd;u64 efer; +int i;#endif base = (unsigned char *)real_mode_header;
@@ -114,8 +115,17 @@ static void __init setup_real_mode(void) trampoline_header->flags |=TH_FLAGS_SME_ACTIVE ; trampoline_pgd = (u64 *)__va (real_mode_header->trampoline_pgd); + +/* Map the real mode stub as virtual == physical */ trampoline_pgd[0 ] = trampoline_pgd_entry.pgd; - trampoline_pgd[511 ] = init_top_pgt[511 ].pgd; + +/* +* Include the entirety of the kernel mapping into the trampoline +* PGD. This way, all mappings present in the normal kernel page +* tables are usable while running on trampoline_pgd. +*/ +for (i =pgd_index (__PAGE_OFFSET); i <PTRS_PER_PGD ; i++) + trampoline_pgd[i] = init_top_pgt[i].pgd;#endif }
drivers/android/binder.c +1 -1
@@ -2894,7 +2894,7 @@ static void binder_transaction(struct binder_proc *proc, t->from = thread; else t->from = NULL; - t->sender_euid = proc->cred->euid; + t->sender_euid =task_euid (proc->tsk); t->to_proc = target_proc; t->to_thread = target_thread; t->code = tr->code;
drivers/ata/sata_fsl.c +13 -7
@@ -1406,6 +1406,14 @@ static int sata_fsl_init_controller(struct ata_host *host)return 0 ; } +static void sata_fsl_host_stop (struct ata_host *host) +{ +struct sata_fsl_host_priv *host_priv = host->private_data; + +iounmap (host_priv->hcr_base); +kfree (host_priv); +} +/* * scsi mid-layer and libata interface structures */
@@ -1438,6 +1446,8 @@ static struct ata_port_operations sata_fsl_ops = { .port_start = sata_fsl_port_start, .port_stop = sata_fsl_port_stop, + .host_stop = sata_fsl_host_stop, + .pmp_attach = sata_fsl_pmp_attach, .pmp_detach = sata_fsl_pmp_detach, };
@@ -1492,9 +1502,9 @@ static int sata_fsl_probe(struct platform_device *ofdev) host_priv->ssr_base = ssr_base; host_priv->csr_base = csr_base; - irq =irq_of_parse_and_map (ofdev->dev.of_node,0 ); -if (!irq) { -dev_err (&ofdev->dev,"invalid irq from platform\n" ); + irq =platform_get_irq (ofdev,0 ); +if (irq <0 ) { + retval = irq; goto error_exit_with_cleanup; } host_priv->irq = irq;
@@ -1569,10 +1579,6 @@ static int sata_fsl_remove(struct platform_device *ofdev)ata_host_detach (host); -irq_dispose_mapping (host_priv->irq); -iounmap (host_priv->hcr_base); -kfree (host_priv); -return 0 ; }
drivers/block/xen-blkfront.c +84 -42
261 lines not on this page · raw message
drivers/gpu/drm/vc4/vc4_bo.c +1 -1
@@ -292,7 +292,7 @@ struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size) bo =kzalloc (sizeof (*bo),GFP_KERNEL );if (!bo) -return ERR_PTR (-ENOMEM ); +return NULL ;mutex_lock (&vc4->bo_lock); bo->label =VC4_BO_TYPE_KERNEL ;
drivers/hid/wacom_wac.c +7 -1
@@ -2433,6 +2433,9 @@ static void wacom_wac_finger_event(struct hid_device *hdev,struct wacom_features *features = &wacom->wacom_wac.features;switch (equivalent_usage) { +case HID_DG_CONFIDENCE : + wacom_wac->hid_data.confidence = value; +break ;case HID_GD_X : wacom_wac->hid_data.x = value;break ;
@@ -2463,7 +2466,8 @@ static void wacom_wac_finger_event(struct hid_device *hdev,if (usage->usage_index +1 == field->report_count) { -if (equivalent_usage == wacom_wac->hid_data.last_slot_field) +if (equivalent_usage == wacom_wac->hid_data.last_slot_field && + wacom_wac->hid_data.confidence)wacom_wac_finger_slot (wacom_wac, wacom_wac->touch_input); } }
@@ -2476,6 +2480,8 @@ static void wacom_wac_finger_pre_report(struct hid_device *hdev,struct hid_data * hid_data = &wacom_wac->hid_data;int i; + hid_data->confidence = true; +for (i =0 ; i < report->maxfield; i++) {struct hid_field *field = report->field[i];int j;
drivers/hid/wacom_wac.h +1 -0
@@ -293,6 +293,7 @@ struct hid_data {bool inrange_state;bool invert_state;bool tipswitch; +bool confidence;int x;int y;int pressure;
drivers/media/cec/cec-adap.c +1 -0
@@ -1135,6 +1135,7 @@ void cec_received_msg_ts(struct cec_adapter *adap,if (abort) dst->rx_status |=CEC_RX_STATUS_FEATURE_ABORT ; msg->flags = dst->flags; + msg->sequence = dst->sequence;/* Remove it from the wait_queue */ list_del_init (&data->list);
drivers/net/ethernet/dec/tulip/de4x5.c +21 -13
@@ -4703,6 +4703,10 @@ type3_infoblock(struct net_device *dev, u_char count, u_char *p) lp->ibn =3 ; lp->active = *p++;if (MOTO_SROM_BUG ) lp->active =0 ; +/* if (MOTO_SROM_BUG) statement indicates lp->active could +* be 8 (i.e. the size of array lp->phy) */ +if (WARN_ON (lp->active >=ARRAY_SIZE (lp->phy))) +return -EINVAL ; lp->phy[lp->active].gep = (*p ? p :NULL ); p += (2 * (*p) +1 ); lp->phy[lp->active].rst = (*p ? p :NULL ); p += (2 * (*p) +1 ); lp->phy[lp->active].mc =get_unaligned_le16 (p); p +=2 ;
@@ -4994,19 +4998,23 @@ mii_get_phy(struct net_device *dev) }if ((j == limit) && (i <DE4X5_MAX_MII )) {for (k=0 ; k <DE4X5_MAX_PHY && lp->phy[k].id; k++); - lp->phy[k].addr = i; - lp->phy[k].id = id; - lp->phy[k].spd.reg =GENERIC_REG ;/* ANLPA register */ - lp->phy[k].spd.mask =GENERIC_MASK ;/* 100Mb/s technologies */ - lp->phy[k].spd.value =GENERIC_VALUE ;/* TX & T4, H/F Duplex */ - lp->mii_cnt++; - lp->active++; -printk ("%s: Using generic MII device control. If the board doesn't operate,\nplease mail the following dump to the author:\n" , dev->name); - j = de4x5_debug; - de4x5_debug |=DEBUG_MII ; -de4x5_dbg_mii (dev, k); - de4x5_debug = j; -printk ("\n" ); +if (k <DE4X5_MAX_PHY ) { + lp->phy[k].addr = i; + lp->phy[k].id = id; + lp->phy[k].spd.reg =GENERIC_REG ;/* ANLPA register */ + lp->phy[k].spd.mask =GENERIC_MASK ;/* 100Mb/s technologies */ + lp->phy[k].spd.value =GENERIC_VALUE ;/* TX & T4, H/F Duplex */ + lp->mii_cnt++; + lp->active++; +printk ("%s: Using generic MII device control. If the board doesn't operate,\nplease mail the following dump to the author:\n" , dev->name); + j = de4x5_debug; + de4x5_debug |=DEBUG_MII ; +de4x5_dbg_mii (dev, k); + de4x5_debug = j; +printk ("\n" ); + }else { + goto purgatory; + } } } purgatory:
drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c +4 -0
@@ -336,6 +336,10 @@ static void hns_dsaf_ge_srst_by_port(struct dsaf_device *dsaf_dev, u32 port,return ;if (!HNS_DSAF_IS_DEBUG (dsaf_dev)) { +/* DSAF_MAX_PORT_NUM is 6, but DSAF_GE_NUM is 8. +We need check to prevent array overflow */ +if (port >=DSAF_MAX_PORT_NUM ) +return ; reg_val_1 =0x1 << port; port_rst_off = dsaf_dev->mac_cb[port]->port_rst_off;/* there is difference between V1 and V2 in register.*/
drivers/net/ethernet/mellanox/mlx4/en_netdev.c +7 -2
@@ -2283,9 +2283,14 @@ int mlx4_en_try_alloc_resources(struct mlx4_en_priv *priv, bool carry_xdp_prog) {struct bpf_prog *xdp_prog; -int i, t; +int i, t, ret; -mlx4_en_copy_priv (tmp, priv, prof); + ret =mlx4_en_copy_priv (tmp, priv, prof); +if (ret) { +en_warn (priv,"%s: mlx4_en_copy_priv() failed, return\n" , + __func__); +return ret; + }if (mlx4_en_alloc_resources (tmp)) { en_warn(priv,
drivers/net/ethernet/natsemi/xtsonic.c +1 -1
@@ -128,7 +128,7 @@ static const struct net_device_ops xtsonic_netdev_ops = { .ndo_set_mac_address = eth_mac_addr, }; -static int __init sonic_probe1 (struct net_device *dev) +static int sonic_probe1 (struct net_device *dev) {static unsigned version_printed =0 ;unsigned int silicon_revision;
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +8 -2
@@ -1078,8 +1078,14 @@ static int qlcnic_83xx_add_rings(struct qlcnic_adapter *adapter) sds_mbx_size =sizeof (struct qlcnic_sds_mbx ); context_id = recv_ctx->context_id; num_sds = adapter->drv_sds_rings -QLCNIC_MAX_SDS_RINGS ; - ahw->hw_ops->alloc_mbx_args (&cmd, adapter, -QLCNIC_CMD_ADD_RCV_RINGS ); + err = ahw->hw_ops->alloc_mbx_args (&cmd, adapter, +QLCNIC_CMD_ADD_RCV_RINGS ); +if (err) { +dev_err (&adapter->pdev->dev, +"Failed to alloc mbx args %d\n" , err); +return err; + } + cmd.req.arg[1 ] =0 | (num_sds <<8 ) | (context_id <<16 );/* set up status rings, mbx 2-81 */
drivers/net/usb/lan78xx.c +1 -1
@@ -2052,7 +2052,7 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)if (dev->domain_data.phyirq >0 ) phydev->irq = dev->domain_data.phyirq;else - phydev->irq =0 ; + phydev->irq =PHY_POLL ;netdev_dbg (dev->net,"phydev->irq = %d\n" , phydev->irq);/* set to AUTOMDIX */
drivers/net/vrf.c +2 -0
@@ -208,6 +208,7 @@ static netdev_tx_t vrf_process_v6_outbound(struct sk_buff *skb,/* strip the ethernet header added for pass through VRF device */ __skb_pull (skb,skb_network_offset (skb)); +memset (IP6CB (skb),0 ,sizeof (*IP6CB (skb))); ret =vrf_ip6_local_out (net, skb->sk, skb);if (unlikely (net_xmit_eval (ret))) dev->stats.tx_errors++;
@@ -289,6 +290,7 @@ static netdev_tx_t vrf_process_v4_outbound(struct sk_buff *skb, RT_SCOPE_LINK); } +memset (IPCB (skb),0 ,sizeof (*IPCB (skb))); ret =vrf_ip_local_out (dev_net (skb_dst (skb)->dev), skb->sk, skb);if (unlikely (net_xmit_eval (ret))) vrf_dev->stats.tx_errors++;
drivers/net/xen-netfront.c +155 -102
545 lines not on this page · raw message
drivers/pci/host/pci-aardvark.c +378 -85
656 lines not on this page · raw message
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +15 -13
@@ -153,12 +153,16 @@ static struct armada_37xx_pin_group armada_37xx_nb_groups[] = {PIN_GRP_GPIO ("jtag" ,20 ,5 ,BIT (0 ),"jtag" ),PIN_GRP_GPIO ("sdio0" ,8 ,3 ,BIT (1 ),"sdio" ),PIN_GRP_GPIO ("emmc_nb" ,27 ,9 ,BIT (2 ),"emmc" ), -PIN_GRP_GPIO ("pwm0" ,11 ,1 ,BIT (3 ),"pwm" ), -PIN_GRP_GPIO ("pwm1" ,12 ,1 ,BIT (4 ),"pwm" ), -PIN_GRP_GPIO ("pwm2" ,13 ,1 ,BIT (5 ),"pwm" ), -PIN_GRP_GPIO ("pwm3" ,14 ,1 ,BIT (6 ),"pwm" ), -PIN_GRP_GPIO ("pmic1" ,17 ,1 ,BIT (7 ),"pmic" ), -PIN_GRP_GPIO ("pmic0" ,16 ,1 ,BIT (8 ),"pmic" ), +PIN_GRP_GPIO_3 ("pwm0" ,11 ,1 ,BIT (3 ) |BIT (20 ),0 ,BIT (20 ),BIT (3 ), +"pwm" ,"led" ), +PIN_GRP_GPIO_3 ("pwm1" ,12 ,1 ,BIT (4 ) |BIT (21 ),0 ,BIT (21 ),BIT (4 ), +"pwm" ,"led" ), +PIN_GRP_GPIO_3 ("pwm2" ,13 ,1 ,BIT (5 ) |BIT (22 ),0 ,BIT (22 ),BIT (5 ), +"pwm" ,"led" ), +PIN_GRP_GPIO_3 ("pwm3" ,14 ,1 ,BIT (6 ) |BIT (23 ),0 ,BIT (23 ),BIT (6 ), +"pwm" ,"led" ), +PIN_GRP_GPIO ("pmic1" ,7 ,1 ,BIT (7 ),"pmic" ), +PIN_GRP_GPIO ("pmic0" ,6 ,1 ,BIT (8 ),"pmic" ),PIN_GRP_GPIO ("i2c2" ,2 ,2 ,BIT (9 ),"i2c" ),PIN_GRP_GPIO ("i2c1" ,0 ,2 ,BIT (10 ),"i2c" ), PIN_GRP_GPIO("spi_cs1", 17, 1, BIT(12), "spi"),
@@ -170,11 +174,6 @@ static struct armada_37xx_pin_group armada_37xx_nb_groups[] = {PIN_GRP_EXTRA ("uart2" ,9 ,2 ,BIT (1 ) |BIT (13 ) |BIT (14 ) |BIT (19 ),BIT (1 ) |BIT (13 ) |BIT (14 ),BIT (1 ) |BIT (19 ), 18, 2, "gpio", "uart"), -PIN_GRP_GPIO_2 ("led0_od" ,11 ,1 ,BIT (20 ),BIT (20 ),0 ,"led" ), -PIN_GRP_GPIO_2 ("led1_od" ,12 ,1 ,BIT (21 ),BIT (21 ),0 ,"led" ), -PIN_GRP_GPIO_2 ("led2_od" ,13 ,1 ,BIT (22 ),BIT (22 ),0 ,"led" ), - PIN_GRP_GPIO_2("led3_od", 14, 1, BIT(23), BIT(23), 0, "led"), - };static struct armada_37xx_pin_group armada_37xx_sb_groups[] = {
@@ -182,8 +181,11 @@ static struct armada_37xx_pin_group armada_37xx_sb_groups[] = {PIN_GRP_GPIO ("usb2_drvvbus1" ,1 ,1 ,BIT (1 ),"drvbus" ),PIN_GRP_GPIO ("sdio_sb" ,24 ,6 ,BIT (2 ),"sdio" ),PIN_GRP_GPIO ("rgmii" ,6 ,12 ,BIT (3 ),"mii" ), -PIN_GRP_GPIO ("pcie1" ,3 ,2 ,BIT (4 ),"pcie" ), -PIN_GRP_GPIO ("ptp" ,20 ,3 ,BIT (5 ),"ptp" ), +PIN_GRP_GPIO ("smi" ,18 ,2 ,BIT (4 ),"smi" ), +PIN_GRP_GPIO ("pcie1" ,3 ,1 ,BIT (5 ),"pcie" ), +PIN_GRP_GPIO ("pcie1_clkreq" ,4 ,1 ,BIT (9 ),"pcie" ), +PIN_GRP_GPIO ("pcie1_wakeup" ,5 ,1 ,BIT (10 ),"pcie" ), +PIN_GRP_GPIO ("ptp" ,20 ,3 ,BIT (11 ) |BIT (12 ) |BIT (13 ),"ptp" ),PIN_GRP ("ptp_clk" ,21 ,1 ,BIT (6 ),"ptp" ,"mii" ),PIN_GRP ("ptp_trig" ,22 ,1 ,BIT (7 ),"ptp" ,"mii" ), PIN_GRP_GPIO_3("mii_col", 23, 1, BIT(8) | BIT(14), 0, BIT(8), BIT(14),
drivers/platform/x86/thinkpad_acpi.c +0 -12
@@ -1180,15 +1180,6 @@ static int tpacpi_rfk_update_swstate(const struct tpacpi_rfk *tp_rfk)return status; } -/* Query FW and update rfkill sw state for all rfkill switches */ -static void tpacpi_rfk_update_swstate_all (void ) -{ -unsigned int i; - -for (i =0 ; i <TPACPI_RFK_SW_MAX ; i++) -tpacpi_rfk_update_swstate (tpacpi_rfkill_switches[i]); -} -/* * Sync the HW-blocking state of all rfkill switches, * do notice it causes the rfkill core to schedule uevents
@@ -3025,9 +3016,6 @@ static void tpacpi_send_radiosw_update(void)if (wlsw ==TPACPI_RFK_RADIO_OFF )tpacpi_rfk_update_hwblock_state (true); -/* Sync sw blocking state */ -tpacpi_rfk_update_swstate_all (); -/* Sync hw blocking state last if it is hw-unblocked */ if (wlsw ==TPACPI_RFK_RADIO_ON )tpacpi_rfk_update_hwblock_state (false);
drivers/scsi/mpt3sas/mpt3sas_scsih.c +1 -1
@@ -2955,7 +2955,7 @@ _scsih_ublock_io_device(struct MPT3SAS_ADAPTER *ioc, u64 sas_address)shost_for_each_device (sdev, ioc->shost) { sas_device_priv_data = sdev->hostdata; -if (!sas_device_priv_data) +if (!sas_device_priv_data || !sas_device_priv_data->sas_target)continue ;if (sas_device_priv_data->sas_target->sas_address != sas_address)
drivers/scsi/scsi_transport_iscsi.c +3 -3
@@ -1892,12 +1892,12 @@ static void session_recovery_timedout(struct work_struct *work) }spin_unlock_irqrestore (&session->lock, flags); -if (session->transport->session_recovery_timedout) - session->transport->session_recovery_timedout (session); -ISCSI_DBG_TRANS_SESSION (session,"Unblocking SCSI target\n" );scsi_target_unblock (&session->dev,SDEV_TRANSPORT_OFFLINE );ISCSI_DBG_TRANS_SESSION (session,"Completed unblocking SCSI target\n" ); + +if (session->transport->session_recovery_timedout) + session->transport->session_recovery_timedout (session); }static void __iscsi_unblock_session (struct work_struct *work)
drivers/staging/rtl8192e/rtl8192e/rtl_core.c +2 -1
@@ -2582,13 +2582,14 @@ static void _rtl92e_pci_disconnect(struct pci_dev *pdev)free_irq (dev->irq, dev); priv->irq =0 ; } -free_rtllib (dev);if (dev->mem_start !=0 ) {iounmap ((void __iomem *)dev->mem_start);release_mem_region (pci_resource_start (pdev,1 ),pci_resource_len (pdev,1 )); } + +free_rtllib (dev); }else { priv =rtllib_priv (dev); }
drivers/staging/typec/tcpm.c +0 -4
@@ -2386,11 +2386,7 @@ static void run_state_machine(struct tcpm_port *port)tcpm_try_src (port) ?SRC_TRY :SNK_ATTACHED , 0); - else -/* Wait for VBUS, but not forever */ -tcpm_set_state (port ,PORT_RESET ,PD_T_PS_SOURCE_ON );break ; -case SRC_TRY : port->try_src_count++;tcpm_set_cc (port,tcpm_rp_cc (port));
drivers/thermal/thermal_core.c +2 -0
@@ -457,6 +457,8 @@ static void thermal_zone_device_init(struct thermal_zone_device *tz) {struct thermal_instance *pos; tz->temperature =THERMAL_TEMP_INVALID ; + tz->prev_low_trip = -INT_MAX ; + tz->prev_high_trip =INT_MAX ;list_for_each_entry (pos, &tz->thermal_instances, tz_node) pos->initialized = false; }
drivers/tty/hvc/hvc_xen.c +14 -3
@@ -99,7 +99,11 @@ static int __write_console(struct xencons_info *xencons, cons = intf->out_cons; prod = intf->out_prod;mb ();/* update queue values before going on */ -BUG_ON ((prod - cons) >sizeof (intf->out)); + +if ((prod - cons) >sizeof (intf->out)) { +pr_err_once ("xencons: Illegal ring page indices" ); +return -EINVAL ; + }while ((sent < len) && ((prod - cons) <sizeof (intf->out))) intf->out[MASK_XENCONS_IDX (prod++, intf->out)] = data[sent++];
@@ -127,7 +131,10 @@ static int domU_write_console(uint32_t vtermno, const char *data, int len)*/ while (len) {int sent =__write_console (cons, data, len); - + +if (sent <0 ) +return sent; + data += sent; len -= sent;
@@ -151,7 +158,11 @@ static int domU_read_console(uint32_t vtermno, char *buf, int len) cons = intf->in_cons; prod = intf->in_prod;mb ();/* get pointers before reading ring */ -BUG_ON ((prod - cons) >sizeof (intf->in)); + +if ((prod - cons) >sizeof (intf->in)) { +pr_err_once ("xencons: Illegal ring page indices" ); +return -EINVAL ; + }while (cons != prod && recv < len) buf[recv++] = intf->in[MASK_XENCONS_IDX (cons++, intf->in)];
drivers/tty/serial/amba-pl011.c +1 -0
@@ -2790,6 +2790,7 @@ MODULE_DEVICE_TABLE(of, sbsa_uart_of_match);static const struct acpi_device_id sbsa_uart_acpi_match[] = { {"ARMH0011" ,0 }, + {"ARMHB000" ,0 }, {}, };MODULE_DEVICE_TABLE (acpi, sbsa_uart_acpi_match);
drivers/tty/serial/msm_serial.c +3 -0
@@ -611,6 +611,9 @@ static void msm_start_rx_dma(struct msm_port *msm_port)u32 val;int ret; +if (IS_ENABLED (CONFIG_CONSOLE_POLL )) +return ; +if (!dma->chan)return ;
drivers/tty/serial/serial_core.c +12 -1
@@ -1541,6 +1541,7 @@ static void uart_tty_port_shutdown(struct tty_port *port) { struct uart_state *state = container_of(port, struct uart_state, port);struct uart_port *uport =uart_port_check (state); +char *buf;/* * At this point, we stop accepting input. To do this, we
@@ -1562,8 +1563,18 @@ static void uart_tty_port_shutdown(struct tty_port *port)*/ tty_port_set_suspended (port,0 ); -uart_change_pm (state,UART_PM_STATE_OFF ); +/* +* Free the transmit buffer. +*/ +spin_lock_irq (&uport->lock); + buf = state->xmit.buf; + state->xmit.buf =NULL ; +spin_unlock_irq (&uport->lock); +if (buf) +free_page ((unsigned long )buf); + +uart_change_pm (state,UART_PM_STATE_OFF ); }static void uart_wait_until_sent (struct tty_struct *tty,int timeout)
drivers/usb/core/hub.c +18 -5
@@ -4472,8 +4472,6 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,if (oldspeed ==USB_SPEED_LOW ) delay =HUB_LONG_RESET_TIME ; -mutex_lock (hcd->address0_mutex); -/* Reset the device; full speed may morph to high speed */ /* FIXME a USB 2.0 device may morph into SuperSpeed on reset. */ retval =hub_port_reset (hub, port1, udev, delay, false);
@@ -4772,7 +4770,6 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,hub_port_disable (hub, port1,0 );update_devnum (udev, devnum);/* for disconnect processing */ } -mutex_unlock (hcd->address0_mutex);return retval; }
@@ -4862,6 +4859,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,struct usb_port *port_dev = hub->ports[port1 -1 ];struct usb_device *udev = port_dev->child;static int unreliable_port =-1 ; +bool retry_locked;/* Disconnect any existing devices under this port */ if (udev) {
@@ -4917,7 +4915,11 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, unit_load =100 ; status =0 ; +for (i =0 ; i <SET_CONFIG_TRIES ; i++) { +usb_lock_port (port_dev); +mutex_lock (hcd->address0_mutex); + retry_locked = true;/* reallocate for each attempt, since references * to the previous one can escape in various ways
@@ -4926,6 +4928,8 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,if (!udev) {dev_err (&port_dev->dev,"couldn't allocate usb_device\n" ); +mutex_unlock (hcd->address0_mutex); +usb_unlock_port (port_dev); goto done; }
@@ -4947,12 +4951,14 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, }/* reset (non-USB 3.0 devices) and get descriptor */ -usb_lock_port (port_dev); status =hub_port_init (hub, udev, port1, i); -usb_unlock_port (port_dev);if (status <0 ) goto loop; +mutex_unlock (hcd->address0_mutex); +usb_unlock_port (port_dev); + retry_locked = false; +if (udev->quirks &USB_QUIRK_DELAY_INIT )msleep (2000 );
@@ -5045,6 +5051,10 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,usb_ep0_reinit (udev);release_devnum (udev);hub_free_dev (udev); +if (retry_locked) { +mutex_unlock (hcd->address0_mutex); +usb_unlock_port (port_dev); + }usb_put_dev (udev);if ((status == -ENOTCONN ) || (status == -ENOTSUPP ))break ;
@@ -5608,6 +5618,8 @@ static int usb_reset_and_verify_device(struct usb_device *udev) bos = udev->bos; udev->bos =NULL ; +mutex_lock (hcd->address0_mutex); +for (i =0 ; i <SET_CONFIG_TRIES ; ++i) {/* ep0 maxpacket size may change; let the HCD know about it.
@@ -5617,6 +5629,7 @@ static int usb_reset_and_verify_device(struct usb_device *udev)if (ret >=0 || ret == -ENOTCONN || ret == -ENODEV )break ; } +mutex_unlock (hcd->address0_mutex);if (ret <0 ) goto re_enumerate;
drivers/usb/host/xhci-ring.c +14 -7
@@ -350,7 +350,9 @@ static void xhci_handle_stopped_cmd_ring(struct xhci_hcd *xhci,/* Must be called with xhci->lock held, releases and aquires lock back */ static int xhci_abort_cmd_ring (struct xhci_hcd *xhci,unsigned long flags) { -u32 temp_32; +struct xhci_segment *new_seg = xhci->cmd_ring->deq_seg; +union xhci_trb *new_deq = xhci->cmd_ring->dequeue; +u64 crcr;int ret;xhci_dbg (xhci,"Abort command ring\n" );
@@ -359,13 +361,18 @@ static int xhci_abort_cmd_ring(struct xhci_hcd *xhci, unsigned long flags)/* * The control bits like command stop, abort are located in lower -* dword of the command ring control register. Limit the write -* to the lower dword to avoid corrupting the command ring pointer -* in case if the command ring is stopped by the time upper dword -* is written. +* dword of the command ring control register. +* Some controllers require all 64 bits to be written to abort the ring. +* Make sure the upper dword is valid, pointing to the next command, +* avoiding corrupting the command ring pointer in case the command ring +* is stopped by the time the upper dword is written. */ - temp_32 =readl (&xhci->op_regs->cmd_ring); -writel (temp_32 |CMD_RING_ABORT , &xhci->op_regs->cmd_ring); +next_trb (xhci,NULL , &new_seg, &new_deq); +if (trb_is_link (new_deq)) +next_trb (xhci,NULL , &new_seg, &new_deq); + + crcr =xhci_trb_virt_to_dma (new_seg, new_deq); +xhci_write_64 (xhci, crcr |CMD_RING_ABORT , &xhci->op_regs->cmd_ring);/* Section 4.6.1.2 of xHCI 1.0 spec says software should also time the * completion of the Command Abort operation. If CRR is not negated in 5
drivers/usb/serial/option.c +5 -0
@@ -1270,6 +1270,8 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(2) }, { USB_DEVICE(TELIT_VENDOR_ID, 0x9010), /* Telit SBL FN980 flashing device */ .driver_info = NCTRL(0) | ZLP }, + { USB_DEVICE(TELIT_VENDOR_ID, 0x9200), /* Telit LE910S1 flashing device */ + .driver_info = NCTRL(0) | ZLP }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff), .driver_info = RSVD(1) },
@@ -2096,6 +2098,9 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */ + .driver_info = RSVD(4) }, { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */
drivers/vhost/vsock.c +1 -1
@@ -490,7 +490,7 @@ static void vhost_vsock_handle_tx_kick(struct vhost_work *work)virtio_transport_free_pkt (pkt); len +=sizeof (pkt->hdr); -vhost_add_used (vq, head, len); +vhost_add_used (vq, head,0 ); total_len += len; added = true; }while (likely (!vhost_exceeds_weight (vq, ++pkts, total_len)));
drivers/video/console/vgacon.c +9 -5
@@ -365,11 +365,17 @@ static void vgacon_init(struct vc_data *c, int init)struct uni_pagedir *p;/* -* We cannot be loaded as a module, therefore init is always 1, -* but vgacon_init can be called more than once, and init will -* not be 1. +* We cannot be loaded as a module, therefore init will be 1 +* if we are the default console, however if we are a fallback +* console, for example if fbcon has failed registration, then +* init will be 0, so we need to make sure our boot parameters +* have been copied to the console structure for vgacon_resize +* ultimately called by vc_resize. Any subsequent calls to +* vgacon_init init will have init set to 0 too. */ c->vc_can_do_color = vga_can_do_color; + c->vc_scan_lines = vga_scan_lines; + c->vc_font.height = c->vc_cell_height = vga_video_font_height;/* set dimensions manually if init != 0 since vc_resize() will fail */ if (init) {
@@ -378,8 +384,6 @@ static void vgacon_init(struct vc_data *c, int init) }else vc_resize (c, vga_video_num_columns, vga_video_num_lines); - c->vc_scan_lines = vga_scan_lines; - c->vc_font.height = c->vc_cell_height = vga_video_font_height; c->vc_complement_mask =0x7700 ;if (vga_512_chars) c->vc_hi_font_mask =0x0800 ;
drivers/xen/xenbus/xenbus_probe.c +26 -1
@@ -838,7 +838,7 @@ static struct notifier_block xenbus_resume_nb = {static int __init xenbus_init (void ) { -int err =0 ; +int err;uint64_t v =0 ; xen_store_domain_type =XS_UNKNOWN ;
@@ -878,6 +878,29 @@ static int __init xenbus_init(void) err =hvm_get_parameter (HVM_PARAM_STORE_PFN , &v);if (err) goto out_error; +/* +* Uninitialized hvm_params are zero and return no error. +* Although it is theoretically possible to have +* HVM_PARAM_STORE_PFN set to zero on purpose, in reality it is +* not zero when valid. If zero, it means that Xenstore hasn't +* been properly initialized. Instead of attempting to map a +* wrong guest physical address return error. +* +* Also recognize all bits set as an invalid value. +*/ +if (!v || !~v) { + err = -ENOENT ; + goto out_error; + } +/* Avoid truncation on 32-bit. */ +#if BITS_PER_LONG ==32 +if (v >ULONG_MAX ) { +pr_err ("%s: cannot handle HVM_PARAM_STORE_PFN=%llx > ULONG_MAX\n" , + __func__, v); + err = -EINVAL ; + goto out_error; + } +#endif xen_store_gfn = (unsigned long )v; xen_store_interface = xen_remap(xen_store_gfn << XEN_PAGE_SHIFT,
@@ -912,8 +935,10 @@ static int __init xenbus_init(void)*/ proc_create_mount_point ("xen" );#endif +return 0 ; out_error: + xen_store_domain_type =XS_UNKNOWN ;return err; }
fs/btrfs/disk-io.c +13 -1
@@ -3339,11 +3339,23 @@ static void btrfs_end_empty_barrier(struct bio *bio)*/ static void write_dev_flush (struct btrfs_device *device) { -struct request_queue *q =bdev_get_queue (device->bdev);struct bio *bio = device->flush_bio; +#ifndef CONFIG_BTRFS_FS_CHECK_INTEGRITY +/* +* When a disk has write caching disabled, we skip submission of a bio +* with flush and sync requests before writing the superblock, since +* it's not needed. However when the integrity checker is enabled, this +* results in reports that there are metadata blocks referred by a +* superblock that were not properly flushed. So don't skip the bio +* submission only when the integrity checker is enabled for the sake +* of simplicity, since this is a debug tool and not meant for use in +* non-debug builds. +*/ +struct request_queue *q =bdev_get_queue (device->bdev);if (!test_bit (QUEUE_FLAG_WC , &q->queue_flags))return ; +#endif bio_reset (bio); bio->bi_end_io = btrfs_end_empty_barrier;
fs/file.c +14 -5
@@ -679,7 +679,7 @@ void do_close_on_exec(struct files_struct *files)spin_unlock (&files->file_lock); } -static struct file *__fget (unsigned int fd,fmode_t mask) +static struct file *__fget (unsigned int fd,fmode_t mask,unsigned int refs) {struct files_struct *files = current->files;struct file *file;
@@ -694,23 +694,32 @@ static struct file *__fget(unsigned int fd, fmode_t mask)*/ if (file->f_mode & mask) file =NULL ; -else if (!get_file_rcu (file)) +else if (!get_file_rcu_many (file, refs)) goto loop; +else if (__fcheck_files (files, fd) != file) { +fput_many (file, refs); + goto loop; + } }rcu_read_unlock ();return file; } +struct file *fget_many (unsigned int fd,unsigned int refs) +{ +return __fget (fd,FMODE_PATH , refs); +} +struct file *fget (unsigned int fd) { -return __fget (fd,FMODE_PATH ); +return __fget (fd,FMODE_PATH ,1 ); }EXPORT_SYMBOL (fget);struct file *fget_raw (unsigned int fd) { -return __fget (fd,0 ); +return __fget (fd,0 ,1 ); }EXPORT_SYMBOL (fget_raw);
@@ -741,7 +750,7 @@ static unsigned long __fget_light(unsigned int fd, fmode_t mask)return 0 ;return (unsigned long )file; }else { - file =__fget (fd, mask); + file =__fget (fd, mask,1 );if (!file)return 0 ;return FDPUT_FPUT | (unsigned long )file;
fs/file_table.c +7 -2
@@ -261,9 +261,9 @@ void flush_delayed_fput(void) static DECLARE_DELAYED_WORK(delayed_fput_work, delayed_fput); -void fput (struct file *file) +void fput_many (struct file *file,unsigned int refs) { -if (atomic_long_dec_and_test (&file->f_count)) { +if (atomic_long_sub_and_test (refs, &file->f_count)) {struct task_struct *task = current;if (likely (!in_interrupt () && !(task->flags &PF_KTHREAD ))) {
@@ -282,6 +282,11 @@ void fput(struct file *file) } } +void fput (struct file *file) +{ +fput_many (file,1 ); +} +/* * synchronous analog of fput(); for kernel threads that might be needed * in some umount() (and thus can't use flush_delayed_fput() without
fs/fuse/dev.c +12 -2
@@ -902,6 +902,12 @@ static int fuse_try_move_page(struct fuse_copy_state *cs, struct page **pagep)if (!(buf->flags &PIPE_BUF_FLAG_LRU ))lru_cache_add_file (newpage); +/* +* Release while we have extra ref on stolen page. Otherwise +* anon_pipe_buf_release() might think the page can be reused. +*/ +pipe_buf_release (cs->pipe, buf); + err =0 ;spin_lock (&cs->req->waitq.lock);if (test_bit (FR_ABORTED , &cs->req->flags))
@@ -2046,8 +2052,12 @@ static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe,pipe_lock (pipe); out_free: -for (idx =0 ; idx < nbuf; idx++) -pipe_buf_release (pipe, &bufs[idx]); +for (idx =0 ; idx < nbuf; idx++) { +struct pipe_buffer *buf = &bufs[idx]; + +if (buf->ops) +pipe_buf_release (pipe, buf); + }pipe_unlock (pipe);kfree (bufs);
fs/nfs/nfs42proc.c +3 -2
@@ -186,8 +186,9 @@ static ssize_t _nfs42_proc_copy(struct file *src, goto out; } -truncate_pagecache_range (dst_inode, pos_dst, - pos_dst + res->write_res.count); +WARN_ON_ONCE (invalidate_inode_pages2_range (dst_inode->i_mapping, + pos_dst >>PAGE_SHIFT , + (pos_dst + res->write_res.count -1 ) >>PAGE_SHIFT )); status = res->write_res.count; out:
fs/nfs/nfs42xdr.c +1 -2
@@ -625,8 +625,7 @@ static int nfs4_xdr_dec_clone(struct rpc_rqst *rqstp, status =decode_clone (xdr);if (status) goto out; - status =decode_getfattr (xdr, res->dst_fattr, res->server); - +decode_getfattr (xdr, res->dst_fattr, res->server); out: res->rpc_status = status;return status;
fs/proc/vmcore.c +10 -5
@@ -105,14 +105,19 @@ static ssize_t read_from_oldmem(char *buf, size_t count, nr_bytes = count;/* If pfn is not ram, return zeros for sparse dump files */ -if (pfn_is_ram (pfn) ==0 ) -memset (buf,0 , nr_bytes); -else { +if (pfn_is_ram (pfn) ==0 ) { + tmp =0 ; +if (!userbuf) +memset (buf,0 , nr_bytes); +else if (clear_user (buf, nr_bytes)) + tmp = -EFAULT ; + }else { tmp =copy_oldmem_page (pfn, buf, nr_bytes, offset, userbuf); -if (tmp <0 ) -return tmp; } +if (tmp <0 ) +return tmp; + *ppos += nr_bytes; count -= nr_bytes; buf += nr_bytes;
include/asm-generic/tlb.h +2 -0
@@ -117,6 +117,8 @@ void arch_tlb_gather_mmu(struct mmu_gather *tlb,void tlb_flush_mmu (struct mmu_gather *tlb);void arch_tlb_finish_mmu (struct mmu_gather *tlb,unsigned long start,unsigned long end,bool force); +void tlb_flush_pmd_range (struct mmu_gather *tlb,unsigned long address, +unsigned long size);extern bool __tlb_remove_page_size (struct mmu_gather *tlb,struct page *page,int page_size);
include/linux/file.h +2 -0
@@ -13,6 +13,7 @@struct file ;extern void fput (struct file *); +extern void fput_many (struct file *,unsigned int );struct file_operations ;struct vfsmount ;
@@ -41,6 +42,7 @@ static inline void fdput(struct fd fd) }extern struct file *fget (unsigned int fd); +extern struct file *fget_many (unsigned int fd,unsigned int refs);extern struct file *fget_raw (unsigned int fd);extern unsigned long __fdget (unsigned int fd);extern unsigned long __fdget_raw (unsigned int fd);
include/linux/fs.h +3 -1
@@ -908,7 +908,9 @@ static inline struct file *get_file(struct file *f)atomic_long_inc (&f->f_count);return f; } -#define get_file_rcu (x) atomic_long_inc_not_zero(&(x)->f_count) +#define get_file_rcu_many (x, cnt) \ + atomic_long_add_unless(&(x)->f_count, (cnt), 0) +#define get_file_rcu (x) get_file_rcu_many((x), 1)#define fput_atomic (x) atomic_long_add_unless(&(x)->f_count, -1, 1)#define file_count (x) atomic_long_read(&(x)->f_count)
include/linux/ipc_namespace.h +15 -0
@@ -127,6 +127,16 @@ static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns)return ns; } +static inline struct ipc_namespace *get_ipc_ns_not_zero (struct ipc_namespace *ns) +{ +if (ns) { +if (refcount_inc_not_zero (&ns->count)) +return ns; + } + +return NULL ; +} +extern void put_ipc_ns (struct ipc_namespace *ns);#else static inline struct ipc_namespace *copy_ipcs(unsigned long flags,
@@ -143,6 +153,11 @@ static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns)return ns; } +static inline struct ipc_namespace *get_ipc_ns_not_zero (struct ipc_namespace *ns) +{ +return ns; +} +static inline void put_ipc_ns (struct ipc_namespace *ns) { }
include/linux/kprobes.h +2 -0
@@ -193,6 +193,8 @@ struct kretprobe {raw_spinlock_t lock; }; +#define KRETPROBE_MAX_DATA_SIZE 4096 +struct kretprobe_instance {struct hlist_node hlist;struct kretprobe *rp;
include/linux/sched/task.h +1 -1
@@ -122,7 +122,7 @@ static inline struct vm_struct *task_stack_vm_area(const struct task_struct *t)* Protects ->fs, ->files, ->mm, ->group_info, ->comm, keyring * subscriptions and synchronises with wait4(). Also used in procfs. Also * pins the final release of task.io_context. Also protects ->cpuset and -* ->cgroup.subsys[]. And ->vfork_done. +* ->cgroup.subsys[]. And ->vfork_done. And ->sysvshm.shm_clist. * * Nests both inside and outside of read_lock(&tasklist_lock). * It must not be nested with write_lock_irq(&tasklist_lock),
include/linux/shm.h +11 -2
@@ -20,9 +20,18 @@ struct shmid_kernel /* private to the kernel */pid_t shm_lprid;struct user_struct *mlock_user; -/* The task created the shm object. NULL if the task is dead. */ +/* +* The task created the shm object, for +* task_lock(shp->shm_creator) +*/ struct task_struct *shm_creator; -struct list_head shm_clist;/* list by creator */ + +/* +* List by creator. task_lock(->shm_creator) required for read/write. +* If list_empty(), then the creator is dead already. +*/ +struct list_head shm_clist; +struct ipc_namespace *ns; } __randomize_layout;/* shm_mode upper byte flags */
include/linux/siphash.h +4 -10
@@ -27,9 +27,7 @@ static inline bool siphash_key_is_zero(const siphash_key_t *key) }u64 __siphash_aligned (const void *data,size_t len,const siphash_key_t *key); -#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS u64 __siphash_unaligned (const void *data,size_t len,const siphash_key_t *key); -#endif u64 siphash_1u64 (const u64 a,const siphash_key_t *key);u64 siphash_2u64 (const u64 a,const u64 b,const siphash_key_t *key);
@@ -82,10 +80,9 @@ static inline u64 ___siphash_aligned(const __le64 *data, size_t len,static inline u64 siphash (const void *data,size_t len,const siphash_key_t *key) { -#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS -if (!IS_ALIGNED ((unsigned long )data,SIPHASH_ALIGNMENT )) +if (IS_ENABLED (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ) || + !IS_ALIGNED ((unsigned long )data,SIPHASH_ALIGNMENT ))return __siphash_unaligned (data, len, key); -#endif return ___siphash_aligned (data, len, key); }
@@ -96,10 +93,8 @@ typedef struct {u32 __hsiphash_aligned (const void *data,size_t len,const hsiphash_key_t *key); -#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS u32 __hsiphash_unaligned (const void *data,size_t len,const hsiphash_key_t *key); -#endif u32 hsiphash_1u32 (const u32 a,const hsiphash_key_t *key);u32 hsiphash_2u32 (const u32 a,const u32 b,const hsiphash_key_t *key);
@@ -135,10 +130,9 @@ static inline u32 ___hsiphash_aligned(const __le32 *data, size_t len,static inline u32 hsiphash (const void *data,size_t len,const hsiphash_key_t *key) { -#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS -if (!IS_ALIGNED ((unsigned long )data,HSIPHASH_ALIGNMENT )) +if (IS_ENABLED (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ) || + !IS_ALIGNED ((unsigned long )data,HSIPHASH_ALIGNMENT ))return __hsiphash_unaligned (data, len, key); -#endif return ___hsiphash_aligned (data, len, key); }
include/net/nfc/nci_core.h +1 -0
@@ -42,6 +42,7 @@ enum nci_flag {NCI_UP ,NCI_DATA_EXCHANGE ,NCI_DATA_EXCHANGE_TO , + NCI_UNREG, };/* NCI device states */
include/net/nl802154.h +4 -3
@@ -19,6 +19,8 @@* */ +#include <linux/types.h> +#define NL802154_GENL_NAME "nl802154"enum nl802154_commands {
@@ -150,10 +152,9 @@ enum nl802154_attrs { };enum nl802154_iftype { -/* for backwards compatibility TODO */ -NL802154_IFTYPE_UNSPEC =-1 , +NL802154_IFTYPE_UNSPEC = (~(__u32 )0 ), -NL802154_IFTYPE_NODE , +NL802154_IFTYPE_NODE =0 ,NL802154_IFTYPE_MONITOR ,NL802154_IFTYPE_COORD ,
include/uapi/linux/pci_regs.h +5 -0
@@ -654,6 +654,11 @@#define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008/* Supported Speed 8.0GT/s */ #define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100/* Crosslink supported */ #define PCI_EXP_LNKCTL2 48/* Link Control 2 */ +#define PCI_EXP_LNKCTL2_TLS 0x000f +#define PCI_EXP_LNKCTL2_TLS_2_5GT 0x0001/* Supported Speed 2.5GT/s */ +#define PCI_EXP_LNKCTL2_TLS_5_0GT 0x0002/* Supported Speed 5GT/s */ +#define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003/* Supported Speed 8GT/s */ +#define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004/* Supported Speed 16GT/s */ #define PCI_EXP_LNKSTA2 50/* Link Status 2 */ #define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52/* v2 endpoints with link end here */ #define PCI_EXP_SLTCAP2 52/* Slot Capabilities 2 */
include/xen/interface/io/ring.h +158 -135
172 lines not on this page · raw message
ipc/shm.c +132 -44
176 lines not on this page · raw message
mm/hugetlb.c +62 -10
72 lines not on this page · raw message
net/mpls/af_mpls.c +52 -16
68 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.