Linux 5.4.145
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.145 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.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/arc/Kconfig | 1 arch/arc/include/asm/syscalls.h | 1 arch/arc/include/uapi/asm/unistd.h | 1 arch/arc/kernel/entry.S | 12 ++++++ arch/arc/kernel/process.c | 7 +-- arch/arc/kernel/sys.c | 1 arch/arm/kernel/Makefile | 6 ++- arch/arm/kernel/return_address.c | 4 -- arch/powerpc/boot/crt0.S | 3 - arch/x86/events/amd/ibs.c | 8 ++++ arch/x86/events/amd/iommu.c | 47 +++++++++++++----------- arch/x86/events/amd/power.c | 1 arch/x86/events/intel/pt.c | 2 - arch/x86/kernel/reboot.c | 3 + arch/xtensa/Kconfig | 2 - drivers/block/Kconfig | 4 +- drivers/block/cryptoloop.c | 2 + drivers/gpu/ipu-v3/ipu-cpmem.c | 30 +++++++-------- drivers/media/usb/stkwebcam/stk-webcam.c | 6 ++- drivers/net/ethernet/cadence/macb_ptp.c | 11 +++++ drivers/net/ethernet/qlogic/qed/qed_main.c | 7 +++ drivers/net/ethernet/qlogic/qede/qede_main.c | 2 - drivers/net/ethernet/realtek/r8169_main.c | 1 drivers/net/ethernet/xilinx/ll_temac_main.c | 4 -- drivers/pci/quirks.c | 12 +++--- drivers/reset/reset-zynqmp.c | 3 + drivers/usb/host/xhci-debugfs.c | 6 ++- drivers/usb/host/xhci-rcar.c | 7 +++ drivers/usb/host/xhci-trace.h | 8 ++-- drivers/usb/host/xhci.h | 52 ++++++++++++++------------- drivers/usb/mtu3/mtu3_gadget.c | 6 +-- drivers/usb/serial/mos7720.c | 4 +- fs/btrfs/inode.c | 2 - fs/crypto/hooks.c | 44 ++++++++++++++++++++++ fs/ext4/inline.c | 6 +++ fs/ext4/symlink.c | 11 +++++ fs/f2fs/namei.c | 11 +++++ fs/ubifs/file.c | 12 +++++- include/linux/fscrypt.h | 7 +++ kernel/kthread.c | 43 +++++++++++++++------- kernel/sched/fair.c | 2 - mm/page_alloc.c | 8 ++-- net/ipv4/icmp.c | 23 ++++++++++- net/ipv4/igmp.c | 2 + sound/core/pcm_lib.c | 2 - sound/pci/hda/patch_realtek.c | 10 +++++ sound/usb/quirks.c | 1 48 files changed, 320 insertions(+), 130 deletions(-)
Alexander Tsoy (1):
ALSA: usb-audio: Add registration quirk for JBL Quantum 800
Ben Dooks (1):
ARM: 8918/2: only build return_address() if needed
Christoph Hellwig (1):
cryptoloop: add a deprecation warning
Chunfeng Yun (2):
usb: mtu3: use @mult for HS isoc or intr
usb: mtu3: fix the wrong HS mult value
Eric Biggers (4):
fscrypt: add fscrypt_symlink_getattr() for computing st_size
ext4: report correct st_size for encrypted symlinks
f2fs: report correct st_size for encrypted symlinks
ubifs: report correct st_size for encrypted symlinks
Esben Haabendal (1):
net: ll_temac: Remove left-over debug message
Fangrui Song (1):
powerpc/boot: Delete unneeded .globl _zimage_start
Greg Kroah-Hartman (1):
Linux 5.4.145
Harini Katakam (1):
net: macb: Add a NULL check on desc_ptp
Hayes Wang (1):
Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables ASPM"
Kim Phillips (2):
perf/x86/amd/ibs: Work around erratum #1197
perf/x86/amd/power: Assign pmu.module
Krzysztof Hałasa (1):
gpu: ipu-v3: Fix i.MX IPU-v3 offset calculations for (semi)planar U/V formats
Liu Jian (1):
igmp: Add ip_mc_list lock in ip_check_mc_rcu
Marek Behún (1):
PCI: Call Max Payload Size-related fixup quirks early
Mathias Nyman (1):
xhci: fix unsafe memory usage in xhci tracing
Mathieu Desnoyers (1):
ipv4/icmp: l3mdev: Perform icmp error route lookup on source device routing table (v2)
Muchun Song (1):
mm/page_alloc: speed up the iteration of max_order
Paul Gortmaker (1):
x86/reboot: Limit Dell Optiplex 990 quirk to early BIOS versions
Pavel Skripkin (1):
media: stkwebcam: fix memory leak in stk_camera_probe
Peter Zijlstra (1):
kthread: Fix PF_KTHREAD vs to_kthread() race
Qu Wenruo (1):
Revert "btrfs: compression: don't try to compress if we don't have enough pages"
Randy Dunlap (1):
xtensa: fix kconfig unmet dependency warning for HAVE_FUTEX_CMPXCHG
Sai Krishna Potthuri (1):
reset: reset-zynqmp: Fixed the argument data type
Shai Malin (2):
qed: Fix the VF msix vectors flow
qede: Fix memset corruption
Suravee Suthikulpanit (1):
x86/events/amd/iommu: Fix invalid Perf result due to IOMMU PMC power-gating
Takashi Iwai (1):
ALSA: hda/realtek: Workaround for conflicting SSID on ASUS ROG Strix G17
Theodore Ts'o (1):
ext4: fix race writing to an inline_data file while its xattrs are changing
Tom Rix (1):
USB: serial: mos7720: improve OOM-handling in read_mos_reg()
Vineet Gupta (1):
ARC: wireup clone3 syscall
Xiaoyao Li (1):
perf/x86/intel/pt: Fix mask of num_address_ranges
Yoshihiro Shimoda (1):
usb: host: xhci-rcar: Don't reload firmware after the completion
Zubin Mithra (1):
ALSA: pcm: fix divide error in snd_pcm_lib_ioctl
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 144 +SUBLEVEL = 145 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arc/Kconfig +1 -0
@@ -29,6 +29,7 @@ config ARC select GENERIC_SMP_IDLE_THREAD select HAVE_ARCH_KGDB select HAVE_ARCH_TRACEHOOK + select HAVE_COPY_THREAD_TLS select HAVE_DEBUG_STACKOVERFLOW select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_IOREMAP_PROT
arch/arc/include/asm/syscalls.h +1 -0
@@ -11,6 +11,7 @@#include <linux/types.h> int sys_clone_wrapper (int ,int ,int ,int ,int ); +int sys_clone3_wrapper (void *,size_t );int sys_cacheflush (uint32_t ,uint32_t uint32_t);int sys_arc_settls (void *);int sys_arc_gettls (void );
arch/arc/include/uapi/asm/unistd.h +1 -0
@@ -21,6 +21,7 @@#define __ARCH_WANT_SET_GET_RLIMIT#define __ARCH_WANT_SYS_EXECVE#define __ARCH_WANT_SYS_CLONE +#define __ARCH_WANT_SYS_CLONE3#define __ARCH_WANT_SYS_VFORK#define __ARCH_WANT_SYS_FORK#define __ARCH_WANT_TIME32_SYSCALLS
arch/arc/kernel/entry.S +12 -0
@@ -35,6 +35,18 @@ ENTRY(sys_clone_wrapper) b .Lret_from_system_call END(sys_clone_wrapper) +ENTRY(sys_clone3_wrapper) + SAVE_CALLEE_SAVED_USER + bl @sys_clone3 + DISCARD_CALLEE_SAVED_USER + + GET_CURR_THR_INFO_FLAGS r10 + btst r10, TIF_SYSCALL_TRACE + bnz tracesys_exit + + b .Lret_from_system_call +END(sys_clone3_wrapper) + ENTRY(ret_from_fork) ; when the forked child comes here from the __switch_to function ; r0 has the last task pointer.
arch/arc/kernel/process.c +3 -4
@@ -171,9 +171,8 @@ asmlinkage void ret_from_fork(void);* | user_r25 | * ------------------ <===== END of PAGE */ -int copy_thread (unsigned long clone_flags, -unsigned long usp,unsigned long kthread_arg, -struct task_struct *p) +int copy_thread_tls (unsigned long clone_flags,unsigned long usp, +unsigned long kthread_arg,struct task_struct *p,unsigned long tls) {struct pt_regs *c_regs;/* child's pt_regs */ unsigned long *childksp;/* to unwind out of __switch_to() */
@@ -231,7 +230,7 @@ int copy_thread(unsigned long clone_flags,* set task's userland tls data ptr from 4th arg * clone C-lib call is difft from clone sys-call */ -task_thread_info (p)->thr_ptr = regs->r3; +task_thread_info (p)->thr_ptr = tls; }else {/* Normal fork case: set parent's TLS ptr in child */ task_thread_info(p)->thr_ptr =
arch/arc/kernel/sys.c +1 -0
@@ -7,6 +7,7 @@#include <asm/syscalls.h> #define sys_clone sys_clone_wrapper +#define sys_clone3 sys_clone3_wrapper#undef __SYSCALL#define __SYSCALL (nr, call) [nr] = (call),
arch/arm/kernel/Makefile +5 -1
@@ -17,10 +17,14 @@ CFLAGS_REMOVE_return_address.o = -pg # Object file lists. obj-y := elf.o entry-common.o irq.o opcodes.o \ - process.o ptrace.o reboot.o return_address.o \ + process.o ptrace.o reboot.o \ setup.o signal.o sigreturn_codes.o \ stacktrace.o sys_arm.o time.o traps.o +ifneq ($(CONFIG_ARM_UNWIND),y) +obj-$(CONFIG_FRAME_POINTER) += return_address.o +endif + obj-$(CONFIG_ATAGS) += atags_parse.o obj-$(CONFIG_ATAGS_PROC) += atags_proc.o obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o
arch/arm/kernel/return_address.c +0 -4
@@ -7,8 +7,6 @@*/ #include <linux/export.h> #include <linux/ftrace.h> - -#if defined(CONFIG_FRAME_POINTER ) && !defined(CONFIG_ARM_UNWIND )#include <linux/sched.h> #include <asm/stacktrace.h>
@@ -53,6 +51,4 @@ void *return_address(unsigned int level)return NULL ; } -#endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) */ -EXPORT_SYMBOL_GPL (return_address);
arch/powerpc/boot/crt0.S +0 -3
@@ -44,9 +44,6 @@ p_end: .long _end p_pstack: .long _platform_stack_top #endif - .globl _zimage_start - /* Clang appears to require the .weak directive to be after the symbol - * is defined. See https://bugs.llvm.org/show_bug.cgi?id=38921 */ .weak _zimage_start _zimage_start: .globl _zimage_start_lib
arch/x86/events/amd/ibs.c +8 -0
@@ -90,6 +90,7 @@ struct perf_ibs {unsigned long offset_mask[1 ];int offset_max; unsigned int fetch_count_reset_broken : 1; + unsigned int fetch_ignore_if_zero_rip : 1;struct cpu_perf_ibs __percpu *pcpu;struct attribute **format_attrs;
@@ -663,6 +664,10 @@ static int perf_ibs_handle_irq(struct perf_ibs *perf_ibs, struct pt_regs *iregs)if (check_rip && (ibs_data.regs[2 ] &IBS_RIP_INVALID )) { regs.flags &= ~PERF_EFLAGS_EXACT ; }else { +/* Workaround for erratum #1197 */ +if (perf_ibs->fetch_ignore_if_zero_rip && !(ibs_data.regs[1 ])) + goto out; +set_linear_ip (®s, ibs_data.regs[1 ]); regs.flags |=PERF_EFLAGS_EXACT ; }
@@ -756,6 +761,9 @@ static __init void perf_event_ibs_init(void)if (boot_cpu_data.x86 >=0x16 && boot_cpu_data.x86 <=0x18 ) perf_ibs_fetch.fetch_count_reset_broken =1 ; +if (boot_cpu_data.x86 ==0x19 && boot_cpu_data.x86_model <0x10 ) + perf_ibs_fetch.fetch_ignore_if_zero_rip =1 ; +perf_ibs_pmu_init (&perf_ibs_fetch,"ibs_fetch" );if (ibs_caps &IBS_CAPS_OPCNT ) {
arch/x86/events/amd/iommu.c +26 -21
85 lines not on this page · raw message
arch/x86/events/amd/power.c +1 -0
@@ -217,6 +217,7 @@ static struct pmu pmu_class = { .stop = pmu_event_stop, .read = pmu_event_read, .capabilities = PERF_PMU_CAP_NO_EXCLUDE, + .module = THIS_MODULE, };static int power_cpu_exit (unsigned int cpu)
arch/x86/events/intel/pt.c +1 -1
@@ -62,7 +62,7 @@ static struct pt_cap_desc {PT_CAP (single_range_output,0 ,CPUID_ECX ,BIT (2 )),PT_CAP (output_subsys,0 ,CPUID_ECX ,BIT (3 )),PT_CAP (payloads_lip,0 ,CPUID_ECX ,BIT (31 )), -PT_CAP (num_address_ranges,1 ,CPUID_EAX ,0x3 ), +PT_CAP (num_address_ranges,1 ,CPUID_EAX ,0x7 ),PT_CAP (mtc_periods,1 ,CPUID_EAX ,0xffff0000 ),PT_CAP (cycle_thresholds,1 ,CPUID_EBX ,0xffff ), PT_CAP(psb_periods, 1, CPUID_EBX, 0xffff0000),
arch/x86/kernel/reboot.c +2 -1
@@ -388,10 +388,11 @@ static const struct dmi_system_id reboot_dmi_table[] __initconst = { }, {/* Handle problems with rebooting on the OptiPlex 990. */ .callback = set_pci_reboot, - .ident = "Dell OptiPlex 990", + .ident = "Dell OptiPlex 990 BIOS A0x", .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Dell Inc." ),DMI_MATCH (DMI_PRODUCT_NAME ,"OptiPlex 990" ), + DMI_MATCH(DMI_BIOS_VERSION, "A0"), }, }, { /* Handle problems with rebooting on Dell 300's */
arch/xtensa/Kconfig +1 -1
@@ -27,7 +27,7 @@ config XTENSA select HAVE_DMA_CONTIGUOUS select HAVE_EXIT_THREAD select HAVE_FUNCTION_TRACER - select HAVE_FUTEX_CMPXCHG if !MMU + select HAVE_FUTEX_CMPXCHG if !MMU && FUTEX select HAVE_HW_BREAKPOINT if PERF_EVENTS select HAVE_IRQ_TIME_ACCOUNTING select HAVE_OPROFILE
drivers/block/Kconfig +2 -2
@@ -230,7 +230,7 @@ config BLK_DEV_LOOP_MIN_COUNT dynamically allocated with the /dev/loop-control interface. config BLK_DEV_CRYPTOLOOP - tristate "Cryptoloop Support" + tristate "Cryptoloop Support (DEPRECATED)" select CRYPTO select CRYPTO_CBC depends on BLK_DEV_LOOP
@@ -242,7 +242,7 @@ config BLK_DEV_CRYPTOLOOP WARNING: This device is not safe for journaled file systems like ext3 or Reiserfs. Please use the Device Mapper crypto module instead, which can be configured to be on-disk compatible with the - cryptoloop device. + cryptoloop device. cryptoloop support will be removed in Linux 5.16. source "drivers/block/drbd/Kconfig"
drivers/block/cryptoloop.c +2 -0
@@ -189,6 +189,8 @@ init_cryptoloop(void)if (rc)printk (KERN_ERR "cryptoloop: loop_register_transfer failed\n" ); +else +pr_warn ("the cryptoloop driver has been deprecated and will be removed in in Linux 5.16\n" );return rc; }
drivers/gpu/ipu-v3/ipu-cpmem.c +15 -15
@@ -585,21 +585,21 @@ static const struct ipu_rgb def_bgra_16 = { .bits_per_pixel = 16, }; -#define Y_OFFSET (pix, x, y) ((x) + pix->width * (y)) -#define U_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * ((y) / 2) / 2) + (x) / 2) -#define V_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * pix->height / 4) + \ - (pix->width * ((y) / 2) / 2) + (x) / 2) -#define U2_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * (y) / 2) + (x) / 2) -#define V2_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * pix->height / 2) + \ - (pix->width * (y) / 2) + (x) / 2) -#define UV_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * ((y) / 2)) + (x)) -#define UV2_OFFSET (pix, x, y) ((pix->width * pix->height) + \ - (pix->width * y) + (x)) +#define Y_OFFSET (pix, x, y) ((x) + pix->bytesperline * (y)) +#define U_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * ((y) / 2) / 2) + (x) / 2) +#define V_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * pix->height / 4) + \ + (pix->bytesperline * ((y) / 2) / 2) + (x) / 2) +#define U2_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * (y) / 2) + (x) / 2) +#define V2_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * pix->height / 2) + \ + (pix->bytesperline * (y) / 2) + (x) / 2) +#define UV_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * ((y) / 2)) + (x)) +#define UV2_OFFSET (pix, x, y) ((pix->bytesperline * pix->height) + \ + (pix->bytesperline * y) + (x))#define NUM_ALPHA_CHANNELS 7
drivers/media/usb/stkwebcam/stk-webcam.c +4 -2
@@ -1346,7 +1346,7 @@ static int stk_camera_probe(struct usb_interface *interface,if (!dev->isoc_ep) {pr_err ("Could not find isoc-in endpoint\n" ); err = -ENODEV ; - goto error; + goto error_put; } dev->vsettings.palette =V4L2_PIX_FMT_RGB565 ; dev->vsettings.mode =MODE_VGA ;
@@ -1359,10 +1359,12 @@ static int stk_camera_probe(struct usb_interface *interface, err =stk_register_video_device (dev);if (err) - goto error; + goto error_put;return 0 ; +error_put: +usb_put_intf (interface); error:v4l2_ctrl_handler_free (hdl);v4l2_device_unregister (&dev->v4l2_dev);
drivers/net/ethernet/cadence/macb_ptp.c +10 -1
@@ -275,6 +275,12 @@ void gem_ptp_rxstamp(struct macb *bp, struct sk_buff *skb,if (GEM_BFEXT (DMA_RXVALID , desc->addr)) { desc_ptp =macb_ptp_desc (bp, desc); +/* Unlikely but check */ +if (!desc_ptp) { +dev_warn_ratelimited (&bp->pdev->dev, +"Timestamp not supported in BD\n" ); +return ; + }gem_hw_timestamp (bp, desc_ptp->ts_1, desc_ptp->ts_2, &ts);memset (shhwtstamps,0 ,sizeof (struct skb_shared_hwtstamps )); shhwtstamps->hwtstamp =ktime_set (ts.tv_sec, ts.tv_nsec);
@@ -307,8 +313,11 @@ int gem_ptp_txstamp(struct macb_queue *queue, struct sk_buff *skb,if (CIRC_SPACE (head, tail,PTP_TS_BUFFER_SIZE ) ==0 )return -ENOMEM ; -skb_shinfo (skb)->tx_flags |=SKBTX_IN_PROGRESS ; desc_ptp =macb_ptp_desc (queue->bp, desc); +/* Unlikely but check */ +if (!desc_ptp) +return -EINVAL ; +skb_shinfo (skb)->tx_flags |=SKBTX_IN_PROGRESS ; tx_timestamp = &queue->tx_timestamps[head]; tx_timestamp->skb = skb;/* ensure ts_1/ts_2 is loaded after ctrl (TX_USED check) */
drivers/net/ethernet/qlogic/qed/qed_main.c +6 -1
@@ -559,7 +559,12 @@ static int qed_enable_msix(struct qed_dev *cdev, rc = cnt; } -if (rc >0 ) { +/* For VFs, we should return with an error in case we didn't get the +* exact number of msix vectors as we requested. +* Not doing that will lead to a crash when starting queues for +* this VF. +*/ +if ((IS_PF (cdev) && rc >0 ) || (IS_VF (cdev) && rc == cnt)) {/* MSI-x configuration was achieved */ int_params->out.int_mode =QED_INT_MODE_MSIX ; int_params->out.num_vectors = rc;
drivers/net/ethernet/qlogic/qede/qede_main.c +1 -1
@@ -1773,6 +1773,7 @@ static void qede_sync_free_irqs(struct qede_dev *edev) } edev->int_info.used_cnt =0 ; + edev->int_info.msix_cnt =0 ; }static int qede_req_msix_irqs (struct qede_dev *edev)
@@ -2317,7 +2318,6 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode, goto out; err4:qede_sync_free_irqs (edev); -memset (&edev->int_info.msix_cnt,0 ,sizeof (struct qed_int_info )); err3:qede_napi_disable_remove (edev); err2:
drivers/net/ethernet/realtek/r8169_main.c +1 -0
@@ -4713,6 +4713,7 @@ static void rtl_hw_start_8168g(struct rtl8169_private *tp)rtl_eri_clear_bits (tp,0x1b0 ,ERIAR_MASK_0011 ,BIT (12 ));rtl_pcie_state_l2l3_disable (tp); +rtl_hw_aspm_clkreq_enable (tp, true); }static void rtl_hw_start_8168g_1 (struct rtl8169_private *tp)
drivers/net/ethernet/xilinx/ll_temac_main.c +1 -3
@@ -939,10 +939,8 @@ temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)wmb (); lp->dma_out (lp,TX_TAILDESC_PTR , tail_p);/* DMA start */ -if (temac_check_tx_bd_space (lp,MAX_SKB_FRAGS +1 )) { -netdev_info (ndev,"%s -> netif_stop_queue\n" , __func__); +if (temac_check_tx_bd_space (lp,MAX_SKB_FRAGS +1 ))netif_stop_queue (ndev); - }return NETDEV_TX_OK ; }
drivers/pci/quirks.c +6 -6
@@ -3246,12 +3246,12 @@ static void fixup_mpss_256(struct pci_dev *dev) { dev->pcie_mpss =1 ;/* 256 bytes */ } -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0 , fixup_mpss_256); -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1 , fixup_mpss_256); -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000B , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0 , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1 , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000B , fixup_mpss_256);/* * Intel 5000 and 5100 Memory controllers have an erratum with read completion
drivers/reset/reset-zynqmp.c +2 -1
@@ -46,7 +46,8 @@ static int zynqmp_reset_status(struct reset_controller_dev *rcdev, unsigned long id) {struct zynqmp_reset_data *priv =to_zynqmp_reset_data (rcdev); -int val, err; +int err; +u32 val; err = priv->eemi_ops->reset_get_status (ZYNQMP_RESET_ID + id, &val);if (err)
drivers/usb/host/xhci-debugfs.c +4 -2
@@ -197,12 +197,13 @@ static void xhci_ring_dump_segment(struct seq_file *s,int i;dma_addr_t dma;union xhci_trb *trb; +char str[XHCI_MSG_MAX ];for (i =0 ; i <TRBS_PER_SEGMENT ; i++) { trb = &seg->trbs[i]; dma = seg->dma + i *sizeof (*trb);seq_printf (s,"%pad: %s\n" , &dma, -xhci_decode_trb (le32_to_cpu (trb->generic.field[0 ]), +xhci_decode_trb (str,XHCI_MSG_MAX ,le32_to_cpu (trb->generic.field[0 ]),le32_to_cpu (trb->generic.field[1 ]),le32_to_cpu (trb->generic.field[2 ]),le32_to_cpu (trb->generic.field[3 ])));
@@ -340,9 +341,10 @@ static int xhci_portsc_show(struct seq_file *s, void *unused) {struct xhci_port *port = s->private;u32 portsc; +char str[XHCI_MSG_MAX ]; portsc =readl (port->addr); -seq_printf (s,"%s\n" ,xhci_decode_portsc (portsc)); +seq_printf (s,"%s\n" ,xhci_decode_portsc (str, portsc));return 0 ; }
drivers/usb/host/xhci-rcar.c +7 -0
@@ -134,6 +134,13 @@ static int xhci_rcar_download_firmware(struct usb_hcd *hcd)const struct soc_device_attribute *attr;const char *firmware_name; +/* +* According to the datasheet, "Upon the completion of FW Download, +* there is no need to write or reload FW". +*/ +if (readl (regs +RCAR_USB3_DL_CTRL ) &RCAR_USB3_DL_CTRL_FW_SUCCESS ) +return 0 ; + attr =soc_device_match (rcar_quirks_match);if (attr) quirks = (uintptr_t )attr->data;
drivers/usb/host/xhci-trace.h +4 -4
@@ -25,8 +25,6 @@#include "xhci.h" #include "xhci-dbgcap.h" -#define XHCI_MSG_MAX 500 - DECLARE_EVENT_CLASS(xhci_log_msg, TP_PROTO(struct va_format *vaf), TP_ARGS(vaf),
@@ -122,6 +120,7 @@ DECLARE_EVENT_CLASS(xhci_log_trb, __field(u32, field1) __field(u32, field2) __field(u32, field3) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->type = ring->type;
@@ -131,7 +130,7 @@ DECLARE_EVENT_CLASS(xhci_log_trb, __entry->field3 =le32_to_cpu (trb->field[3 ]); ),TP_printk ("%s: %s" ,xhci_ring_type_string (__entry->type), -xhci_decode_trb (__entry->field0, __entry->field1, +xhci_decode_trb (__get_str (str),XHCI_MSG_MAX , __entry->field0, __entry->field1, __entry->field2, __entry->field3) ) );
@@ -523,6 +522,7 @@ DECLARE_EVENT_CLASS(xhci_log_portsc,TP_STRUCT__entry (__field (u32 ,portnum )__field (u32, portsc) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->portnum = portnum;
@@ -530,7 +530,7 @@ DECLARE_EVENT_CLASS(xhci_log_portsc, ),TP_printk ("port-%d: %s" , __entry->portnum, -xhci_decode_portsc (__entry->portsc) +xhci_decode_portsc (__get_str (str), __entry->portsc) ) );
drivers/usb/host/xhci.h +28 -24
184 lines not on this page · raw message
drivers/usb/mtu3/mtu3_gadget.c +2 -4
@@ -72,14 +72,12 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)u32 interval =0 ;u32 mult =0 ;u32 burst =0 ; -int max_packet;int ret; desc = mep->desc; comp_desc = mep->comp_desc; mep->type =usb_endpoint_type (desc); - max_packet =usb_endpoint_maxp (desc); - mep->maxp = max_packet &GENMASK (10 ,0 ); + mep->maxp =usb_endpoint_maxp (desc);switch (mtu->g.speed) {case USB_SPEED_SUPER :
@@ -100,7 +98,7 @@ static int mtu3_ep_enable(struct mtu3_ep *mep) usb_endpoint_xfer_int(desc)) { interval = desc->bInterval; interval =clamp_val (interval,1 ,16 ) -1 ; - burst = (max_packet &GENMASK (12 ,11 )) >>11 ; + mult =usb_endpoint_maxp_mult (desc) -1 ; }break ;default :
drivers/usb/serial/mos7720.c +3 -1
@@ -226,8 +226,10 @@ static int read_mos_reg(struct usb_serial *serial, unsigned int serial_portnum,int status; buf =kmalloc (1 ,GFP_KERNEL ); -if (!buf) +if (!buf) { + *data =0 ;return -ENOMEM ; + } status =usb_control_msg (usbdev, pipe, request, requesttype, value, index, buf,1 ,MOS_WDR_TIMEOUT );
fs/btrfs/inode.c +1 -1
@@ -543,7 +543,7 @@ static noinline int compress_file_range(struct async_chunk *async_chunk)* inode has not been flagged as nocompress. This flag can * change at any time if we discover bad compression ratios. */ -if (nr_pages >1 &&inode_need_compress (inode, start, end)) { +if (inode_need_compress (inode, start, end)) {WARN_ON (pages); pages =kcalloc (nr_pages,sizeof (struct page *),GFP_NOFS );if (!pages) {
fs/crypto/hooks.c +44 -0
47 lines not on this page · raw message
fs/ext4/inline.c +6 -0
@@ -750,6 +750,12 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,ext4_write_lock_xattr (inode, &no_expand);BUG_ON (!ext4_has_inline_data (inode)); +/* +* ei->i_inline_off may have changed since ext4_write_begin() +* called ext4_try_to_write_inline_data() +*/ + (void )ext4_find_inline_data_nolock (inode); + kaddr =kmap_atomic (page);ext4_write_inline_data (inode, &iloc, kaddr, pos, len);kunmap_atomic (kaddr);
fs/ext4/symlink.c +10 -1
@@ -52,10 +52,19 @@ static const char *ext4_encrypted_get_link(struct dentry *dentry,return paddr; } +static int ext4_encrypted_symlink_getattr (const struct path *path, +struct kstat *stat,u32 request_mask, +unsigned int query_flags) +{ +ext4_getattr (path, stat, request_mask, query_flags); + +return fscrypt_symlink_getattr (path, stat); +} +const struct inode_operations ext4_encrypted_symlink_inode_operations = { .get_link = ext4_encrypted_get_link, .setattr = ext4_setattr, - .getattr = ext4_getattr, + .getattr = ext4_encrypted_symlink_getattr, .listxattr = ext4_listxattr, };
fs/f2fs/namei.c +10 -1
@@ -1256,9 +1256,18 @@ static const char *f2fs_encrypted_get_link(struct dentry *dentry,return target; } +static int f2fs_encrypted_symlink_getattr (const struct path *path, +struct kstat *stat,u32 request_mask, +unsigned int query_flags) +{ +f2fs_getattr (path, stat, request_mask, query_flags); + +return fscrypt_symlink_getattr (path, stat); +} +const struct inode_operations f2fs_encrypted_symlink_inode_operations = { .get_link = f2fs_encrypted_get_link, - .getattr = f2fs_getattr, + .getattr = f2fs_encrypted_symlink_getattr, .setattr = f2fs_setattr, #ifdef CONFIG_F2FS_FS_XATTR .listxattr = f2fs_listxattr,
fs/ubifs/file.c +11 -1
@@ -1629,6 +1629,16 @@ static const char *ubifs_get_link(struct dentry *dentry,return fscrypt_get_symlink (inode, ui->data, ui->data_len, done); } +static int ubifs_symlink_getattr (const struct path *path,struct kstat *stat, +u32 request_mask,unsigned int query_flags) +{ +ubifs_getattr (path, stat, request_mask, query_flags); + +if (IS_ENCRYPTED (d_inode (path->dentry))) +return fscrypt_symlink_getattr (path, stat); +return 0 ; +} +const struct address_space_operations ubifs_file_address_operations = { .readpage = ubifs_readpage, .writepage = ubifs_writepage,
@@ -1654,7 +1664,7 @@ const struct inode_operations ubifs_file_inode_operations = {const struct inode_operations ubifs_symlink_inode_operations = { .get_link = ubifs_get_link, .setattr = ubifs_setattr, - .getattr = ubifs_getattr, + .getattr = ubifs_symlink_getattr, #ifdef CONFIG_UBIFS_FS_XATTR .listxattr = ubifs_listxattr, #endif
include/linux/fscrypt.h +7 -0
@@ -298,6 +298,7 @@ extern int __fscrypt_encrypt_symlink(struct inode *inode, const char *target,extern const char *fscrypt_get_symlink (struct inode *inode,const void *caddr,unsigned int max_size,struct delayed_call *done); +int fscrypt_symlink_getattr (const struct path *path,struct kstat *stat);static inline void fscrypt_set_ops (struct super_block *sb,const struct fscrypt_operations *s_cop) {
@@ -585,6 +586,12 @@ static inline const char *fscrypt_get_symlink(struct inode *inode,return ERR_PTR (-EOPNOTSUPP ); } +static inline int fscrypt_symlink_getattr (const struct path *path, +struct kstat *stat) +{ +return -EOPNOTSUPP ; +} +static inline void fscrypt_set_ops (struct super_block *sb,const struct fscrypt_operations *s_cop) {
kernel/kthread.c +29 -14
78 lines not on this page · raw message
kernel/sched/fair.c +1 -1
@@ -7301,7 +7301,7 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env)return 0 ;/* Disregard pcpu kthreads; they are where they need to be. */ -if ((p->flags &PF_KTHREAD ) &&kthread_is_per_cpu (p)) +if (kthread_is_per_cpu (p))return 0 ;if (!cpumask_test_cpu (env->dst_cpu, p->cpus_ptr)) {
mm/page_alloc.c +4 -4
@@ -906,7 +906,7 @@ static inline void __free_one_page(struct page *page,unsigned int max_order;struct capture_control *capc =task_capc (zone); - max_order = min_t(unsigned int, MAX_ORDER, pageblock_order + 1); + max_order = min_t(unsigned int, MAX_ORDER - 1, pageblock_order);VM_BUG_ON (!zone_is_initialized (zone));VM_BUG_ON_PAGE (page->flags &PAGE_FLAGS_CHECK_AT_PREP , page);
@@ -919,7 +919,7 @@ static inline void __free_one_page(struct page *page,VM_BUG_ON_PAGE (bad_range (zone, page), page); continue_merging: -while (order < max_order -1 ) { +while (order < max_order) {if (compaction_capture (capc, page, order, migratetype)) {__mod_zone_freepage_state (zone, -(1 << order), migratetype);
@@ -945,7 +945,7 @@ static inline void __free_one_page(struct page *page, pfn = combined_pfn; order++; } -if (max_order <MAX_ORDER ) { +if (order <MAX_ORDER -1 ) {/* If we are here, it means order is >= pageblock_order. * We want to prevent merge between freepages on isolate * pageblock and normal pageblock. Without this, pageblock
@@ -966,7 +966,7 @@ static inline void __free_one_page(struct page *page, is_migrate_isolate(buddy_mt))) goto done_merging; } - max_order++; + max_order = order +1 ; goto continue_merging; }
net/ipv4/icmp.c +21 -2
@@ -460,6 +460,23 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)local_bh_enable (); } +/* +* The device used for looking up which routing table to use for sending an ICMP +* error is preferably the source whenever it is set, which should ensure the +* icmp error can be sent to the source host, else lookup using the routing +* table of the destination device, else use the main routing table (index 0). +*/ +static struct net_device *icmp_get_route_lookup_dev (struct sk_buff *skb) +{ +struct net_device *route_lookup_dev =NULL ; + +if (skb->dev) + route_lookup_dev = skb->dev; +else if (skb_dst (skb)) + route_lookup_dev =skb_dst (skb)->dev; +return route_lookup_dev; +} + static struct rtable *icmp_route_lookup(struct net *net, struct flowi4 *fl4, struct sk_buff *skb_in,
@@ -468,6 +485,7 @@ static struct rtable *icmp_route_lookup(struct net *net, int type, int code, struct icmp_bxm *param) { + struct net_device *route_lookup_dev;struct rtable *rt, *rt2;struct flowi4 fl4_dec;int err;
@@ -482,7 +500,8 @@ static struct rtable *icmp_route_lookup(struct net *net, fl4->flowi4_proto =IPPROTO_ICMP ; fl4->fl4_icmp_type = type; fl4->fl4_icmp_code = code; - fl4->flowi4_oif =l3mdev_master_ifindex (skb_dst (skb_in)->dev); + route_lookup_dev =icmp_get_route_lookup_dev (skb_in); + fl4->flowi4_oif =l3mdev_master_ifindex (route_lookup_dev);security_skb_classify_flow (skb_in,flowi4_to_flowi (fl4)); rt =ip_route_output_key_hash (net, fl4, skb_in);
@@ -506,7 +525,7 @@ static struct rtable *icmp_route_lookup(struct net *net,if (err) goto relookup_failed; -if (inet_addr_type_dev_table (net,skb_dst (skb_in)->dev, +if (inet_addr_type_dev_table (net, route_lookup_dev, fl4_dec.saddr) ==RTN_LOCAL ) { rt2 =__ip_route_output_key (net, &fl4_dec);if (IS_ERR (rt2))
net/ipv4/igmp.c +2 -0
@@ -2730,6 +2730,7 @@ int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u rv =1 ; }else if (im) {if (src_addr) { +spin_lock_bh (&im->lock);for (psf = im->sources; psf; psf = psf->sf_next) {if (psf->sf_inaddr == src_addr)break ;
@@ -2740,6 +2741,7 @@ int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u im->sfcount[MCAST_EXCLUDE ]; else rv = im->sfcount[MCAST_EXCLUDE ] !=0 ; +spin_unlock_bh (&im->lock); }else rv =1 ;/* unspecified source; tentatively allow */ }
sound/core/pcm_lib.c +1 -1
@@ -1736,7 +1736,7 @@ static int snd_pcm_lib_ioctl_fifo_size(struct snd_pcm_substream *substream, channels =params_channels (params); frame_size =snd_pcm_format_size (format, channels);if (frame_size >0 ) - params->fifo_size /= (unsigned )frame_size; + params->fifo_size /= frame_size; }return 0 ; }
sound/pci/hda/patch_realtek.c +10 -0
@@ -9160,6 +9160,16 @@ static int patch_alc269(struct hda_codec *codec)snd_hda_pick_fixup (codec, alc269_fixup_models, alc269_fixup_tbl, alc269_fixups); +/* FIXME: both TX300 and ROG Strix G17 have the same SSID, and +* the quirk breaks the latter (bko#214101). +* Clear the wrong entry. +*/ +if (codec->fixup_id ==ALC282_FIXUP_ASUS_TX300 && + codec->core.vendor_id ==0x10ec0294 ) { +codec_dbg (codec,"Clear wrong fixup for ASUS ROG Strix G17\n" ); + codec->fixup_id =HDA_FIXUP_ID_NOT_SET ; + } +snd_hda_pick_pin_fixup (codec, alc269_pin_fixup_tbl, alc269_fixups, true);snd_hda_pick_pin_fixup (codec, alc269_fallback_pin_fixup_tbl, alc269_fixups, false); snd_hda_pick_fixup(codec, NULL, alc269_fixup_vendor_tbl,
sound/usb/quirks.c +1 -0
@@ -1841,6 +1841,7 @@ static const struct registration_quirk registration_quirks[] = {REG_QUIRK_ENTRY (0x0951 ,0x16ed ,2 ),/* Kingston HyperX Cloud Alpha S */ REG_QUIRK_ENTRY (0x0951 ,0x16ea ,2 ),/* Kingston HyperX Cloud Flight S */ REG_QUIRK_ENTRY (0x0ecb ,0x1f46 ,2 ),/* JBL Quantum 600 */ +REG_QUIRK_ENTRY (0x0ecb ,0x1f47 ,2 ),/* JBL Quantum 800 */ REG_QUIRK_ENTRY (0x0ecb ,0x2039 ,2 ),/* JBL Quantum 400 */ REG_QUIRK_ENTRY (0x0ecb ,0x203c ,2 ),/* JBL Quantum 600 */ REG_QUIRK_ENTRY(0x0ecb, 0x203e, 2), /* JBL Quantum 800 */