Linux 4.14.329
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.329 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
------------
Makefile | 2 arch/arm/boot/bootp/init.S | 2 arch/arm/boot/compressed/big-endian.S | 2 arch/arm/boot/compressed/head.S | 2 arch/arm/boot/compressed/piggy.S | 2 arch/arm/mm/proc-arm1020.S | 2 arch/arm/mm/proc-arm1020e.S | 2 arch/arm/mm/proc-arm1022.S | 2 arch/arm/mm/proc-arm1026.S | 2 arch/arm/mm/proc-arm720.S | 2 arch/arm/mm/proc-arm740.S | 2 arch/arm/mm/proc-arm7tdmi.S | 2 arch/arm/mm/proc-arm920.S | 2 arch/arm/mm/proc-arm922.S | 2 arch/arm/mm/proc-arm925.S | 2 arch/arm/mm/proc-arm926.S | 2 arch/arm/mm/proc-arm940.S | 2 arch/arm/mm/proc-arm946.S | 2 arch/arm/mm/proc-arm9tdmi.S | 2 arch/arm/mm/proc-fa526.S | 2 arch/arm/mm/proc-feroceon.S | 2 arch/arm/mm/proc-mohawk.S | 2 arch/arm/mm/proc-sa110.S | 2 arch/arm/mm/proc-sa1100.S | 2 arch/arm/mm/proc-v6.S | 2 arch/arm/mm/proc-v7.S | 2 arch/arm/mm/proc-v7m.S | 4 arch/arm/mm/proc-xsc3.S | 2 arch/arm/mm/proc-xscale.S | 2 arch/x86/include/asm/i8259.h | 2 arch/x86/include/asm/setup.h | 46 arch/x86/kernel/acpi/boot.c | 3 arch/x86/kernel/i8259.c | 38 arch/x86/kernel/vmlinux.lds.S | 2 drivers/ata/ahci.h | 230 +- drivers/base/driver.c | 69 drivers/base/platform.c | 28 drivers/block/Kconfig | 9 drivers/block/Makefile | 2 drivers/block/sx8.c | 1746 ---------------------- drivers/dma/ste_dma40.c | 1 drivers/gpu/drm/drm_dp_mst_topology.c | 6 drivers/i2c/muxes/i2c-demux-pinctrl.c | 2 drivers/i2c/muxes/i2c-mux-gpmux.c | 2 drivers/i2c/muxes/i2c-mux-pinctrl.c | 2 drivers/input/mouse/synaptics.c | 1 drivers/input/rmi4/rmi_smbus.c | 50 drivers/irqchip/irq-stm32-exti.c | 1 drivers/mcb/mcb-lpc.c | 35 drivers/mcb/mcb-parse.c | 15 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 2 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 2 drivers/net/ethernet/intel/igb/igb_ethtool.c | 6 drivers/net/ethernet/toshiba/ps3_gelic_wireless.c | 2 drivers/net/usb/r8152.c | 7 drivers/pci/quirks.c | 9 drivers/platform/x86/asus-wmi.h | 2 drivers/rpmsg/qcom_glink_native.c | 1 drivers/rpmsg/rpmsg_core.c | 34 drivers/rpmsg/rpmsg_internal.h | 5 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 4 drivers/tty/serial/8250/8250_pci.c | 122 + drivers/tty/vt/vc_screen.c | 9 drivers/usb/storage/unusual_cypress.h | 2 drivers/video/fbdev/aty/atyfb_base.c | 4 drivers/video/fbdev/uvesafb.c | 2 drivers/virtio/virtio_balloon.c | 6 fs/f2fs/gc.c | 3 fs/nfs/write.c | 3 fs/nfsd/vfs.c | 12 include/linux/device.h | 2 include/linux/pci_ids.h | 1 include/linux/platform_device.h | 6 include/linux/rpmsg.h | 14 include/uapi/linux/gtp.h | 2 kernel/events/core.c | 3 lib/kobject.c | 12 net/ipv4/tcp_input.c | 9 net/netfilter/nfnetlink_log.c | 2 sound/soc/codecs/rt5645.c | 2 sound/soc/generic/simple-card.c | 6 81 files changed, 599 insertions(+), 2047 deletions(-)
Al Viro (1):
nfsd: lock_rename() needs both directories to live on the same fs
Arnd Bergmann (2):
fbdev: atyfb: only use ioremap_uc() on i386 and ia64
ata: ahci: fix enum constants for gcc-13
Ben Wolsieffer (1):
irqchip/stm32-exti: add missing DT IRQ flag translation
Bjorn Andersson (1):
rpmsg: glink: Release driver_override
Cameron Williams (4):
tty: 8250: Remove UC-257 and UC-431
tty: 8250: Add support for additional Brainboxes UC cards
tty: 8250: Add support for Brainboxes UP cards
tty: 8250: Add support for Intashield IS-100
Chao Yu (1):
f2fs: fix to do sanity check on inode type during garbage collection
Christoph Hellwig (1):
remove the sx8 block driver
Dmitry Torokhov (1):
Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport
Douglas Anderson (1):
r8152: Increase USB control msg timeout to 5000ms as per spec
Florian Westphal (1):
netfilter: nfnetlink_log: silence bogus compiler warning
Fred Chen (1):
tcp: fix wrong RTO timeout when received SACK reneging
Gavin Shan (1):
virtio_balloon: Fix endless deflation and inflation on arm64
George Kennedy (1):
vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF
Greg Kroah-Hartman (1):
Linux 4.14.329
Hangyu Hua (1):
rpmsg: Fix possible refcount leak in rpmsg_register_device_override()
Hans de Goede (1):
platform/x86: asus-wmi: Change ASUS_WMI_BRN_DOWN code from 0x20 to 0x2e
Herve Codina (3):
i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node()
i2c: muxes: i2c-mux-gpmux: Use of_get_i2c_adapter_by_node()
i2c: muxes: i2c-demux-pinctrl: Use of_get_i2c_adapter_by_node()
Ivan Vecera (1):
i40e: Fix wrong check for I40E_TXR_FLAGS_WB_ON_ITR
Jorge Maidana (1):
fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit()
Josh Poimboeuf (2):
x86/mm: Simplify RESERVE_BRK() x86/mm: Fix RESERVE_BRK() for older binutils
Juergen Gross (1):
x86: Fix .brk attribute in linker script
Krzysztof Kozlowski (3):
driver: platform: Add helper for safer setting of driver_override
rpmsg: Fix kfree() of static memory on setting driver_override
rpmsg: Fix calling device_lock() on non-initialized device
Kuninori Morimoto (1):
ASoC: simple-card: fixup asoc_simple_probe() error handling
Kunwu Chan (1):
treewide: Spelling fix in comment
LihaSika (1):
usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" compatibility
Lukasz Majczak (1):
drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper()
Mateusz Palczewski (1):
igb: Fix potential memory leak in igb_add_ethtool_nfc_entry
Nick Desaulniers (1):
ARM: 8933/1: replace Sun/Solaris style flag on section directive
Pablo Neira Ayuso (1):
gtp: uapi: fix GTPA_MAX
Peter Zijlstra (1):
perf/core: Fix potential NULL deref
Rodríguez Barbarin, José Javier (2):
mcb: Return actual parsed size when reading chameleon table
mcb-lpc: Reallocate memory region to avoid memory overlapping
Shuming Fan (1):
ASoC: rt5650: fix the wrong result of key button
Su Hui (1):
net: chelsio: cxgb4: add an error code check in t4_load_phy_fw
Thomas Gleixner (1):
x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility
Tomas Henzl (1):
scsi: mpt3sas: Fix in error path
Trond Myklebust (1):
NFS: Don't call generic_error_remove_page() while holding locks
Vicki Pfau (1):
PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device
Wang Hai (1):
kobject: Fix slab-out-of-bounds in fill_kobj_path()
Zhang Shurong (1):
dmaengine: ste_dma40: Fix PM disable depth imbalance in d40_probe
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 328 +SUBLEVEL = 329 EXTRAVERSION = NAME = Petit Gorille
arch/arm/boot/bootp/init.S +1 -1
@@ -16,7 +16,7 @@ * size immediately following the kernel, we could build this into * a binary blob, and concatenate the zImage using the cat command. */ - .section .start,#alloc,#execinstr + .section .start, "ax" .type _start, #function .globl _start
arch/arm/boot/compressed/big-endian.S +1 -1
@@ -6,7 +6,7 @@ * Author: Nicolas Pitre */ - .section ".start", #alloc, #execinstr + .section ".start", "ax" mrc p15, 0, r0, c1, c0, 0 @ read control reg orr r0, r0, #(1 << 7) @ enable big endian mode
arch/arm/boot/compressed/head.S +1 -1
@@ -114,7 +114,7 @@ #endif .endm - .section ".start", #alloc, #execinstr + .section ".start", "ax" /* * sort out different calling conventions */
arch/arm/boot/compressed/piggy.S +1 -1
@@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0 */ - .section .piggydata,#alloc + .section .piggydata, "a" .globl input_data input_data: .incbin "arch/arm/boot/compressed/piggy_data"
arch/arm/mm/proc-arm1020.S +1 -1
@@ -505,7 +505,7 @@ cpu_arm1020_name: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm1020_proc_info,#object __arm1020_proc_info:
arch/arm/mm/proc-arm1020e.S +1 -1
@@ -463,7 +463,7 @@ arm1020e_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm1020e_proc_info,#object __arm1020e_proc_info:
arch/arm/mm/proc-arm1022.S +1 -1
@@ -448,7 +448,7 @@ arm1022_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm1022_proc_info,#object __arm1022_proc_info:
arch/arm/mm/proc-arm1026.S +1 -1
@@ -442,7 +442,7 @@ arm1026_crval: string cpu_arm1026_name, "ARM1026EJ-S" .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm1026_proc_info,#object __arm1026_proc_info:
arch/arm/mm/proc-arm720.S +1 -1
@@ -186,7 +186,7 @@ arm720_crval: * See <asm/procinfo.h> for a definition of this structure. */ - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req .type __\name\()_proc_info,#object
arch/arm/mm/proc-arm740.S +1 -1
@@ -132,7 +132,7 @@ __arm740_setup: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm740_proc_info,#object __arm740_proc_info: .long 0x41807400
arch/arm/mm/proc-arm7tdmi.S +1 -1
@@ -76,7 +76,7 @@ __arm7tdmi_setup: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ extra_hwcaps=0
arch/arm/mm/proc-arm920.S +1 -1
@@ -448,7 +448,7 @@ arm920_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm920_proc_info,#object __arm920_proc_info:
arch/arm/mm/proc-arm922.S +1 -1
@@ -426,7 +426,7 @@ arm922_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm922_proc_info,#object __arm922_proc_info:
arch/arm/mm/proc-arm925.S +1 -1
@@ -491,7 +491,7 @@ arm925_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache .type __\name\()_proc_info,#object
arch/arm/mm/proc-arm926.S +1 -1
@@ -474,7 +474,7 @@ arm926_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm926_proc_info,#object __arm926_proc_info:
arch/arm/mm/proc-arm940.S +1 -1
@@ -344,7 +344,7 @@ __arm940_setup: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm940_proc_info,#object __arm940_proc_info:
arch/arm/mm/proc-arm946.S +1 -1
@@ -399,7 +399,7 @@ __arm946_setup: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __arm946_proc_info,#object __arm946_proc_info: .long 0x41009460
arch/arm/mm/proc-arm9tdmi.S +1 -1
@@ -70,7 +70,7 @@ __arm9tdmi_setup: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req .type __\name\()_proc_info, #object
arch/arm/mm/proc-fa526.S +1 -1
@@ -190,7 +190,7 @@ fa526_cr1_set: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __fa526_proc_info,#object __fa526_proc_info:
arch/arm/mm/proc-feroceon.S +1 -1
@@ -584,7 +584,7 @@ feroceon_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req .type __\name\()_proc_info,#object
arch/arm/mm/proc-mohawk.S +1 -1
@@ -429,7 +429,7 @@ mohawk_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __88sv331x_proc_info,#object __88sv331x_proc_info:
arch/arm/mm/proc-sa110.S +1 -1
@@ -199,7 +199,7 @@ sa110_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .type __sa110_proc_info,#object __sa110_proc_info:
arch/arm/mm/proc-sa1100.S +1 -1
@@ -242,7 +242,7 @@ sa1100_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req .type __\name\()_proc_info,#object
arch/arm/mm/proc-v6.S +1 -1
@@ -264,7 +264,7 @@ v6_crval: string cpu_elf_name, "v6" .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" /* * Match any ARMv6 processor core.
arch/arm/mm/proc-v7.S +1 -1
@@ -636,7 +636,7 @@ __v7_setup_stack: string cpu_elf_name, "v7" .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" /* * Standard v7 proc info content
arch/arm/mm/proc-v7m.S +2 -2
@@ -96,7 +96,7 @@ ENTRY(cpu_cm7_proc_fin) ret lr ENDPROC(cpu_cm7_proc_fin) - .section ".init.text", #alloc, #execinstr + .section ".init.text", "ax" __v7m_cm7_setup: mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP)
@@ -181,7 +181,7 @@ ENDPROC(__v7m_setup) string cpu_elf_name "v7m" string cpu_v7m_name "ARMv7-M" - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro __v7m_proc name, initfunc, cache_fns = nop_cache_fns, hwcaps = 0, proc_fns = v7m_processor_functions .long 0 /* proc_info_list.__cpu_mm_mmu_flags */
arch/arm/mm/proc-xsc3.S +1 -1
@@ -499,7 +499,7 @@ xsc3_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req .type __\name\()_proc_info,#object
arch/arm/mm/proc-xscale.S +1 -1
@@ -613,7 +613,7 @@ xscale_crval: .align - .section ".proc.info.init", #alloc + .section ".proc.info.init", "a" .macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache .type __\name\()_proc_info,#object
arch/x86/include/asm/i8259.h +2 -0
@@ -67,6 +67,8 @@ struct legacy_pic {void (*make_irq)(unsigned int irq); }; +void legacy_pic_pcat_compat (void ); +extern struct legacy_pic *legacy_pic;extern struct legacy_pic null_legacy_pic;
arch/x86/include/asm/setup.h +21 -25
60 lines not on this page · raw message
arch/x86/kernel/acpi/boot.c +3 -0
@@ -156,6 +156,9 @@ static int __init acpi_parse_madt(struct acpi_table_header *table) madt->address); } +if (madt->flags &ACPI_MADT_PCAT_COMPAT ) +legacy_pic_pcat_compat (); +default_acpi_madt_oem_check (madt->header.oem_id, madt->header.oem_table_id);
arch/x86/kernel/i8259.c +30 -8
@@ -32,6 +32,7 @@*/ static void init_8259A (int auto_eoi); +static bool pcat_compat__ro_after_init ;static int i8259A_auto_eoi;DEFINE_RAW_SPINLOCK (i8259A_lock);
@@ -300,15 +301,32 @@ static void unmask_8259A(void)static int probe_8259A (void ) { +unsigned char new_val, probe_val = ~(1 <<PIC_CASCADE_IR );unsigned long flags; -unsigned char probe_val = ~(1 <<PIC_CASCADE_IR ); -unsigned char new_val; + +/* +* If MADT has the PCAT_COMPAT flag set, then do not bother probing +* for the PIC. Some BIOSes leave the PIC uninitialized and probing +* fails. +* +* Right now this causes problems as quite some code depends on +* nr_legacy_irqs() > 0 or has_legacy_pic() == true. This is silly +* when the system has an IO/APIC because then PIC is not required +* at all, except for really old machines where the timer interrupt +* must be routed through the PIC. So just pretend that the PIC is +* there and let legacy_pic->init() initialize it for nothing. +* +* Alternatively this could just try to initialize the PIC and +* repeat the probe, but for cases where there is no PIC that's +* just pointless. +*/ +if (pcat_compat) +return nr_legacy_irqs (); +/* -* Check to see if we have a PIC. -* Mask all except the cascade and read -* back the value we just wrote. If we don't -* have a PIC, we will read 0xff as opposed to the -* value we wrote. +* Check to see if we have a PIC. Mask all except the cascade and +* read back the value we just wrote. If we don't have a PIC, we +* will read 0xff as opposed to the value we wrote. */ raw_spin_lock_irqsave (&i8259A_lock, flags);
@@ -430,5 +448,9 @@ static int __init i8259A_init_ops(void)return 0 ; } -device_initcall (i8259A_init_ops); + +void __init legacy_pic_pcat_compat (void ) +{ + pcat_compat = true; +}
arch/x86/kernel/vmlinux.lds.S +1 -1
@@ -362,7 +362,7 @@ SECTIONS .brk : AT(ADDR(.brk) - LOAD_OFFSET) { __brk_base = .; . += 64 * 1024; /* 64k alignment slop space */ - *(.brk_reservation) /* areas brk users have reserved */ + *(.bss..brk) /* areas brk users have reserved */ __brk_limit = .; }
drivers/ata/ahci.h +116 -114
295 lines not on this page · raw message
drivers/base/driver.c +69 -0
75 lines not on this page · raw message
drivers/base/platform.c +4 -24
@@ -873,31 +873,11 @@ static ssize_t driver_override_store(struct device *dev, const char *buf, size_t count) {struct platform_device *pdev =to_platform_device (dev); -char *driver_override, *old, *cp; - -/* We need to keep extra room for a newline */ -if (count >= (PAGE_SIZE -1 )) -return -EINVAL ; - - driver_override =kstrndup (buf, count,GFP_KERNEL ); -if (!driver_override) -return -ENOMEM ; - - cp =strchr (driver_override,'\n' ); -if (cp) - *cp ='\0' ; - -device_lock (dev); - old = pdev->driver_override; -if (strlen (driver_override)) { - pdev->driver_override = driver_override; - }else { -kfree (driver_override); - pdev->driver_override =NULL ; - } -device_unlock (dev); +int ret; -kfree (old); + ret =driver_set_override (dev, &pdev->driver_override, buf, count); +if (ret) +return ret;return count; }
drivers/block/Kconfig +0 -9
@@ -303,15 +303,6 @@ config BLK_DEV_SKD Use device /dev/skd$N amd /dev/skd$Np$M. -config BLK_DEV_SX8 - tristate "Promise SATA SX8 support" - depends on PCI - ---help--- - Saying Y or M here will enable support for the - Promise SATA SX8 controllers. - - Use devices /dev/sx8/$N and /dev/sx8/$Np$M. - config BLK_DEV_RAM tristate "RAM block device support" select DAX if BLK_DEV_RAM_DAX
drivers/block/Makefile +0 -2
@@ -27,8 +27,6 @@ obj-$(CONFIG_BLK_DEV_NBD) += nbd.o obj-$(CONFIG_BLK_DEV_CRYPTOLOOP) += cryptoloop.o obj-$(CONFIG_VIRTIO_BLK) += virtio_blk.o -obj-$(CONFIG_BLK_DEV_SX8) += sx8.o - obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += xen-blkfront.o obj-$(CONFIG_XEN_BLKDEV_BACKEND) += xen-blkback/ obj-$(CONFIG_BLK_DEV_DRBD) += drbd/
drivers/block/sx8.c deleted +0 -1746
1,746 lines not on this page · raw message
drivers/dma/ste_dma40.c +1 -0
@@ -3678,6 +3678,7 @@ static int __init d40_probe(struct platform_device *pdev)regulator_disable (base->lcpa_regulator);regulator_put (base->lcpa_regulator); } +pm_runtime_disable (base->dev);kfree (base->lcla_pool.alloc_map);kfree (base->lookup_log_chans);
drivers/gpu/drm/drm_dp_mst_topology.c +3 -3
@@ -1268,14 +1268,14 @@ static struct drm_dp_mst_branch *get_mst_branch_device_by_guid_helper(struct drm_dp_mst_branch *found_mstb;struct drm_dp_mst_port *port; +if (!mstb) +return NULL ; +if (memcmp (mstb->guid, guid,16 ) ==0 )return mstb;list_for_each_entry (port, &mstb->ports, next) { -if (!port->mstb) -continue ; - found_mstb =get_mst_branch_device_by_guid_helper (port->mstb, guid);if (found_mstb)
drivers/i2c/muxes/i2c-demux-pinctrl.c +1 -1
@@ -63,7 +63,7 @@ static int i2c_demux_activate_master(struct i2c_demux_pinctrl_priv *priv, u32 neif (ret) goto err; - adap =of_find_i2c_adapter_by_node (priv->chan[new_chan].parent_np); + adap =of_get_i2c_adapter_by_node (priv->chan[new_chan].parent_np);if (!adap) { ret = -ENODEV ; goto err_with_revert;
drivers/i2c/muxes/i2c-mux-gpmux.c +1 -1
@@ -55,7 +55,7 @@ static struct i2c_adapter *mux_parent_adapter(struct device *dev)dev_err (dev,"Cannot parse i2c-parent\n" );return ERR_PTR (-ENODEV ); } - parent =of_find_i2c_adapter_by_node (parent_np); + parent =of_get_i2c_adapter_by_node (parent_np);of_node_put (parent_np);if (!parent)return ERR_PTR (-EPROBE_DEFER );
drivers/i2c/muxes/i2c-mux-pinctrl.c +1 -1
@@ -73,7 +73,7 @@ static struct i2c_adapter *i2c_mux_pinctrl_parent_adapter(struct device *dev)dev_err (dev,"Cannot parse i2c-parent\n" );return ERR_PTR (-ENODEV ); } - parent =of_find_i2c_adapter_by_node (parent_np); + parent =of_get_i2c_adapter_by_node (parent_np);of_node_put (parent_np);if (!parent)return ERR_PTR (-EPROBE_DEFER );
drivers/input/mouse/synaptics.c +1 -0
@@ -1735,6 +1735,7 @@ static int synaptics_create_intertouch(struct psmouse *psmouse,psmouse_matches_pnp_id (psmouse, topbuttonpad_pnp_ids) && !SYN_CAP_EXT_BUTTONS_STICK (info->ext_cap_10);const struct rmi_device_platform_data pdata = { + .reset_delay_ms =30 , .sensor_pdata = { .sensor_type = rmi_sensor_touchpad, .axis_align.flip_y = true,
drivers/input/rmi4/rmi_smbus.c +28 -22
76 lines not on this page · raw message
drivers/irqchip/irq-stm32-exti.c +1 -0
@@ -127,6 +127,7 @@ struct irq_domain_ops irq_exti_domain_ops = { .xlate = irq_domain_xlate_onetwocell, .alloc = stm32_exti_alloc, .free = stm32_exti_free, + .xlate = irq_domain_xlate_twocell, }; static int __init stm32_exti_init(struct device_node *node,
drivers/mcb/mcb-lpc.c +31 -4
@@ -26,7 +26,7 @@ static int mcb_lpc_probe(struct platform_device *pdev) {struct resource *res;struct priv *priv; -int ret =0 ; +int ret =0 , table_size; priv =devm_kzalloc (&pdev->dev,sizeof (*priv),GFP_KERNEL );if (!priv)
@@ -61,16 +61,43 @@ static int mcb_lpc_probe(struct platform_device *pdev) ret =chameleon_parse_cells (priv->bus, priv->mem->start, priv->base);if (ret <0 ) { -mcb_release_bus (priv->bus); -return ret; + goto out_mcb_bus; } -dev_dbg (&pdev->dev,"Found %d cells\n" , ret); + table_size = ret; + +if (table_size <CHAM_HEADER_SIZE ) { +/* Release the previous resources */ +devm_iounmap (&pdev->dev, priv->base); +devm_release_mem_region (&pdev->dev, priv->mem->start,resource_size (priv->mem)); + +/* Then, allocate it again with the actual chameleon table size */ + res =devm_request_mem_region (&pdev->dev, priv->mem->start, + table_size, +KBUILD_MODNAME ); +if (!res) { +dev_err (&pdev->dev,"Failed to request PCI memory\n" ); + ret = -EBUSY ; + goto out_mcb_bus; + } + + priv->base =devm_ioremap (&pdev->dev, priv->mem->start, table_size); +if (!priv->base) { +dev_err (&pdev->dev,"Cannot ioremap\n" ); + ret = -ENOMEM ; + goto out_mcb_bus; + } + +platform_set_drvdata (pdev, priv); + }mcb_bus_add_devices (priv->bus);return 0 ; +out_mcb_bus: +mcb_release_bus (priv->bus); +return ret; }static int mcb_lpc_remove (struct platform_device *pdev)
drivers/mcb/mcb-parse.c +10 -5
@@ -127,7 +127,7 @@ static void chameleon_parse_bar(void __iomem *base, } } -static int chameleon_get_bar (char __iomem **base,phys_addr_t mapbase, +static int chameleon_get_bar (void __iomem **base,phys_addr_t mapbase,struct chameleon_bar **cb) {struct chameleon_bar *c;
@@ -176,12 +176,13 @@ int chameleon_parse_cells(struct mcb_bus *bus, phys_addr_t mapbase, {struct chameleon_fpga_header *header;struct chameleon_bar *cb; -char __iomem *p = base; +void __iomem *p = base;int num_cells =0 ;uint32_t dtype;int bar_count;int ret;u32 hsize; +u32 table_size; hsize =sizeof (struct chameleon_fpga_header );
@@ -236,12 +237,16 @@ int chameleon_parse_cells(struct mcb_bus *bus, phys_addr_t mapbase, num_cells++; } -if (num_cells ==0 ) - num_cells = -EINVAL ; +if (num_cells ==0 ) { + ret = -EINVAL ; + goto free_bar; + } + table_size = p - base; +pr_debug ("%d cell(s) found. Chameleon table size: 0x%04x bytes\n" , num_cells, table_size);kfree (cb);kfree (header); -return num_cells; +return table_size; free_bar:kfree (cb);
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c +2 -0
@@ -3710,6 +3710,8 @@ int t4_load_phy_fw(struct adapter *adap, FW_PARAMS_PARAM_Z_V(FW_PARAMS_PARAM_DEV_PHYFW_DOWNLOAD)); ret =t4_set_params_timeout (adap, adap->mbox, adap->pf,0 ,1 , ¶m, &val,30000 ); +if (ret) +return ret;/* If we have version number support, then check to see that the new * firmware got loaded properly.
drivers/net/ethernet/intel/i40e/i40e_txrx.c +1 -1
@@ -2401,7 +2401,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)return budget; } -if (vsi->back->flags &I40E_TXR_FLAGS_WB_ON_ITR ) +if (q_vector->tx.ring[0 ].flags &I40E_TXR_FLAGS_WB_ON_ITR ) q_vector->arm_wb_state = false;/* Work is done so exit the polling mode and re-enable the interrupt */
drivers/net/ethernet/intel/igb/igb_ethtool.c +5 -1
@@ -2951,11 +2951,15 @@ static int igb_add_ethtool_nfc_entry(struct igb_adapter *adapter,if (err) goto err_out_w_lock; -igb_update_ethtool_nfc_entry (adapter, input, input->sw_idx); + err =igb_update_ethtool_nfc_entry (adapter, input, input->sw_idx); +if (err) + goto err_out_input_filter;spin_unlock (&adapter->nfc_lock);return 0 ; +err_out_input_filter: +igb_erase_filter (adapter, input); err_out_w_lock:spin_unlock (&adapter->nfc_lock); err_out:
drivers/net/ethernet/toshiba/ps3_gelic_wireless.c +1 -1
@@ -1232,7 +1232,7 @@ static int gelic_wl_set_encodeext(struct net_device *netdev, key_index = wl->current_key;if (!enc->length && (ext->ext_flags &IW_ENCODE_EXT_SET_TX_KEY )) { -/* reques to change default key index */ +/* request to change default key index */ pr_debug ("%s: request to change default key to %d\n" , __func__, key_index); wl->current_key = key_index;
drivers/net/usb/r8152.c +4 -3
@@ -786,7 +786,7 @@ int get_registers(struct r8152 *tp, u16 value, u16 index, u16 size, void *data) ret =usb_control_msg (tp->udev,usb_rcvctrlpipe (tp->udev,0 ),RTL8152_REQ_GET_REGS ,RTL8152_REQT_READ , - value, index, tmp, size,500 ); + value, index, tmp, size,USB_CTRL_GET_TIMEOUT );if (ret <0 )memset (data,0xff , size);else
@@ -809,7 +809,7 @@ int set_registers(struct r8152 *tp, u16 value, u16 index, u16 size, void *data) ret =usb_control_msg (tp->udev,usb_sndctrlpipe (tp->udev,0 ),RTL8152_REQ_SET_REGS ,RTL8152_REQT_WRITE , - value, index, tmp, size,500 ); + value, index, tmp, size,USB_CTRL_SET_TIMEOUT );kfree (tmp);
@@ -5084,7 +5084,8 @@ static u8 rtl_get_version(struct usb_interface *intf) ret =usb_control_msg (udev,usb_rcvctrlpipe (udev,0 ),RTL8152_REQ_GET_REGS ,RTL8152_REQT_READ , -PLA_TCR0 ,MCU_TYPE_PLA , tmp,sizeof (*tmp),500 ); +PLA_TCR0 ,MCU_TYPE_PLA , tmp,sizeof (*tmp), +USB_CTRL_GET_TIMEOUT );if (ret >0 ) ocp_data = (__le32_to_cpu (*tmp) >>16 ) &VERSION_MASK ;
drivers/pci/quirks.c +6 -3
@@ -429,14 +429,15 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100, quirk_ati_/* * In the AMD NL platform, this device ([1022:7912]) has a class code of * PCI_CLASS_SERIAL_USB_XHCI (0x0c0330), which means the xhci driver will -* claim it. +* claim it. The same applies on the VanGogh platform device ([1022:163a]). +* * But the dwc3 driver is a more specific driver for this device, and we'd * prefer to use it instead of xhci. To prevent xhci from claiming the * device, change the class code to 0x0c03fe, which the PCI r3.0 spec * defines as "USB device (not host controller)". The dwc3 driver can then * claim it based on its Vendor and Device ID. */ -static void quirk_amd_nl_class (struct pci_dev *pdev) +static void quirk_amd_dwc_class (struct pci_dev *pdev) {u32 class = pdev->class;
@@ -446,7 +447,9 @@ static void quirk_amd_nl_class(struct pci_dev *pdev) class, pdev->class); }DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_AMD ,PCI_DEVICE_ID_AMD_NL_USB , - quirk_amd_nl_class); + quirk_amd_dwc_class); +DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_AMD ,PCI_DEVICE_ID_AMD_VANGOGH_USB , + quirk_amd_dwc_class);/* * Let's make the southbridge information explicit instead
drivers/platform/x86/asus-wmi.h +1 -1
@@ -31,7 +31,7 @@#include <linux/i8042.h> #define ASUS_WMI_KEY_IGNORE (-1) -#define ASUS_WMI_BRN_DOWN 0x20 +#define ASUS_WMI_BRN_DOWN 0x2e#define ASUS_WMI_BRN_UP 0x2fstruct module ;
drivers/rpmsg/qcom_glink_native.c +1 -0
@@ -1354,6 +1354,7 @@ static void qcom_glink_rpdev_release(struct device *dev)struct glink_channel *channel =to_glink_channel (rpdev->ept); channel->rpdev =NULL ; +kfree (rpdev->driver_override);kfree (rpdev); }
drivers/rpmsg/rpmsg_core.c +31 -3
@@ -474,24 +474,52 @@ static struct bus_type rpmsg_bus = { .remove = rpmsg_dev_remove, }; -int rpmsg_register_device (struct rpmsg_device *rpdev) +/* +* A helper for registering rpmsg device with driver override and name. +* Drivers should not be using it, but instead rpmsg_register_device(). +*/ +int rpmsg_register_device_override (struct rpmsg_device *rpdev, +const char *driver_override) {struct device *dev = &rpdev->dev;int ret; +if (driver_override) +strcpy (rpdev->id.name, driver_override); +dev_set_name (&rpdev->dev,"%s.%s.%d.%d" ,dev_name (dev->parent), rpdev->id.name, rpdev->src, rpdev->dst); rpdev->dev.bus = &rpmsg_bus; - ret =device_register (&rpdev->dev); +device_initialize (dev); +if (driver_override) { + ret =driver_set_override (dev, &rpdev->driver_override, + driver_override, +strlen (driver_override)); +if (ret) { +dev_err (dev,"device_set_override failed: %d\n" , ret); +put_device (dev); +return ret; + } + } + + ret =device_add (dev);if (ret) { -dev_err (dev,"device_register failed: %d\n" , ret); +dev_err (dev,"device_add failed: %d\n" , ret); +kfree (rpdev->driver_override); + rpdev->driver_override =NULL ;put_device (&rpdev->dev); }return ret; } +EXPORT_SYMBOL (rpmsg_register_device_override); + +int rpmsg_register_device (struct rpmsg_device *rpdev) +{ +return rpmsg_register_device_override (rpdev,NULL ); +}EXPORT_SYMBOL (rpmsg_register_device);/*
drivers/rpmsg/rpmsg_internal.h +1 -4
@@ -91,10 +91,7 @@ struct device *rpmsg_find_device(struct device *parent,*/ static inline int rpmsg_chrdev_register_device (struct rpmsg_device *rpdev) { -strcpy (rpdev->id.name,"rpmsg_chrdev" ); - rpdev->driver_override ="rpmsg_chrdev" ; - -return rpmsg_register_device (rpdev); +return rpmsg_register_device_override (rpdev,"rpmsg_ctrl" ); }#endif
drivers/scsi/mpt3sas/mpt3sas_scsih.c +3 -1
@@ -9482,8 +9482,10 @@ _mpt3sas_init(void)mpt3sas_ctl_init (hbas_to_enumerate); error =pci_register_driver (&mpt3sas_driver); -if (error) +if (error) { +mpt3sas_ctl_exit (hbas_to_enumerate);scsih_exit (); + }return error; }
drivers/tty/serial/8250/8250_pci.c +119 -3
30 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.