Linux 4.19.190
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.190 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/mips/vdso/gettimeofday.c | 14 +- arch/x86/kernel/acpi/boot.c | 25 +--- arch/x86/kernel/setup.c | 7 - drivers/acpi/tables.c | 42 ++++++ drivers/net/usb/ax88179_178a.c | 4 drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c | 7 - drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 7 - drivers/platform/x86/thinkpad_acpi.c | 31 +++-- drivers/staging/erofs/inode.c | 135 ++++++++++++++-------- drivers/usb/core/quirks.c | 4 fs/overlayfs/super.c | 12 + include/linux/acpi.h | 9 + kernel/bpf/verifier.c | 12 - sound/usb/quirks-table.h | 10 + 15 files changed, 221 insertions(+), 100 deletions(-)
Chris Chiu (1):
USB: Add reset-resume quirk for WD19's Realtek Hub
Daniel Borkmann (1):
bpf: Fix masking negation logic upon negative dst register
Gao Xiang (1):
erofs: fix extended inode could cross boundary
Greg Kroah-Hartman (1):
Linux 4.19.190
Jiri Kosina (2):
iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_enqueue_hcmd()
iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_gen2_enqueue_hcmd()
Kai-Heng Feng (1):
USB: Add LPM quirk for Lenovo ThinkPad USB-C Dock Gen2 Ethernet
Mark Pearson (1):
platform/x86: thinkpad_acpi: Correct thermal sensor allocation
Miklos Szeredi (1):
ovl: allow upperdir inside lowerdir
Phillip Potter (1):
net: usb: ax88179_178a: initialize local variables before use
Rafael J. Wysocki (2):
ACPI: tables: x86: Reserve memory occupied by ACPI tables
ACPI: x86: Call acpi_boot_table_init() after acpi_table_upgrade()
Romain Naour (1):
mips: Do not include hi and lo in clobber list for R6
Takashi Iwai (1):
ALSA: usb-audio: Add MIDI quirk for Vox ToneLab EX
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 189 +SUBLEVEL = 190 EXTRAVERSION = NAME = "People's Front"
arch/mips/vdso/gettimeofday.c +12 -2
@@ -18,6 +18,12 @@#include <asm/unistd.h> #include <asm/vdso.h> +#if MIPS_ISA_REV <6 +#define VDSO_SYSCALL_CLOBBERS "hi", "lo", +#else +#define VDSO_SYSCALL_CLOBBERS +#endif +#ifdef CONFIG_MIPS_CLOCK_VSYSCALL static __always_inline long gettimeofday_fallback(struct timeval *_tv,
@@ -34,7 +40,9 @@ static __always_inline long gettimeofday_fallback(struct timeval *_tv, : "=r" (ret), "=r" (error) : "r" (tv), "r" (tz), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
@@ -55,7 +63,9 @@ static __always_inline long clock_gettime_fallback(clockid_t _clkid, : "=r" (ret), "=r" (error) : "r" (clkid), "r" (ts), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
arch/x86/kernel/acpi/boot.c +12 -13
@@ -1565,10 +1565,18 @@ void __init acpi_boot_table_init(void)/* * Initialize the ACPI boot-time table parser. */ -if (acpi_table_init ()) { +if (acpi_locate_initial_tables ())disable_acpi (); -return ; - } +else +acpi_reserve_initial_tables (); +} + +int __init early_acpi_boot_init (void ) +{ +if (acpi_disabled) +return 1 ; + +acpi_table_init_complete ();acpi_table_parse (ACPI_SIG_BOOT , acpi_parse_sbf);
@@ -1581,18 +1589,9 @@ void __init acpi_boot_table_init(void) }else { printk(KERN_WARNING PREFIX "Disabling ACPI support\n");disable_acpi (); -return ; +return 1 ; } } -} - -int __init early_acpi_boot_init (void ) -{ -/* -* If acpi_disabled, bail out -*/ -if (acpi_disabled) -return 1 ;/* * Process the Multiple APIC Description Table (MADT), if present
arch/x86/kernel/setup.c +2 -5
@@ -1176,6 +1176,8 @@ void __init setup_arch(char **cmdline_p)reserve_initrd ();acpi_table_upgrade (); +/* Look for ACPI tables and reserve memory occupied by them. */ +acpi_boot_table_init ();vsmp_init ();
@@ -1183,11 +1185,6 @@ void __init setup_arch(char **cmdline_p)early_platform_quirks (); -/* -* Parse the ACPI tables for possible boot-time SMP configuration. -*/ -acpi_boot_table_init (); -early_acpi_boot_init ();initmem_init ();
drivers/acpi/tables.c +39 -3
62 lines not on this page · raw message
drivers/net/usb/ax88179_178a.c +2 -2
@@ -307,12 +307,12 @@ static int ax88179_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,int ret;if (2 == size) { -u16 buf; +u16 buf =0 ; ret =__ax88179_read_cmd (dev, cmd, value, index, size, &buf,0 );le16_to_cpus (&buf); *((u16 *)data) = buf; }else if (4 == size) { -u32 buf; +u32 buf =0 ; ret =__ax88179_read_cmd (dev, cmd, value, index, size, &buf,0 );le32_to_cpus (&buf); *((u32 *)data) = buf;
drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c +4 -3
@@ -654,6 +654,7 @@ static int iwl_pcie_gen2_enqueue_hcmd(struct iwl_trans *trans,const u8 *cmddata[IWL_MAX_CMD_TBS_PER_TFD ];u16 cmdlen[IWL_MAX_CMD_TBS_PER_TFD ];struct iwl_tfh_tfd *tfd; +unsigned long flags2; copy_size =sizeof (struct iwl_cmd_header_wide ); cmd_size =sizeof (struct iwl_cmd_header_wide );
@@ -722,14 +723,14 @@ static int iwl_pcie_gen2_enqueue_hcmd(struct iwl_trans *trans, goto free_dup_buf; } -spin_lock_bh (&txq->lock); +spin_lock_irqsave (&txq->lock, flags2); idx =iwl_pcie_get_cmd_index (txq, txq->write_ptr); tfd =iwl_pcie_get_tfd (trans, txq, txq->write_ptr);memset (tfd,0 ,sizeof (*tfd));if (iwl_queue_space (trans, txq) < ((cmd->flags &CMD_ASYNC ) ?2 :1 )) { -spin_unlock_bh (&txq->lock); +spin_unlock_irqrestore (&txq->lock, flags2);IWL_ERR (trans,"No space in command queue\n" );iwl_op_mode_cmd_queue_full (trans->op_mode);
@@ -870,7 +871,7 @@ static int iwl_pcie_gen2_enqueue_hcmd(struct iwl_trans *trans,spin_unlock_irqrestore (&trans_pcie->reg_lock, flags); out: -spin_unlock_bh (&txq->lock); +spin_unlock_irqrestore (&txq->lock, flags2); free_dup_buf:if (idx <0 )kfree (dup_buf);
drivers/net/wireless/intel/iwlwifi/pcie/tx.c +4 -3
@@ -1495,6 +1495,7 @@ static int iwl_pcie_enqueue_hcmd(struct iwl_trans *trans,u32 cmd_pos;const u8 *cmddata[IWL_MAX_CMD_TBS_PER_TFD ];u16 cmdlen[IWL_MAX_CMD_TBS_PER_TFD ]; +unsigned long flags2; if (WARN(!trans->wide_cmd_header && group_id > IWL_ALWAYS_LONG_GROUP,
@@ -1578,10 +1579,10 @@ static int iwl_pcie_enqueue_hcmd(struct iwl_trans *trans, goto free_dup_buf; } -spin_lock_bh (&txq->lock); +spin_lock_irqsave (&txq->lock, flags2);if (iwl_queue_space (trans, txq) < ((cmd->flags &CMD_ASYNC ) ?2 :1 )) { -spin_unlock_bh (&txq->lock); +spin_unlock_irqrestore (&txq->lock, flags2);IWL_ERR (trans,"No space in command queue\n" );iwl_op_mode_cmd_queue_full (trans->op_mode);
@@ -1742,7 +1743,7 @@ static int iwl_pcie_enqueue_hcmd(struct iwl_trans *trans,spin_unlock_irqrestore (&trans_pcie->reg_lock, flags); out: -spin_unlock_bh (&txq->lock); +spin_unlock_irqrestore (&txq->lock, flags2); free_dup_buf:if (idx <0 )kfree (dup_buf);
drivers/platform/x86/thinkpad_acpi.c +22 -9
@@ -6300,6 +6300,7 @@ enum thermal_access_mode {enum {/* TPACPI_THERMAL_TPEC_* */ TP_EC_THERMAL_TMP0 =0x78 ,/* ACPI EC regs TMP 0..7 */ TP_EC_THERMAL_TMP8 =0xC0 ,/* ACPI EC regs TMP 8..15 */ +TP_EC_FUNCREV =0xEF ,/* ACPI EC Functional revision */ TP_EC_THERMAL_TMP_NA =-128 ,/* ACPI EC sensor not available */ TPACPI_THERMAL_SENSOR_NA =-128000 ,/* Sensor not available */
@@ -6498,7 +6499,7 @@ static const struct attribute_group thermal_temp_input8_group = {static int __init thermal_init (struct ibm_init_struct *iibm) { -u8 t, ta1, ta2; +u8 t, ta1, ta2, ver =0 ;int i;int acpi_tmp7;int res;
@@ -6513,7 +6514,14 @@ static int __init thermal_init(struct ibm_init_struct *iibm)* 0x78-0x7F, 0xC0-0xC7. Registers return 0x00 for * non-implemented, thermal sensors return 0x80 when * not available +* The above rule is unfortunately flawed. This has been seen with +* 0xC2 (power supply ID) causing thermal control problems. +* The EC version can be determined by offset 0xEF and at least for +* version 3 the Lenovo firmware team confirmed that registers 0xC0-0xC7 +* are not thermal registers. */ +if (!acpi_ec_read (TP_EC_FUNCREV , &ver)) +pr_warn ("Thinkpad ACPI EC unable to access EC version\n" ); ta1 = ta2 =0 ;for (i =0 ; i <8 ; i++) {
@@ -6523,11 +6531,13 @@ static int __init thermal_init(struct ibm_init_struct *iibm) ta1 =0 ;break ; } -if (acpi_ec_read (TP_EC_THERMAL_TMP8 + i, &t)) { - ta2 |= t; - }else { - ta1 =0 ; -break ; +if (ver <3 ) { +if (acpi_ec_read (TP_EC_THERMAL_TMP8 + i, &t)) { + ta2 |= t; + }else { + ta1 =0 ; +break ; + } } }if (ta1 ==0 ) {
@@ -6540,9 +6550,12 @@ static int __init thermal_init(struct ibm_init_struct *iibm) thermal_read_mode =TPACPI_THERMAL_NONE ; } }else { - thermal_read_mode = - (ta2 !=0 ) ? -TPACPI_THERMAL_TPEC_16 :TPACPI_THERMAL_TPEC_8 ; +if (ver >=3 ) + thermal_read_mode =TPACPI_THERMAL_TPEC_8 ; +else + thermal_read_mode = + (ta2 !=0 ) ? +TPACPI_THERMAL_TPEC_16 :TPACPI_THERMAL_TPEC_8 ; } }else if (acpi_tmp7) { if (tpacpi_is_ibm() &&
drivers/staging/erofs/inode.c +90 -45
207 lines not on this page · raw message
drivers/usb/core/quirks.c +4 -0
@@ -406,6 +406,7 @@ static const struct usb_device_id usb_quirk_list[] = {/* Realtek hub in Dell WD19 (Type-C) */ { USB_DEVICE(0x0bda, 0x0487), .driver_info = USB_QUIRK_NO_LPM }, + { USB_DEVICE(0x0bda, 0x5487), .driver_info = USB_QUIRK_RESET_RESUME }, /* Generic RTL8153 based ethernet adapters */ { USB_DEVICE(0x0bda, 0x8153), .driver_info = USB_QUIRK_NO_LPM },
@@ -438,6 +439,9 @@ static const struct usb_device_id usb_quirk_list[] = { { USB_DEVICE(0x17ef, 0xa012), .driver_info = USB_QUIRK_DISCONNECT_SUSPEND }, + /* Lenovo ThinkPad USB-C Dock Gen2 Ethernet (RTL8153 GigE) */ + { USB_DEVICE(0x17ef, 0xa387), .driver_info = USB_QUIRK_NO_LPM }, + /* BUILDWIN Photo Frame */ { USB_DEVICE(0x1908, 0x1315), .driver_info = USB_QUIRK_HONOR_BNUMINTERFACES },
fs/overlayfs/super.c +7 -5
@@ -1479,7 +1479,8 @@ static struct ovl_entry *ovl_get_lowerstack(struct super_block *sb,* - upper/work dir of any overlayfs instance */ static int ovl_check_layer (struct super_block *sb,struct ovl_fs *ofs, -struct dentry *dentry,const char *name) +struct dentry *dentry,const char *name, +bool is_lower) {struct dentry *next = dentry, *parent;int err =0 ;
@@ -1491,7 +1492,7 @@ static int ovl_check_layer(struct super_block *sb, struct ovl_fs *ofs,/* Walk back ancestors to root (inclusive) looking for traps */ while (!err && parent != next) { -if (ovl_lookup_trap_inode (sb, parent)) { +if (is_lower &&ovl_lookup_trap_inode (sb, parent)) { err = -ELOOP ;pr_err ("overlayfs: overlapping %s path\n" , name); }else if (ovl_is_inuse (parent)) {
@@ -1517,7 +1518,7 @@ static int ovl_check_overlapping_layers(struct super_block *sb,if (ofs->upper_mnt) { err =ovl_check_layer (sb, ofs, ofs->upper_mnt->mnt_root, -"upperdir" ); +"upperdir" , false);if (err)return err;
@@ -1528,7 +1529,8 @@ static int ovl_check_overlapping_layers(struct super_block *sb,* workbasedir. In that case, we already have their traps in * inode cache and we will catch that case on lookup. */ - err =ovl_check_layer (sb, ofs, ofs->workbasedir,"workdir" ); + err =ovl_check_layer (sb, ofs, ofs->workbasedir,"workdir" , + false);if (err)return err; }
@@ -1536,7 +1538,7 @@ static int ovl_check_overlapping_layers(struct super_block *sb,for (i =0 ; i < ofs->numlower; i++) { err =ovl_check_layer (sb, ofs, ofs->lower_layers[i].mnt->mnt_root, -"lowerdir" ); +"lowerdir" , true);if (err)return err; }
include/linux/acpi.h +8 -1
@@ -230,10 +230,14 @@ void __iomem *__acpi_map_table(unsigned long phys, unsigned long size);void __acpi_unmap_table (void __iomem *map,unsigned long size);int early_acpi_boot_init (void );int acpi_boot_init (void ); +void acpi_boot_table_prepare (void );void acpi_boot_table_init (void );int acpi_mps_check (void );int acpi_numa_init (void ); +int acpi_locate_initial_tables (void ); +void acpi_reserve_initial_tables (void ); +void acpi_table_init_complete (void );int acpi_table_init (void );int acpi_table_parse (char *id,acpi_tbl_table_handler handler); int __init acpi_table_parse_entries(char *id, unsigned long table_size,
@@ -734,9 +738,12 @@ static inline int acpi_boot_init(void)return 0 ; } +static inline void acpi_boot_table_prepare (void ) +{ +} +static inline void acpi_boot_table_init (void ) { -return ; }static inline int acpi_mps_check (void )
kernel/bpf/verifier.c +4 -8
@@ -6099,14 +6099,10 @@ static int fixup_bpf_calls(struct bpf_verifier_env *env) *patch++ =BPF_ALU64_REG (BPF_OR ,BPF_REG_AX , off_reg); *patch++ =BPF_ALU64_IMM (BPF_NEG ,BPF_REG_AX ,0 ); *patch++ =BPF_ALU64_IMM (BPF_ARSH ,BPF_REG_AX ,63 ); -if (issrc) { - *patch++ =BPF_ALU64_REG (BPF_AND ,BPF_REG_AX , - off_reg); - insn->src_reg =BPF_REG_AX ; - }else { - *patch++ =BPF_ALU64_REG (BPF_AND , off_reg, -BPF_REG_AX ); - } + *patch++ =BPF_ALU64_REG (BPF_AND ,BPF_REG_AX , off_reg); +if (!issrc) + *patch++ =BPF_MOV64_REG (insn->dst_reg, insn->src_reg); + insn->src_reg =BPF_REG_AX ;if (isneg) insn->code = insn->code == code_add ? code_sub : code_add;
sound/usb/quirks-table.h +10 -0
@@ -2499,6 +2499,16 @@ YAMAHA_DEVICE(0x7010, "UB99"), } }, +{ + USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204), + .driver_info = (unsigned long ) & (const struct snd_usb_audio_quirk ) { + .vendor_name ="KORG, Inc." , +/* .product_name = "ToneLab EX", */ + .ifnum =3 , + .type =QUIRK_MIDI_STANDARD_INTERFACE , + } +}, +/* AKAI devices */ { USB_DEVICE(0x09e8, 0x0062),
Samuel Zou
Tested-by Hulk RobotQuoted 4 lines · Greg Kroah-Hartman
I'm announcing the release of the 4.19.190 kernel.
All users of the 4.19 kernel series must upgrade.
Quoted 9 lines
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitlinux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summarythanks,
greg k-h
Tested on arm64 and x86 for 4.19.190,
Kernel repo:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Branch: linux-4.19.y
Version: 4.19.190
Commit: 3c8c23092588a23bf1856a64f58c37f477a413be
Compiler: gcc version 7.3.0 (GCC)
arm64:
--------------------------------------------------------------------
Testcase Result Summary:
total: 8435
passed: 8435
failed: 0
timeout: 0
--------------------------------------------------------------------
x86:
--------------------------------------------------------------------
Testcase Result Summary:
total: 8435
passed: 8435
failed: 0
timeout: 0
--------------------------------------------------------------------