Linux 4.19.186
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.186 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/arm/boot/dts/am33xx.dtsi | 3 +++ arch/ia64/kernel/err_inject.c | 22 +++++++++++----------- arch/ia64/kernel/mca.c | 2 +- arch/x86/Makefile | 2 +- arch/x86/net/bpf_jit_comp.c | 11 ++++++++++- arch/x86/net/bpf_jit_comp32.c | 11 ++++++++++- drivers/bus/ti-sysc.c | 4 +++- drivers/gpu/drm/msm/msm_fence.c | 2 +- drivers/isdn/hardware/mISDN/mISDNipac.c | 2 +- drivers/net/ethernet/marvell/pxa168_eth.c | 2 +- drivers/platform/x86/intel-hid.c | 7 +++++++ drivers/platform/x86/thinkpad_acpi.c | 8 +++++++- drivers/target/target_core_pscsi.c | 8 ++++++++ fs/cifs/file.c | 1 + fs/cifs/smb2misc.c | 4 ++-- init/Kconfig | 3 +-- net/mac80211/main.c | 13 ++++++++++++- 18 files changed, 81 insertions(+), 26 deletions(-)
Alban Bedel (1):
platform/x86: intel-hid: Support Lenovo ThinkPad X1 Tablet Gen 2
Arnd Bergmann (1):
x86/build: Turn off -fcf-protection for realmode targets
Esteve Varela Colominas (1):
platform/x86: thinkpad_acpi: Allow the FnLock LED to change state
Greg Kroah-Hartman (1):
Linux 4.19.186
Heiko Carstens (1):
init/Kconfig: make COMPILE_TEST depend on !S390
Karthikeyan Kathirvel (1):
mac80211: choose first enabled channel for monitor
Mans Rullgard (1):
ARM: dts: am33xx: add aliases for mmc interfaces
Martin Wilck (1):
scsi: target: pscsi: Clean up after failure in pscsi_map_sg()
Masahiro Yamada (1):
init/Kconfig: make COMPILE_TEST depend on HAS_IOMEM
Pavel Andrianov (1):
net: pxa168_eth: Fix a potential data race in pxa168_eth_remove
Piotr Krysiuk (2):
bpf, x86: Validate computation of branch displacements for x86-64 bpf, x86: Validate computation of branch displacements for x86-32
Rob Clark (1):
drm/msm: Ratelimit invalid-fence message
Ronnie Sahlberg (1):
cifs: revalidate mapping when we open files for SMB1 POSIX
Sergei Trofimovich (2):
ia64: mca: allocate early mca with GFP_ATOMIC
ia64: fix format strings for err_inject
Tong Zhang (1):
mISDN: fix crash in fritzpci
Tony Lindgren (1):
bus: ti-sysc: Fix warning on unbind if reset is not deasserted
Vincent Whitchurch (1):
cifs: Silently ignore unknown oplock break handle
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 185 +SUBLEVEL = 186 EXTRAVERSION = NAME = "People's Front"
arch/arm/boot/dts/am33xx.dtsi +3 -0
@@ -39,6 +39,9 @@ ethernet1 = &cpsw_emac1; spi0 = &spi0; spi1 = &spi1; + mmc0 = &mmc1; + mmc1 = &mmc2; + mmc2 = &mmc3; }; cpus {
arch/ia64/kernel/err_inject.c +11 -11
@@ -59,7 +59,7 @@ show_##name(struct device *dev, struct device_attribute *attr, \ char *buf) \ { \u32 cpu=dev->id; \ -return sprintf (buf,"%lx\n" , name[cpu]); \ +return sprintf (buf,"%llx\n" , name[cpu]); \ }#define store (name) \
@@ -86,9 +86,9 @@ store_call_start(struct device *dev, struct device_attribute *attr,#ifdef ERR_INJ_DEBUG printk (KERN_DEBUG "pal_mc_err_inject for cpu%d:\n" , cpu); -printk (KERN_DEBUG "err_type_info=%lx,\n" , err_type_info[cpu]); -printk (KERN_DEBUG "err_struct_info=%lx,\n" , err_struct_info[cpu]); -printk (KERN_DEBUG "err_data_buffer=%lx, %lx, %lx.\n" , +printk (KERN_DEBUG "err_type_info=%llx,\n" , err_type_info[cpu]); +printk (KERN_DEBUG "err_struct_info=%llx,\n" , err_struct_info[cpu]); +printk (KERN_DEBUG "err_data_buffer=%llx, %llx, %llx.\n" , err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3);
@@ -117,8 +117,8 @@ store_call_start(struct device *dev, struct device_attribute *attr,#ifdef ERR_INJ_DEBUG printk (KERN_DEBUG "Returns: status=%d,\n" , (int )status[cpu]); -printk (KERN_DEBUG "capabilities=%lx,\n" , capabilities[cpu]); -printk (KERN_DEBUG "resources=%lx\n" , resources[cpu]); +printk (KERN_DEBUG "capabilities=%llx,\n" , capabilities[cpu]); +printk (KERN_DEBUG "resources=%llx\n" , resources[cpu]);#endif return size; }
@@ -131,7 +131,7 @@ show_virtual_to_phys(struct device *dev, struct device_attribute *attr, char *buf) {unsigned int cpu=dev->id; -return sprintf (buf,"%lx\n" , phys_addr[cpu]); +return sprintf (buf,"%llx\n" , phys_addr[cpu]); } static ssize_t
@@ -145,7 +145,7 @@ store_virtual_to_phys(struct device *dev, struct device_attribute *attr, ret =get_user_pages_fast (virt_addr,1 ,FOLL_WRITE ,NULL );if (ret<=0 ) {#ifdef ERR_INJ_DEBUG -printk ("Virtual address %lx is not existing.\n" ,virt_addr); +printk ("Virtual address %llx is not existing.\n" , virt_addr);#endif return -EINVAL ; }
@@ -163,7 +163,7 @@ show_err_data_buffer(struct device *dev, {unsigned int cpu=dev->id; -return sprintf (buf,"%lx, %lx, %lx\n" , +return sprintf (buf,"%llx, %llx, %llx\n" , err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3);
@@ -178,13 +178,13 @@ store_err_data_buffer(struct device *dev,int ret;#ifdef ERR_INJ_DEBUG -printk ("write err_data_buffer=[%lx,%lx,%lx] on cpu%d\n" , +printk ("write err_data_buffer=[%llx,%llx,%llx] on cpu%d\n" , err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3, cpu);#endif - ret=sscanf (buf,"%lx, %lx, %lx" , + ret =sscanf (buf,"%llx, %llx, %llx" , &err_data_buffer[cpu].data1, &err_data_buffer[cpu].data2, &err_data_buffer[cpu].data3);
arch/ia64/kernel/mca.c +1 -1
@@ -1860,7 +1860,7 @@ ia64_mca_cpu_init(void *cpu_data) data =mca_bootmem (); first_time =0 ; }else - data = (void *)__get_free_pages (GFP_KERNEL , + data = (void *)__get_free_pages (GFP_ATOMIC ,get_order (sz));if (!data) panic("Could not allocate MCA memory for cpu %d\n",
arch/x86/Makefile +1 -1
@@ -34,7 +34,7 @@ M16_CFLAGS := $(call cc-option, -m16, $(CODE16GCC_CFLAGS)) REALMODE_CFLAGS := $(M16_CFLAGS) -g -Os -DDISABLE_BRANCH_PROFILING \ -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \ -fno-strict-aliasing -fomit-frame-pointer -fno-pic \ - -mno-mmx -mno-sse + -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none) REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -ffreestanding) REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -fno-stack-protector)
arch/x86/net/bpf_jit_comp.c +10 -1
@@ -1019,7 +1019,16 @@ xadd: if (is_imm8(insn->off)) }if (image) { -if (unlikely (proglen + ilen > oldproglen)) { +/* +* When populating the image, assert that: +* +* i) We do not write beyond the allocated space, and +* ii) addrs[i] did not change from the prior run, in order +* to validate assumptions made for computing branch +* displacements. +*/ +if (unlikely (proglen + ilen > oldproglen || + proglen + ilen != addrs[i])) {pr_err ("bpf_jit: fatal error\n" );return -EFAULT ; }
arch/x86/net/bpf_jit_comp32.c +10 -1
@@ -2201,7 +2201,16 @@ emit_cond_jmp: jmp_cond = get_cond_jmp_opcode(BPF_OP(code), false); }if (image) { -if (unlikely (proglen + ilen > oldproglen)) { +/* +* When populating the image, assert that: +* +* i) We do not write beyond the allocated space, and +* ii) addrs[i] did not change from the prior run, in order +* to validate assumptions made for computing branch +* displacements. +*/ +if (unlikely (proglen + ilen > oldproglen || + proglen + ilen != addrs[i])) {pr_err ("bpf_jit: fatal error\n" );return -EFAULT ; }
drivers/bus/ti-sysc.c +3 -1
@@ -1814,7 +1814,9 @@ static int sysc_remove(struct platform_device *pdev)pm_runtime_put_sync (&pdev->dev);pm_runtime_disable (&pdev->dev); -reset_control_assert (ddata->rsts); + +if (!reset_control_status (ddata->rsts)) +reset_control_assert (ddata->rsts); unprepare:sysc_unprepare (ddata);
drivers/gpu/drm/msm/msm_fence.c +1 -1
@@ -56,7 +56,7 @@ int msm_wait_fence(struct msm_fence_context *fctx, uint32_t fence,int ret;if (fence > fctx->last_fence) { -DRM_ERROR ("%s: waiting on invalid fence: %u (of %u)\n" , +DRM_ERROR_RATELIMITED ("%s: waiting on invalid fence: %u (of %u)\n" , fctx->name, fence, fctx->last_fence);return -EINVAL ; }
drivers/isdn/hardware/mISDN/mISDNipac.c +1 -1
@@ -710,7 +710,7 @@ isac_release(struct isac_hw *isac) {if (isac->type &IPAC_TYPE_ISACX )WriteISAC (isac,ISACX_MASK ,0xff ); -else +else if (isac->type !=0 )WriteISAC (isac,ISAC_MASK ,0xff );if (isac->dch.timer.function !=NULL ) {del_timer (&isac->dch.timer);
drivers/net/ethernet/marvell/pxa168_eth.c +1 -1
@@ -1564,8 +1564,8 @@ static int pxa168_eth_remove(struct platform_device *pdev)mdiobus_unregister (pep->smi_bus);mdiobus_free (pep->smi_bus); -unregister_netdev (dev);cancel_work_sync (&pep->tx_timeout_task); +unregister_netdev (dev);free_netdev (dev);return 0 ; }
drivers/platform/x86/intel-hid.c +7 -0
@@ -94,6 +94,13 @@ static const struct dmi_system_id button_array_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "HP Spectre x2 Detachable"), }, }, + { + .ident = "Lenovo ThinkPad X1 Tablet Gen 2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Tablet Gen 2"), + }, + }, { } };
drivers/platform/x86/thinkpad_acpi.c +7 -1
@@ -4102,13 +4102,19 @@ static bool hotkey_notify_6xxx(const u32 hkey,case TP_HKEY_EV_KEY_NUMLOCK :case TP_HKEY_EV_KEY_FN : -case TP_HKEY_EV_KEY_FN_ESC :/* key press events, we just ignore them as long as the EC * is still reporting them in the normal keyboard stream */ *send_acpi_ev = false; *ignore_acpi_ev = true;return true; +case TP_HKEY_EV_KEY_FN_ESC : +/* Get the media key status to foce the status LED to update */ +acpi_evalf (hkey_handle,NULL ,"GMKS" ,"v" ); + *send_acpi_ev = false; + *ignore_acpi_ev = true; +return true; +case TP_HKEY_EV_TABLET_CHANGED :tpacpi_input_send_tabletsw ();hotkey_tablet_mode_notify_change ();
drivers/target/target_core_pscsi.c +8 -0
@@ -970,6 +970,14 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,return 0 ; fail: +if (bio) +bio_put (bio); +while (req->bio) { + bio = req->bio; + req->bio = bio->bi_next; +bio_put (bio); + } + req->biotail =NULL ;return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE ; }
fs/cifs/file.c +1 -0
@@ -163,6 +163,7 @@ int cifs_posix_open(char *full_path, struct inode **pinode, goto posix_open_ret; } }else { +cifs_revalidate_mapping (*pinode);cifs_fattr_to_inode (*pinode, &fattr); }
fs/cifs/smb2misc.c +2 -2
@@ -738,8 +738,8 @@ smb2_is_valid_oplock_break(char *buffer, struct TCP_Server_Info *server) } }spin_unlock (&cifs_tcp_ses_lock); -cifs_dbg (FYI ,"Can not process oplock break for non-existent connection\n" ); -return false; +cifs_dbg (FYI ,"No file id matched, oplock break ignored\n" ); +return true; }void
init/Kconfig +1 -2
@@ -66,8 +66,7 @@ config INIT_ENV_ARG_LIMIT config COMPILE_TEST bool "Compile also drivers which will not load" - depends on !UML - default n + depends on HAS_IOMEM help Some drivers can be compiled on a different platform than they are intended to be run on. Despite they cannot be loaded there (or even
net/mac80211/main.c +12 -1
@@ -931,8 +931,19 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)continue ;if (!dflt_chandef.chan) { +/* +* Assign the first enabled channel to dflt_chandef +* from the list of channels +*/ +for (i =0 ; i < sband->n_channels; i++) +if (!(sband->channels[i].flags & +IEEE80211_CHAN_DISABLED )) +break ; +/* if none found then use the first anyway */ +if (i == sband->n_channels) + i =0 ;cfg80211_chandef_create (&dflt_chandef, - &sband->channels[0 ], + &sband->channels[i],NL80211_CHAN_NO_HT );/* init channel we're on */ if (!local->use_chanctx && !local->_oper_chandef.chan) {