diff --git a/debian/changelog b/debian/changelog index f6625c3ad..27a122f4d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -linux (4.19.86-1) UNRELEASED; urgency=medium +linux (4.19.87-1) UNRELEASED; urgency=medium * New upstream stable update: https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.68 @@ -2165,6 +2165,314 @@ linux (4.19.86-1) UNRELEASED; urgency=medium PR KVM - mmc: tmio: fix SCC error handling to avoid false positive CRC error - [x86] resctrl: Fix rdt_find_domain() return value and checks + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.87 + - mlxsw: spectrum_router: Fix determining underlay for a GRE tunnel + - net/mlx4_en: fix mlx4 ethtool -N insertion + - net/mlx4_en: Fix wrong limitation for number of TX rings + - net: rtnetlink: prevent underflows in do_setvfinfo() + - net/sched: act_pedit: fix WARN() in the traffic path + - net: sched: ensure opts_len <= IP_TUNNEL_OPTS_MAX in act_tunnel_key + - sfc: Only cancel the PPS workqueue if it exists + - net/mlx5e: Fix set vf link state error flow + - net/mlxfw: Verify FSM error code translation doesn't exceed array size + - net/mlx5: Fix auto group size calculation + - vhost/vsock: split packets to send using multiple buffers + - gpio: max77620: Fixup debounce delays + - tools: gpio: Correctly add make dependencies for gpio_utils + - nbd:fix memory leak in nbd_get_socket() + - virtio_console: allocate inbufs in add_port() only if it is needed + - Revert "fs: ocfs2: fix possible null-pointer dereferences in + ocfs2_xa_prepare_entry()" + - mm/ksm.c: don't WARN if page is still mapped in remove_stable_node() + - [x86] drm/amd/powerplay: issue no PPSMC_MSG_GetCurrPkgPwr on unsupported + ASICs + - [x86] drm/i915/pmu: "Frequency" is reported as accumulated cycles + - [x86] drm/i915/userptr: Try to acquire the page lock around + set_page_dirty() + - mwifiex: Fix NL80211_TX_POWER_LIMITED + - ALSA: isight: fix leak of reference to firewire unit in error path of + .probe callback + - crypto: testmgr - fix sizeof() on COMP_BUF_SIZE + - printk: lock/unlock console only for new logbuf entries + - printk: fix integer overflow in setup_log_buf() + - pinctrl: madera: Fix uninitialized variable bug in madera_mux_set_mux + - PCI: cadence: Write MSI data with 32bits + - gfs2: Fix marking bitmaps non-full + - pty: fix compat ioctls + - synclink_gt(): fix compat_ioctl() + - [ppc64] Fix signedness bug in update_flash_db() + - [powerpc] boot: Fix opal console in boot wrapper + - [ppc64*,powerpc] boot: Disable vector instructions + - [ppc64*,powerpc] eeh: Fix null deref for devices removed during EEH + - [ppc64*,powerpc] eeh: Fix use of EEH_PE_KEEP on wrong field + - EDAC, thunderx: Fix memory leak in thunderx_l2c_threaded_isr() + - mt76: do not store aggregation sequence number for null-data frames + - mt76x0: phy: fix restore phase in mt76x0_phy_recalibrate_after_assoc + - brcmsmac: AP mode: update beacon when TIM changes + - ath10k: set probe request oui during driver start + - ath10k: allocate small size dma memory in ath10k_pci_diag_write_mem + - skd: fixup usage of legacy IO API + - cdrom: don't attempt to fiddle with cdo->capability + - spi: sh-msiof: fix deferred probing + - mmc: mediatek: fill the actual clock for mmc debugfs + - mmc: mediatek: fix cannot receive new request when msdc_cmd_is_ready fail + - PCI: mediatek: Fix class type for MT7622 to PCI_CLASS_BRIDGE_PCI + - btrfs: defrag: use btrfs_mod_outstanding_extents in + cluster_pages_for_defrag + - btrfs: handle error of get_old_root + - gsmi: Fix bug in append_to_eventlog sysfs handler + - misc: mic: fix a DMA pool free failure + - w1: IAD Register is yet readable trough iad sys file. Fix snprintf (%u + for unsigned, count for max size). + - [m68k] fix command-line parsing when passed from u-boot + - RDMA/bnxt_re: Avoid NULL check after accessing the pointer + - RDMA/bnxt_re: Fix qp async event reporting + - RDMA/bnxt_re: Avoid resource leak in case the NQ registration fails + - pinctrl: sunxi: Fix a memory leak in 'sunxi_pinctrl_build_state()' + - pwm: lpss: Only set update bit if we are actually changing the settings + - amiflop: clean up on errors during setup + - qed: Align local and global PTT to propagate through the APIs. + - scsi: ips: fix missing break in switch + - nfp: bpf: protect against mis-initializing atomic counters + - [x86] KVM: nVMX: reset cache/shadows when switching loaded VMCS + - [x86] KVM: nVMX: move check_vmentry_postreqs() call to + nested_vmx_enter_non_root_mode() + - [x86] KVM: Fix invvpid and invept register operand size in 64-bit mode + - clk: tegra: Fixes for MBIST work around + - scsi: isci: Use proper enumerated type in atapi_d2h_reg_frame_handler + - scsi: isci: Change sci_controller_start_task's return type to sci_status + - scsi: bfa: Avoid implicit enum conversion in bfad_im_post_vendor_event + - scsi: iscsi_tcp: Explicitly cast param in iscsi_sw_tcp_host_get_param + - nvmet: avoid integer overflow in the discard code + - nvmet-fcloop: suppress a compiler warning + - nvme-pci: fix hot removal during error handling + - PCI: mediatek: Fixup MSI enablement logic by enabling MSI before clocks + - clk: mmp2: fix the clock id for sdh2_clk and sdh3_clk + - ASoC: tegra_sgtl5000: fix device_node refcounting + - scsi: dc395x: fix dma API usage in srb_done + - scsi: dc395x: fix DMA API usage in sg_update_list + - scsi: zorro_esp: Limit DMA transfers to 65535 bytes + - net: dsa: mv88e6xxx: Fix 88E6141/6341 2500mbps SERDES speed + - net: fix warning in af_unix + - xfs: fix use-after-free race in xfs_buf_rele + - xfs: clear ail delwri queued bufs on unmount of shutdown fs + - kprobes, x86/ptrace.h: Make regs_get_kernel_stack_nth() not fault on + bad stack + - ACPI / scan: Create platform device for INT33FE ACPI nodes + - PM / Domains: Deal with multiple states but no governor in genpd + - ALSA: i2c/cs8427: Fix int to char conversion + - macintosh/windfarm_smu_sat: Fix debug output + - PCI: vmd: Detach resources after stopping root bus + - USB: misc: appledisplay: fix backlight update_status return code + - usbip: tools: fix atoi() on non-null terminated string + - sctp: use sk_wmem_queued to check for writable space + - dm raid: avoid bitmap with raid4/5/6 journal device + - selftests/bpf: fix file resource leak in load_kallsyms + - SUNRPC: Fix a compile warning for cmpxchg64() + - sunrpc: safely reallow resvport min/max inversion + - atm: zatm: Fix empty body Clang warnings + - [s390x] perf: Return error when debug_register fails + - swiotlb: do not panic on mapping failures + - spi: omap2-mcspi: Set FIFO DMA trigger level to word length + - [x86] intel_rdt: Prevent pseudo-locking from using stale pointers + - sparc: Fix parport build warnings. + - [ppc64*,powerpc] pseries: Export raw per-CPU VPA data via debugfs + - [ppc64*,powerpc] mm/radix: Fix off-by-one in split mapping logic + - [ppc64*,powerpc] mm/radix: Fix overuse of small pages in splitting logic + - [ppc64*,powerpc] mm/radix: Fix small page at boundary when splitting + - [ppc64*] radix: Fix radix__flush_tlb_collapsed_pmd double flushing pmd + - selftests/bpf: fix return value comparison for tests in test_libbpf.sh + - tools: bpftool: fix completion for "bpftool map update" + - ceph: fix dentry leak in ceph_readdir_prepopulate + - ceph: only allow punch hole mode in fallocate + - thermal: armada: fix a test in probe() + - f2fs: fix to spread clear_cold_data() + - f2fs: spread f2fs_set_inode_flags() + - mISDN: Fix type of switch control variable in ctrl_teimanager + - qlcnic: fix a return in qlcnic_dcb_get_capability() + - net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode + - mfd: arizona: Correct calling of runtime_put_sync + - mfd: mc13xxx-core: Fix PMIC shutdown when reading ADC values + - [x86] mfd: intel_soc_pmic_bxtwc: Chain power button IRQs as well + - mfd: max8997: Enale irq-wakeup unconditionally + - net: socionext: Stop PHY before resetting netsec + - fs/cifs: fix uninitialised variable warnings + - spi: uniphier: fix incorrect property items + - selftests/ftrace: Fix to test kprobe $comm arg only if available + - selftests: watchdog: fix message when /dev/watchdog open fails + - selftests: watchdog: Fix error message. + - selftests: kvm: Fix -Wformat warnings + - selftests: fix warning: "_GNU_SOURCE" redefined + - net: ethernet: cadence: fix socket buffer corruption problem + - bpf: devmap: fix wrong interface selection in notifier_call + - bpf, btf: fix a missing check bug in btf_parse + - [sparc64] Rework xchg() definition to avoid warnings. + - [arm64] lib: use C string functions with KASAN enabled + - fs/ocfs2/dlm/dlmdebug.c: fix a sleep-in-atomic-context bug in + dlm_print_one_mle() + - mm/page-writeback.c: fix range_cyclic writeback vs writepages deadlock + - tools/testing/selftests/vm/gup_benchmark.c: fix 'write' flag usage + - mm: thp: fix MADV_DONTNEED vs + migrate_misplaced_transhuge_page race condition + - macsec: update operstate when lower device changes + - macsec: let the administrator set UP state even if lowerdev is down + - block: fix the DISCARD request merge + - i2c: uniphier-f: make driver robust against concurrency + - i2c: uniphier-f: fix occasional timeout error + - i2c: uniphier-f: fix race condition when IRQ is cleared + - um: Make line/tty semantics use true write IRQ + - vfs: avoid problematic remapping requests into partial EOF block + - ipv4/igmp: fix v1/v2 switchback timeout based on rfc3376, 8.12 + - [ppc64*,powerpc] xmon: Relax frame size for clang + - [ppc64*,powerpc] selftests/ptrace: Fix out-of-tree build + - [ppc64*,powerpc] selftests/signal: Fix out-of-tree build + - [ppc64*,powerpc] selftests/switch_endian: Fix out-of-tree build + - [ppc64*,powerpc] selftests/cache_shape: Fix out-of-tree build + - block: call rq_qos_exit() after queue is frozen + - mm/gup_benchmark.c: prevent integer overflow in ioctl + - linux/bitmap.h: handle constant zero-size bitmaps correctly + - linux/bitmap.h: fix type of nbits in bitmap_shift_right() + - lib/bitmap.c: fix remaining space computation in bitmap_print_to_pagebuf + - hfsplus: fix BUG on bnode parent update + - hfs: fix BUG on bnode parent update + - hfsplus: prevent btree data loss on ENOSPC + - hfs: prevent btree data loss on ENOSPC + - hfsplus: fix return value of hfsplus_get_block() + - hfs: fix return value of hfs_get_block() + - hfsplus: update timestamps on truncate() + - hfs: update timestamp on truncate() + - fs/hfs/extent.c: fix array out of bounds read of array extent + - kernel/panic.c: do not append newline to the stack protector panic string + - mm/memory_hotplug: make add_memory() take the device_hotplug_lock + - mm/memory_hotplug: fix online/offline_pages called w.o. mem_hotplug_lock + - [ppc64*,powerprc] powerpc/powernv: hold device_hotplug_lock when calling + device_online() + - igb: shorten maximum PHC timecounter update interval + - fm10k: ensure completer aborts are marked as non-fatal after a resume + - [arm64] net: hns3: bugfix for buffer not free problem during resetting + - [arm64] net: hns3: bugfix for reporting unknown vector0 interrupt repeatly + problem + - [arm64] net: hns3: bugfix for is_valid_csq_clean_head() + - [arm64] net: hns3: bugfix for hclge_mdio_write and hclge_mdio_read + - ntb_netdev: fix sleep time mismatch + - [x86] ntb: intel: fix return value for ndev_vec_mask() + - irq/matrix: Fix memory overallocation + - nvme-pci: fix conflicting p2p resource adds + - [arm64] makefile fix build of .i file in external module case + - [x86] tools/power turbosat: fix AMD APIC-id output + - mm: handle no memcg case in memcg_kmem_charge() properly + - ocfs2: without quota support, avoid calling quota recovery + - ocfs2: don't use iocb when EIOCBQUEUED returns + - ocfs2: don't put and assigning null to bh allocated outside + - ocfs2: fix clusters leak in ocfs2_defrag_extent() + - net: do not abort bulk send on BQL status + - sched/topology: Fix off by one bug + - sched/fair: Don't increase sd->balance_interval on newidle balance + - openvswitch: fix linking without CONFIG_NF_CONNTRACK_LABELS + - [armhf] dts: imx6sx-sdb: Fix enet phy regulator + - [arm64] sunxi-ng: enable so-said LDOs for A64 SoC's pll-mipi clock + - soc: bcm: brcmstb: Fix re-entry point with a THUMB2_KERNEL + - audit: print empty EXECVE args + - sock_diag: fix autoloading of the raw_diag module + - net: bpfilter: fix iptables failure if bpfilter_umh is disabled + - nds32: Fix bug in bitfield.h + - media: ov13858: Check for possible null pointer + - btrfs: avoid link error with CONFIG_NO_AUTO_INLINE + - wil6210: fix debugfs memory access alignment + - wil6210: fix L2 RX status handling + - wil6210: fix RGF_CAF_ICR address for Talyn-MB + - wil6210: fix locking in wmi_call + - ath10k: snoc: fix unbalanced clock error handling + - wlcore: Fix the return value in case of error in + 'wlcore_vendor_cmd_smart_config_start()' + - rtl8xxxu: Fix missing break in switch + - brcmsmac: never log "tid x is not agg'able" by default + - wireless: airo: potential buffer overflow in sprintf() + - rtlwifi: rtl8192de: Fix misleading REG_MCUFWDL information + - net: dsa: bcm_sf2: Turn on PHY to allow successful registration + - scsi: mpt3sas: Fix Sync cache command failure during driver unload + - scsi: mpt3sas: Don't modify EEDPTagMode field setting on SAS3.5 HBA + devices + - scsi: mpt3sas: Fix driver modifying persistent data in Manufacturing + page11 + - scsi: megaraid_sas: Fix msleep granularity + - scsi: megaraid_sas: Fix goto labels in error handling + - scsi: lpfc: fcoe: Fix link down issue after 1000+ link bounces + - scsi: lpfc: Fix odd recovery in duplicate FLOGIs in point-to-point + - scsi: lpfc: Correct loss of fc4 type on remote port address change + - usb: typec: tcpm: charge current handling for sink during hard reset + - dlm: fix invalid free + - dlm: don't leak kernel pointer to userspace + - vrf: mark skb for multicast or link-local as enslaved to VRF + - clk: tegra20: Turn EMC clock gate into divider + - ACPICA: Use %d for signed int print formatting instead of %u + - net: bcmgenet: return correct value 'ret' from bcmgenet_power_down + - of: unittest: allow base devicetree to have symbol metadata + - of: unittest: initialize args before calling of_*parse_*() + - tools: bpftool: pass an argument to silence open_obj_pinned() + - cfg80211: Prevent regulatory restore during STA disconnect in concurrent + interfaces + - pinctrl: qcom: spmi-gpio: fix gpio-hog related boot issues + - pinctrl: bcm2835: Use define directive for BCM2835_PINCONF_PARAM_PULL + - pinctrl: lpc18xx: Use define directive for PIN_CONFIG_GPIO_PIN_INT + - pinctrl: zynq: Use define directive for PIN_CONFIG_IO_STANDARD + - PCI: keystone: Use quirk to limit MRRS for K2G + - nvme-pci: fix surprise removal + - spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch + - i2c: uniphier-f: fix timeout error after reading 8 bytes + - mm/memory_hotplug: Do not unlock when fails to take the + device_hotplug_lock + - ipv6: Fix handling of LLA with VRF and sockets bound to VRF + - cfg80211: call disconnect_wk when AP stops + - mm/page_io.c: do not free shared swap slots + - Bluetooth: Fix invalid-free in bcsp_close() + - KVM: MMU: Do not treat ZONE_DEVICE pages as being reserved + - ath10k: Fix a NULL-ptr-deref bug in ath10k_usb_alloc_urb_from_pipe + - ath9k_hw: fix uninitialized variable data + - md/raid10: prevent access of uninitialized resync_pages offset + - mm/memory_hotplug: don't access uninitialized memmaps in + shrink_zone_span() + - net: phy: dp83867: fix speed 10 in sgmii mode + - net: phy: dp83867: increase SGMII autoneg timer duration + - ocfs2: remove ocfs2_is_o2cb_active() + - [arm*] 8904/1: skip nomap memblocks while finding the + lowmem/highmem boundary + - ARC: perf: Accommodate big-endian CPU + - [x86] insn: Fix awk regexp warnings + - [x86] speculation: Fix incorrect MDS/TAA mitigation status + - [x86] speculation: Fix redundant MDS mitigation message + - nbd: prevent memory leak + - y2038: futex: Move compat implementation into futex.c + - futex: Prevent robust futex exit race + - ALSA: usb-audio: Fix NULL dereference at parsing BADD + - nfc: port100: handle command failure cleanly + - media: vivid: Set vid_cap_streaming and vid_out_streaming to true + - media: vivid: Fix wrong locking that causes race conditions on streaming + stop + - media: usbvision: Fix races among open, close, and disconnect + - cpufreq: Add NULL checks to show() and store() methods of cpufreq + - media: uvcvideo: Fix error path in control parsing failure + - media: b2c2-flexcop-usb: add sanity checking + - media: cxusb: detect cxusb_ctrl_msg error in query + - media: imon: invalid dereference in imon_touch_event + - virtio_ring: fix return code on DMA mapping fails + - USBIP: add config dependency for SGL_ALLOC + - usbip: tools: fix fd leakage in the function of read_attr_usbip_status + - usbip: Fix uninitialized symbol 'nents' in stub_recv_cmd_submit() + - usb-serial: cp201x: support Mark-10 digital force gauge + - USB: chaoskey: fix error case of a timeout + - appledisplay: fix error handling in the scheduled work + - USB: serial: mos7840: add USB ID to support Moxa UPort 2210 + - USB: serial: mos7720: fix remote wakeup + - USB: serial: mos7840: fix remote wakeup + - USB: serial: option: add support for DW5821e with eSIM support + - USB: serial: option: add support for Foxconn T77W968 LTE modules + - staging: comedi: usbduxfast: usbduxfast_ai_cmdtest rounding error + - [ppc64*] support nospectre_v2 cmdline option + - [ppc64*] book3s: Fix link stack flush on context switch + - [ppc64*, powerpc] PPC: Book3S HV: Flush link stack on guest exit to host + kernel + - PM / devfreq: Fix kernel oops on governor module load [ Romain Perier ] * [armel/rpi] Enable CONFIG_BRCMFMAC_SDIO (Closes: #940530) @@ -2206,6 +2514,9 @@ linux (4.19.86-1) UNRELEASED; urgency=medium changes in 4.19.86) * [rt] Refresh 0202-net-Qdisc-use-a-seqlock-instead-seqcount.patch (context changes in 4.19.86) + * [rt] Refresh 0057-printk-Add-a-printk-kill-switch.patch (context changes + in 4.19.87) + * [rt] Refresh 0207-printk-Make-rt-aware.patch (context changes in 4.19.87) -- Romain Perier Wed, 28 Aug 2019 13:28:09 +0200 diff --git a/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch b/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch index 37f240364..5d748ff41 100644 --- a/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch +++ b/debian/patches-rt/0057-printk-Add-a-printk-kill-switch.patch @@ -7,6 +7,8 @@ Add a prinkt-kill-switch. This is used from (NMI) watchdog to ensure that it does not dead-lock with the early printk code. Signed-off-by: Thomas Gleixner +[Aurelien Jarno: Backport to 4.19.87 due to context changes caused by +00988218f8cb2 ("printk: lock/unlock console only for new logbuf entries")] --- include/linux/printk.h | 2 ++ kernel/printk/printk.c | 79 +++++++++++++++++++++++++++++++----------- @@ -92,9 +94,9 @@ index d0d03223b45b..289605ff56e8 100644 #ifdef CONFIG_PRINTK DECLARE_WAIT_QUEUE_HEAD(log_wait); /* the next printk record to read by syslog(READ) or /proc/kmsg */ -@@ -1897,6 +1949,13 @@ asmlinkage int vprintk_emit(int facility, int level, - bool in_sched = false; +@@ -1905,6 +1957,13 @@ asmlinkage int vprintk_emit(int facility, int level, unsigned long flags; + u64 curr_log_seq; + /* + * Fall back to early_printk if a debugging subsystem has @@ -106,7 +108,7 @@ index d0d03223b45b..289605ff56e8 100644 if (level == LOGLEVEL_SCHED) { level = LOGLEVEL_DEFAULT; in_sched = true; -@@ -2037,26 +2096,6 @@ static bool suppress_message_printing(int level) { return false; } +@@ -2049,26 +2108,6 @@ static bool suppress_message_printing(int level) { return false; } #endif /* CONFIG_PRINTK */ diff --git a/debian/patches-rt/0207-printk-Make-rt-aware.patch b/debian/patches-rt/0207-printk-Make-rt-aware.patch index 059cc2cda..5f77f2228 100644 --- a/debian/patches-rt/0207-printk-Make-rt-aware.patch +++ b/debian/patches-rt/0207-printk-Make-rt-aware.patch @@ -7,6 +7,8 @@ Drop the lock before calling the console driver and do not disable interrupts while printing to a serial console. Signed-off-by: Thomas Gleixner +[Aurelien Jarno: Backport to 4.19.87 due to context changes caused by +00988218f8cb2 ("printk: lock/unlock console only for new logbuf entries")] --- kernel/printk/printk.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) @@ -15,7 +17,7 @@ diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 210cdac1458d..c66755a0a046 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c -@@ -1617,6 +1617,7 @@ SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) +@@ -1624,6 +1624,7 @@ SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) return do_syslog(type, buf, len, SYSLOG_FROM_READER); } @@ -23,7 +25,7 @@ index 210cdac1458d..c66755a0a046 100644 /* * Special console_lock variants that help to reduce the risk of soft-lockups. * They allow to pass console_lock to another printk() call using a busy wait. -@@ -1757,6 +1758,15 @@ static int console_trylock_spinning(void) +@@ -1764,6 +1765,15 @@ static int console_trylock_spinning(void) return 1; } @@ -39,7 +41,7 @@ index 210cdac1458d..c66755a0a046 100644 /* * Call the console drivers, asking them to write out * log_buf[start] to log_buf[end - 1]. -@@ -1772,6 +1782,7 @@ static void call_console_drivers(const char *ext_text, size_t ext_len, +@@ -1779,6 +1789,7 @@ static void call_console_drivers(const char *ext_text, size_t ext_len, if (!console_drivers) return; @@ -47,7 +49,7 @@ index 210cdac1458d..c66755a0a046 100644 for_each_console(con) { if (exclusive_console && con != exclusive_console) continue; -@@ -1787,6 +1798,7 @@ static void call_console_drivers(const char *ext_text, size_t ext_len, +@@ -1794,6 +1805,7 @@ static void call_console_drivers(const char *ext_text, size_t ext_len, else con->write(con, text, len); } @@ -55,10 +57,10 @@ index 210cdac1458d..c66755a0a046 100644 } int printk_delay_msec __read_mostly; -@@ -1978,20 +1990,30 @@ asmlinkage int vprintk_emit(int facility, int level, +@@ -1988,20 +2000,30 @@ asmlinkage int vprintk_emit(int facility, int level, /* If called from the scheduler, we can not call up(). */ - if (!in_sched) { + if (!in_sched && pending_output) { + int may_trylock = 1; + +#ifdef CONFIG_PREEMPT_RT_FULL @@ -88,8 +90,8 @@ index 210cdac1458d..c66755a0a046 100644 + migrate_enable(); } - wake_up_klogd(); -@@ -2444,6 +2466,10 @@ void console_unlock(void) + if (pending_output) +@@ -2463,6 +2485,10 @@ void console_unlock(void) console_seq++; raw_spin_unlock(&logbuf_lock); @@ -100,7 +102,7 @@ index 210cdac1458d..c66755a0a046 100644 /* * While actively printing out messages, if another printk() * were to occur on another CPU, it may wait for this one to -@@ -2462,6 +2488,7 @@ void console_unlock(void) +@@ -2481,6 +2507,7 @@ void console_unlock(void) } printk_safe_exit_irqrestore(flags); diff --git a/debian/patches/bugfix/arm64/huawei-taishan/0001-scsi-hisi_sas-Feed-back-linkrate-max-min-when-re-att.patch b/debian/patches/bugfix/arm64/huawei-taishan/0001-scsi-hisi_sas-Feed-back-linkrate-max-min-when-re-att.patch deleted file mode 100644 index 53aca52a0..000000000 --- a/debian/patches/bugfix/arm64/huawei-taishan/0001-scsi-hisi_sas-Feed-back-linkrate-max-min-when-re-att.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 97a79982f8b8ddcb129a1be1ecc01cef70ab384d Mon Sep 17 00:00:00 2001 -From: Luo Jiaxing -Date: Mon, 24 Sep 2018 23:06:28 +0800 -Subject: [PATCH 01/31] scsi: hisi_sas: Feed back linkrate(max/min) when - re-attached -Origin: https://git.kernel.org/linus/5a54691f874ab29ec82f08bc6936866a3ccdaa91 - -At directly attached situation, if the user modifies the sysfs interface -of maximum_linkrate and minimum_linkrate to renegotiate the linkrate -between SAS controller and target, the value of both files mentioned -above should have change to user setting after renegotiate is over, but -it remains unchanged. - -To fix this bug, maximum_linkrate and minimum_linkrate will be directly -fed back to relevant sas_phy structure. - -Signed-off-by: Luo Jiaxing -Signed-off-by: John Garry -Signed-off-by: Martin K. Petersen ---- - drivers/scsi/hisi_sas/hisi_sas_main.c | 3 +++ - 1 file changed, 3 insertions(+) - -Index: linux/drivers/scsi/hisi_sas/hisi_sas_main.c -=================================================================== ---- linux.orig/drivers/scsi/hisi_sas/hisi_sas_main.c -+++ linux/drivers/scsi/hisi_sas/hisi_sas_main.c -@@ -906,6 +906,9 @@ static void hisi_sas_phy_set_linkrate(st - _r.maximum_linkrate = max; - _r.minimum_linkrate = min; - -+ sas_phy->phy->maximum_linkrate = max; -+ sas_phy->phy->minimum_linkrate = min; -+ - hisi_hba->hw->phy_disable(hisi_hba, phy_no); - msleep(100); - hisi_hba->hw->phy_set_linkrate(hisi_hba, phy_no, &_r); diff --git a/debian/patches/bugfix/arm64/huawei-taishan/0003-scsi-hisi_sas-Fix-the-race-between-IO-completion-and.patch b/debian/patches/bugfix/arm64/huawei-taishan/0003-scsi-hisi_sas-Fix-the-race-between-IO-completion-and.patch deleted file mode 100644 index 4b1f28118..000000000 --- a/debian/patches/bugfix/arm64/huawei-taishan/0003-scsi-hisi_sas-Fix-the-race-between-IO-completion-and.patch +++ /dev/null @@ -1,135 +0,0 @@ -From d754707455238c59350c70ce51123b586fefac52 Mon Sep 17 00:00:00 2001 -From: Xiang Chen -Date: Mon, 24 Sep 2018 23:06:30 +0800 -Subject: [PATCH 03/31] scsi: hisi_sas: Fix the race between IO completion and - timeout for SMP/internal IO -Origin: https://git.kernel.org/linus/584f53fe5f529d877968c711a095923c1ed12307 - -If SMP/internal IO times out, we will possibly free the task immediately. - -However if the IO actually completes at the same time, the IO completion -may refer to task which has been freed. - -So to solve the issue, flush the tasklet to finish IO completion before -free'ing slot/task. - -Signed-off-by: Xiang Chen -Signed-off-by: John Garry -Signed-off-by: Martin K. Petersen ---- - drivers/scsi/hisi_sas/hisi_sas_main.c | 55 ++++++++++++++++++++++----- - 1 file changed, 46 insertions(+), 9 deletions(-) - -Index: linux/drivers/scsi/hisi_sas/hisi_sas_main.c -=================================================================== ---- linux.orig/drivers/scsi/hisi_sas/hisi_sas_main.c -+++ linux/drivers/scsi/hisi_sas/hisi_sas_main.c -@@ -958,8 +958,7 @@ static int hisi_sas_control_phy(struct a - - static void hisi_sas_task_done(struct sas_task *task) - { -- if (!del_timer(&task->slow_task->timer)) -- return; -+ del_timer(&task->slow_task->timer); - complete(&task->slow_task->completion); - } - -@@ -968,13 +967,17 @@ static void hisi_sas_tmf_timedout(struct - struct sas_task_slow *slow = from_timer(slow, t, timer); - struct sas_task *task = slow->task; - unsigned long flags; -+ bool is_completed = true; - - spin_lock_irqsave(&task->task_state_lock, flags); -- if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) -+ if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) { - task->task_state_flags |= SAS_TASK_STATE_ABORTED; -+ is_completed = false; -+ } - spin_unlock_irqrestore(&task->task_state_lock, flags); - -- complete(&task->slow_task->completion); -+ if (!is_completed) -+ complete(&task->slow_task->completion); - } - - #define TASK_TIMEOUT 20 -@@ -1025,10 +1028,18 @@ static int hisi_sas_exec_internal_tmf_ta - if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) { - if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) { - struct hisi_sas_slot *slot = task->lldd_task; -+ struct hisi_sas_cq *cq = -+ &hisi_hba->cq[slot->dlvry_queue]; - - dev_err(dev, "abort tmf: TMF task timeout and not done\n"); -- if (slot) -+ if (slot) { -+ /* -+ * flush tasklet to avoid free'ing task -+ * before using task in IO completion -+ */ -+ tasklet_kill(&cq->tasklet); - slot->task = NULL; -+ } - - goto ex_err; - } else -@@ -1404,6 +1415,17 @@ static int hisi_sas_abort_task(struct sa - - spin_lock_irqsave(&task->task_state_lock, flags); - if (task->task_state_flags & SAS_TASK_STATE_DONE) { -+ struct hisi_sas_slot *slot = task->lldd_task; -+ struct hisi_sas_cq *cq; -+ -+ if (slot) { -+ /* -+ * flush tasklet to avoid free'ing task -+ * before using task in IO completion -+ */ -+ cq = &hisi_hba->cq[slot->dlvry_queue]; -+ tasklet_kill(&cq->tasklet); -+ } - spin_unlock_irqrestore(&task->task_state_lock, flags); - rc = TMF_RESP_FUNC_COMPLETE; - goto out; -@@ -1459,12 +1481,19 @@ static int hisi_sas_abort_task(struct sa - /* SMP */ - struct hisi_sas_slot *slot = task->lldd_task; - u32 tag = slot->idx; -+ struct hisi_sas_cq *cq = &hisi_hba->cq[slot->dlvry_queue]; - - rc = hisi_sas_internal_task_abort(hisi_hba, device, - HISI_SAS_INT_ABT_CMD, tag); - if (((rc < 0) || (rc == TMF_RESP_FUNC_FAILED)) && -- task->lldd_task) -- hisi_sas_do_release_task(hisi_hba, task, slot); -+ task->lldd_task) { -+ /* -+ * flush tasklet to avoid free'ing task -+ * before using task in IO completion -+ */ -+ tasklet_kill(&cq->tasklet); -+ slot->task = NULL; -+ } - } - - out: -@@ -1830,9 +1859,17 @@ hisi_sas_internal_task_abort(struct hisi - if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) { - if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) { - struct hisi_sas_slot *slot = task->lldd_task; -+ struct hisi_sas_cq *cq = -+ &hisi_hba->cq[slot->dlvry_queue]; - -- if (slot) -+ if (slot) { -+ /* -+ * flush tasklet to avoid free'ing task -+ * before using task in IO completion -+ */ -+ tasklet_kill(&cq->tasklet); - slot->task = NULL; -+ } - dev_err(dev, "internal task abort: timeout and not done.\n"); - res = -EIO; - goto exit; diff --git a/debian/patches/bugfix/arm64/huawei-taishan/0004-scsi-hisi_sas-Free-slot-later-in-slot_complete_vx_hw.patch b/debian/patches/bugfix/arm64/huawei-taishan/0004-scsi-hisi_sas-Free-slot-later-in-slot_complete_vx_hw.patch deleted file mode 100644 index 724f04345..000000000 --- a/debian/patches/bugfix/arm64/huawei-taishan/0004-scsi-hisi_sas-Free-slot-later-in-slot_complete_vx_hw.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 3df1056ee50d09c97e421896a698f74d367282ef Mon Sep 17 00:00:00 2001 -From: Xiang Chen -Date: Mon, 24 Sep 2018 23:06:31 +0800 -Subject: [PATCH 04/31] scsi: hisi_sas: Free slot later in - slot_complete_vx_hw() -Origin: https://git.kernel.org/linus/3e178f3ecfcf91a258e832b0f0843a4cfd9059ac - -If an SSP/SMP IO times out, it may be actually in reality be -simultaneously processing completion of the slot in -slot_complete_vx_hw(). - -Then if the slot is freed in slot_complete_vx_hw() (this IPTT is freed -and it may be re-used by other slot), and we may abort the wrong slot in -hisi_sas_abort_task(). - -So to solve the issue, free the slot after the check of -SAS_TASK_STATE_ABORTED in slot_complete_vx_hw(). - -Signed-off-by: Xiang Chen -Signed-off-by: John Garry -Signed-off-by: Martin K. Petersen ---- - drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 2 +- - drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -Index: linux/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c -=================================================================== ---- linux.orig/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c -+++ linux/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c -@@ -2481,7 +2481,6 @@ slot_complete_v2_hw(struct hisi_hba *his - } - - out: -- hisi_sas_slot_task_free(hisi_hba, task, slot); - sts = ts->stat; - spin_lock_irqsave(&task->task_state_lock, flags); - if (task->task_state_flags & SAS_TASK_STATE_ABORTED) { -@@ -2491,6 +2490,7 @@ out: - } - task->task_state_flags |= SAS_TASK_STATE_DONE; - spin_unlock_irqrestore(&task->task_state_lock, flags); -+ hisi_sas_slot_task_free(hisi_hba, task, slot); - - if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) { - spin_lock_irqsave(&device->done_lock, flags); -Index: linux/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c -=================================================================== ---- linux.orig/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c -+++ linux/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c -@@ -1749,7 +1749,6 @@ slot_complete_v3_hw(struct hisi_hba *his - } - - out: -- hisi_sas_slot_task_free(hisi_hba, task, slot); - sts = ts->stat; - spin_lock_irqsave(&task->task_state_lock, flags); - if (task->task_state_flags & SAS_TASK_STATE_ABORTED) { -@@ -1759,6 +1758,7 @@ out: - } - task->task_state_flags |= SAS_TASK_STATE_DONE; - spin_unlock_irqrestore(&task->task_state_lock, flags); -+ hisi_sas_slot_task_free(hisi_hba, task, slot); - - if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) { - spin_lock_irqsave(&device->done_lock, flags); diff --git a/debian/patches/bugfix/arm64/huawei-taishan/0032-scsi-hisi_sas-Fix-NULL-pointer-dereference.patch b/debian/patches/bugfix/arm64/huawei-taishan/0032-scsi-hisi_sas-Fix-NULL-pointer-dereference.patch deleted file mode 100644 index 6060ad048..000000000 --- a/debian/patches/bugfix/arm64/huawei-taishan/0032-scsi-hisi_sas-Fix-NULL-pointer-dereference.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 19c36e6a73724c2ec33980b9ab88145428b68412 Mon Sep 17 00:00:00 2001 -From: "Gustavo A. R. Silva" -Date: Thu, 18 Oct 2018 18:59:39 +0200 -Subject: [PATCH] scsi: hisi_sas: Fix NULL pointer dereference -Origin: https://git.kernel.org/linus/f4445bb93d82a984657b469e63118c2794a4c3d3 - -There is a NULL pointer dereference in case *slot* happens to be NULL at -lines 1053 and 1878: - -struct hisi_sas_cq *cq = - &hisi_hba->cq[slot->dlvry_queue]; - -Notice that *slot* is being NULL checked at lines 1057 and 1881: -if (slot), which implies it may be NULL. - -Fix this by placing the declaration and definition of variable cq, which -contains the pointer dereference slot->dlvry_queue, after slot has been -properly NULL checked. - -Addresses-Coverity-ID: 1474515 ("Dereference before null check") -Addresses-Coverity-ID: 1474520 ("Dereference before null check") -Fixes: 584f53fe5f52 ("scsi: hisi_sas: Fix the race between IO completion and timeout for SMP/internal IO") -Signed-off-by: Gustavo A. R. Silva -Reviewed-by: Xiang Chen -Signed-off-by: Martin K. Petersen ---- - drivers/scsi/hisi_sas/hisi_sas_main.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -Index: linux/drivers/scsi/hisi_sas/hisi_sas_main.c -=================================================================== ---- linux.orig/drivers/scsi/hisi_sas/hisi_sas_main.c -+++ linux/drivers/scsi/hisi_sas/hisi_sas_main.c -@@ -1088,11 +1088,11 @@ static int hisi_sas_exec_internal_tmf_ta - if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) { - if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) { - struct hisi_sas_slot *slot = task->lldd_task; -- struct hisi_sas_cq *cq = -- &hisi_hba->cq[slot->dlvry_queue]; - - dev_err(dev, "abort tmf: TMF task timeout and not done\n"); - if (slot) { -+ struct hisi_sas_cq *cq = -+ &hisi_hba->cq[slot->dlvry_queue]; - /* - * flush tasklet to avoid free'ing task - * before using task in IO completion -@@ -1913,10 +1913,10 @@ hisi_sas_internal_task_abort(struct hisi - if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) { - if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) { - struct hisi_sas_slot *slot = task->lldd_task; -- struct hisi_sas_cq *cq = -- &hisi_hba->cq[slot->dlvry_queue]; - - if (slot) { -+ struct hisi_sas_cq *cq = -+ &hisi_hba->cq[slot->dlvry_queue]; - /* - * flush tasklet to avoid free'ing task - * before using task in IO completion diff --git a/debian/patches/features/all/ena/0014-net-ena-Fix-Kconfig-dependency-on-X86.patch b/debian/patches/features/all/ena/0014-net-ena-Fix-Kconfig-dependency-on-X86.patch deleted file mode 100644 index b8d22ae30..000000000 --- a/debian/patches/features/all/ena/0014-net-ena-Fix-Kconfig-dependency-on-X86.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Netanel Belgazal -Date: Wed, 17 Oct 2018 10:04:21 +0000 -Subject: [PATCH 14/19] net: ena: Fix Kconfig dependency on X86 -Origin: https://git.kernel.org/linus/8c590f9776386b8f697fd0b7ed6142ae6e3de79e - -The Kconfig limitation of X86 is to too wide. -The ENA driver only requires a little endian dependency. - -Change the dependency to be on little endian CPU. - -Signed-off-by: Netanel Belgazal -Signed-off-by: David S. Miller ---- - drivers/net/ethernet/amazon/Kconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: linux/drivers/net/ethernet/amazon/Kconfig -=================================================================== ---- linux.orig/drivers/net/ethernet/amazon/Kconfig -+++ linux/drivers/net/ethernet/amazon/Kconfig -@@ -17,7 +17,7 @@ if NET_VENDOR_AMAZON - - config ENA_ETHERNET - tristate "Elastic Network Adapter (ENA) support" -- depends on (PCI_MSI && X86) -+ depends on PCI_MSI && !CPU_BIG_ENDIAN - ---help--- - This driver supports Elastic Network Adapter (ENA)" - diff --git a/debian/patches/series b/debian/patches/series index 74f9b104b..065c1827f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -215,7 +215,6 @@ features/all/ena/0010-net-ena-change-rx-copybreak-default-to-reduce-kernel.patch features/all/ena/0011-net-ena-remove-redundant-parameter-in-ena_com_admin_.patch features/all/ena/0012-net-ena-update-driver-version-to-2.0.1.patch features/all/ena/0013-net-ena-fix-indentations-in-ena_defs-for-better-read.patch -features/all/ena/0014-net-ena-Fix-Kconfig-dependency-on-X86.patch features/all/ena/0015-net-ena-enable-Low-Latency-Queues.patch features/all/ena/0016-net-ena-fix-compilation-error-in-xtensa-architecture.patch features/all/ena/0017-net-ena-fix-crash-during-ena_remove.patch @@ -260,10 +259,7 @@ features/all/ena/net-ena-fix-retrieval-of-nonadaptive-interrupt-moder.patch features/all/ena/net-ena-fix-incorrect-update-of-intr_delay_resolutio.patch # Backported bugfixes from 4.20/4.21 for the Huawei TaiShan server platform (aka D06) -bugfix/arm64/huawei-taishan/0001-scsi-hisi_sas-Feed-back-linkrate-max-min-when-re-att.patch bugfix/arm64/huawei-taishan/0002-scsi-hisi_sas-Move-evaluation-of-hisi_hba-in-hisi_sa.patch -bugfix/arm64/huawei-taishan/0003-scsi-hisi_sas-Fix-the-race-between-IO-completion-and.patch -bugfix/arm64/huawei-taishan/0004-scsi-hisi_sas-Free-slot-later-in-slot_complete_vx_hw.patch bugfix/arm64/huawei-taishan/0005-scsi-hisi_sas-unmask-interrupts-ent72-and-ent74.patch bugfix/arm64/huawei-taishan/0006-scsi-hisi_sas-Use-block-layer-tag-instead-for-IPTT.patch bugfix/arm64/huawei-taishan/0007-scsi-hisi_sas-Update-v3-hw-AIP_LIMIT-and-CFG_AGING_T.patch @@ -291,7 +287,6 @@ bugfix/arm64/huawei-taishan/0028-RDMA-hns-Bugfix-for-the-scene-without-receiver- bugfix/arm64/huawei-taishan/0029-RDMA-hns-Add-constraint-on-the-setting-of-local-ACK-.patch bugfix/arm64/huawei-taishan/0030-RDMA-hns-Modify-the-pbl-ba-page-size-for-hip08.patch bugfix/arm64/huawei-taishan/0031-RDMA-hns-RDMA-hns-Assign-rq-head-pointer-when-enable.patch -bugfix/arm64/huawei-taishan/0032-scsi-hisi_sas-Fix-NULL-pointer-dereference.patch bugfix/arm64/huawei-taishan/0033-scsi-hisi_sas-fix-calls-to-dma_set_mask_and_coherent.patch # Backported DTB support for Raspberry Pi Compute Module 3 from 4.20-rc1: