Skip to contentSkip to conversation

Linux 4.14.329

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Nov 8, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'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

author maintainer
#1 lore raw
Makefile +1 -1
index f0bb45a62374..caffc3b6eb94 100644
@@ -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
index 78b508075161..868eeeaaa46e 100644
@@ -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
index 88e2a88d324b..0e092c36da2f 100644
@@ -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
index becd5d4bc3a6..3317b00466ce 100644
@@ -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
index 0284f84dcf38..27577644ee72 100644
@@ -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
index 774ef1323554..4773490177c9 100644
@@ -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
index ae3c27b71594..928e8ca58f40 100644
@@ -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
index dbb2413fe04d..385584c3d222 100644
@@ -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
index 0b37b2cef9d3..29cc81857373 100644
@@ -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
index 3651cd70e418..c08cd1b0a1d0 100644
@@ -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
index 024fb7732407..6eed87103b95 100644
@@ -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
index 25472d94426d..beb64a7ccb38 100644
@@ -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
index 7a14bd4414c9..5d4319708362 100644
@@ -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
index edccfcdcd551..7e22ca780b36 100644
@@ -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
index 32a47cc19076..d343e77b8456 100644
@@ -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
index fb827c633693..8cf78c608c42 100644
@@ -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
index ee5b66f847c4..631ae64eeccd 100644
@@ -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
index 7361837edc31..033ad7402d67 100644
@@ -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
index 7fac8c612134..2195468ccd76 100644
@@ -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
index 4001b73af4ee..fd3e5dd94e59 100644
@@ -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
index 92e08bf37aad..685d324a74d3 100644
@@ -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
index 6f07d2ef4ff2..9182321a586a 100644
@@ -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
index ee2ce496239f..093ad2ceff28 100644
@@ -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
index 222d5836f666..12b8fcab4b59 100644
@@ -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
index 06d890a2342b..32f4df0915ef 100644
@@ -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
index d8d90cf65b39..87263e003e20 100644
@@ -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
index c68408d51c4b..4f9c074a460b 100644
@@ -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
index 293dcc2c441f..da96e4de1353 100644
@@ -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
index 3d75b7972fd1..c7800c69921b 100644
@@ -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
index 89789e8c80f6..e16574c16e93 100644
@@ -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
index fd9c4479880d..30a7a12324b9 100644
@@ -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
index c359b8265ad4..26017ed088cc 100644
@@ -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
index d3dc8bc6b3ad..4f274df917f7 100644
@@ -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
index 0ee3cab88f70..f2273655284f 100644
@@ -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
index 6c60b1a63cc6..45aaeada8161 100644
@@ -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
index dc061158b403..af75f0c0c337 100644
@@ -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
index 498d9886ed9b..bb39b04d67d7 100644
@@ -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
index 64faa70a9dd9..879638e6bea4 100644
@@ -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
index 647b5ff69a9c..d5be02267060 100644
@@ -63,7 +63,7 @@ static int i2c_demux_activate_master(struct i2c_demux_pinctrl_priv *priv, u32 ne
 	if (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
index 5053f1675a29..04133c973c15 100644
@@ -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
index cc6818aabab5..821e5cd49757 100644
@@ -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
index 0714d572e49a..ec4ae34b3914 100644
@@ -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
index 45363ff8d06f..1b55199ea1b4 100644
@@ -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
index 945091a88354..7d292acbba53 100644
@@ -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
index 08a85e43ef88..b7354232221e 100644
@@ -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
index ecb8ef4a756f..6ffd5f3dcf05 100644
@@ -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,
 				    &param, &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
index d79a2c8175c4..02871e0e2024 100644
@@ -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
index 77108b0a07f5..c8b5650b7eac 100644
@@ -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
index eed18f88bdff..e70175f40a82 100644
@@ -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
index d17d125a3454..a0b40bdbdd84 100644
@@ -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
index 7ca82b8c5c37..e32147929cf3 100644
@@ -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
index 57a79bddb286..95612878a841 100644
@@ -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		0x2f
 
 struct module;
drivers/rpmsg/qcom_glink_native.c +1 -0
index c1dfad298685..8ee814d6dddc 100644
@@ -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
index dffa3aab7178..1389a32fdea3 100644
@@ -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
index 0cf9c7e2ee83..868698a3d4c2 100644
@@ -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
index 8fb7491c5bc0..0bccc4a12e53 100644
@@ -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

drivers/tty/vt/vc_screen.c +5 -4
index 42c9ef64108f..aa67730f5cc6 100644

Lines of this file are not shown. View the raw message.

drivers/usb/storage/unusual_cypress.h +1 -1
index e9a2eb88869a..5e02face63c4 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/aty/atyfb_base.c +4 -0
index d4b938276d23..71e95533613c 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/uvesafb.c +1 -1
index ee86c62e3672..72255715bbee 100644

Lines of this file are not shown. View the raw message.

drivers/virtio/virtio_balloon.c +5 -1
index 71970773aad1..db35a9da06dd 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/gc.c +2 -1
index c2e4c6ce2cf7..1f86b456ba7a 100644

Lines of this file are not shown. View the raw message.

fs/nfs/write.c +1 -2
index 010733c8bdcd..1b5791d5537a 100644

Lines of this file are not shown. View the raw message.

fs/nfsd/vfs.c +6 -6
index a64065ad8851..43bfdbb9a601 100644

Lines of this file are not shown. View the raw message.

include/linux/device.h +2 -0
index fab5798a47fd..65e06a066b67 100644

Lines of this file are not shown. View the raw message.

include/linux/pci_ids.h +1 -0
index 0122286beda5..83f576d45d78 100644

Lines of this file are not shown. View the raw message.

include/linux/platform_device.h +5 -1
index 49f634d96118..8fdd3290072b 100644

Lines of this file are not shown. View the raw message.

include/linux/rpmsg.h +12 -2
index 1ab79e8dc0b8..650ebbd35b0c 100644

Lines of this file are not shown. View the raw message.

include/uapi/linux/gtp.h +1 -1
index c7d66755d212..78bd62014efd 100644

Lines of this file are not shown. View the raw message.

kernel/events/core.c +2 -1
index 7ece49c14b74..262079890b13 100644

Lines of this file are not shown. View the raw message.

lib/kobject.c +10 -2
index b908655c5812..1a7c67d94f09 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_input.c +5 -4
index 491c16d8e9dd..e65daf71a52d 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nfnetlink_log.c +1 -1
index 40ba9c8e3c07..7d7a94e3fc50 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/rt5645.c +2 -0
index 01de25813c72..822c42101c3f 100644

Lines of this file are not shown. View the raw message.

sound/soc/generic/simple-card.c +4 -2
index 6959a74a6f49..c5db2d9d44ed 100644

Lines of this file are not shown. View the 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.