This is the start of the stable review cycle for the 5.7.17 release.
There are 204 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Sat, 22 Aug 2020 09:15:09 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.17-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.7.17-rc1
hersen wu <[email protected]>
drm/amd/display: dchubbub p-state warning during surface planes switch
Stylon Wang <[email protected]>
drm/amd/display: Fix dmesg warning from setting abm level
Sandeep Raghuraman <[email protected]>
drm/amdgpu: Fix bug where DPM is not enabled after hibernate and resume
Xin Xiong <[email protected]>
drm: fix drm_dp_mst_port refcount leaks in drm_dp_mst_allocate_vcpi
Marius Iacob <[email protected]>
drm: Added orientation quirk for ASUS tablet model T103HAF
Tomi Valkeinen <[email protected]>
drm/tidss: fix modeset init for DPI panels
Tomi Valkeinen <[email protected]>
drm/omap: force runtime PM suspend on system suspend
Alex Deucher <[email protected]>
drm/amdgpu: fix ordering of psp suspend
Imre Deak <[email protected]>
drm/dp_mst: Fix the DDC I2C device registration of an MST port
Denis Efremov <[email protected]>
drm/panfrost: Use kvfree() to free bo->sgts
Chris Wilson <[email protected]>
drm/i915/gt: Force the GT reset on shutdown
Denis Efremov <[email protected]>
drm/radeon: fix fb_div check in ni_init_smc_spll_table()
Sowjanya Komatineni <[email protected]>
ASoC: tegra: Enable audio mclk during tegra_asoc_utils_init()
Sowjanya Komatineni <[email protected]>
ASoC: tegra: Add audio mclk parent configuration
Sowjanya Komatineni <[email protected]>
ASoC: tegra: Use device managed resource APIs to get the clock
Hugh Dickins <[email protected]>
khugepaged: retract_page_tables() remember to test exit
Geert Uytterhoeven <[email protected]>
sh: landisk: Add missing initialization of sh_io_port_base
Zhang Rui <[email protected]>
perf/x86/rapl: Fix missing psys sysfs attributes
Daniel Díaz <[email protected]>
tools build feature: Quote CC and CXX for their arguments
Vincent Whitchurch <[email protected]>
perf bench mem: Always memset source before memcpy
Dinghao Liu <[email protected]>
ALSA: echoaudio: Fix potential Oops in snd_echo_resume()
Ondrej Mosnacek <[email protected]>
crypto: algif_aead - fix uninitialized ctx->init
Andy Shevchenko <[email protected]>
mfd: dln2: Run event handler loop under spinlock
Dhananjay Phadke <[email protected]>
i2c: iproc: fix race between client unreg and isr
Tiezhu Yang <[email protected]>
test_kmod: avoid potential double free in trigger_config_run_type()
Colin Ian King <[email protected]>
fs/ufs: avoid potential u32 multiplication overflow
Eric Biggers <[email protected]>
fs/minix: remove expected error message in block_to_path()
Eric Biggers <[email protected]>
fs/minix: fix block limit check for V1 filesystems
Eric Biggers <[email protected]>
fs/minix: set s_maxbytes correctly
Tiezhu Yang <[email protected]>
lib/test_lockup.c: fix return value of test_lockup_init()
Trond Myklebust <[email protected]>
NFS: Fix flexfiles read failover
Jeffrey Mitchell <[email protected]>
nfs: Fix getxattr kernel panic and memory overflow
Wang Hai <[email protected]>
net: qcom/emac: add missed clk_disable_unprepare in error path of emac_clks_phase1_init
Krzysztof Kozlowski <[email protected]>
s390/Kconfig: add missing ZCRYPT dependency to VFIO_AP
Wang Hai <[email protected]>
s390/test_unwind: fix possible memleak in test_unwind()
Dan Carpenter <[email protected]>
drm/vmwgfx: Fix two list_for_each loop exit tests
Dan Carpenter <[email protected]>
drm/vmwgfx: Use correct vmw_legacy_display_unit pointer
Dan Carpenter <[email protected]>
vdpa: Fix pointer math bug in vdpasim_get_config()
Christophe Leroy <[email protected]>
recordmcount: Fix build failure on non arm64
Michael S. Tsirkin <[email protected]>
vdpa_sim: init iommu lock
Colin Ian King <[email protected]>
Input: sentelic - fix error return when fsp_reg_write fails
Andrii Nakryiko <[email protected]>
selftests/bpf: Prevent runqslower from racing on building bpftool
Pawan Gupta <[email protected]>
x86/bugs/multihit: Fix mitigation reporting when VMX is not in use
Dilip Kota <[email protected]>
x86/tsr: Fix tsc frequency enumeration bug on Lightning Mountain SoC
Dan Carpenter <[email protected]>
md-cluster: Fix potential error pointer dereference in resize_bitmaps()
Tero Kristo <[email protected]>
watchdog: rti-wdt: balance pm runtime enable calls
Krzysztof Sobota <[email protected]>
watchdog: initialize device before misc_register
Scott Mayhew <[email protected]>
nfs: nfs_file_write() should check for writeback errors
Ewan D. Milne <[email protected]>
scsi: lpfc: nvmet: Avoid hang / use-after-free again when destroying targetport
Stafford Horne <[email protected]>
openrisc: Fix oops caused when dumping stack
Jane Chu <[email protected]>
libnvdimm/security: ensure sysfs poll thread woke up and fetch updated attr
Jane Chu <[email protected]>
libnvdimm/security: fix a typo
Nicolas Saenz Julienne <[email protected]>
clk: bcm2835: Do not use prediv with bcm2711's PLLs
Zhihao Cheng <[email protected]>
ubifs: Fix wrong orphan node deletion in ubifs_jnl_update|rename
Scott Mayhew <[email protected]>
nfs: ensure correct writeback errors are returned on close()
Wolfram Sang <[email protected]>
i2c: rcar: avoid race when unregistering slave
Thomas Hebb <[email protected]>
tools build feature: Use CC and CXX from parent
Rayagonda Kokatanur <[email protected]>
pwm: bcm-iproc: handle clk_get_rate() return
Qais Yousef <[email protected]>
sched/uclamp: Fix a deadlock when enabling uclamp static key
Sagi Grimberg <[email protected]>
nvme: fix deadlock in disconnect during scan_work and/or ana_work
Xu Wang <[email protected]>
clk: clk-atlas6: fix return value check in atlas6_clk_init()
Konrad Dybcio <[email protected]>
clk: qcom: gcc-sdm660: Fix up gcc_mss_mnoc_bimc_axi_clk
Chao Yu <[email protected]>
f2fs: compress: fix to update isize when overwriting compressed file
Wolfram Sang <[email protected]>
i2c: rcar: slave: only send STOP event when we have been addressed
Liu Yi L <[email protected]>
iommu/vt-d: Enforce PASID devTLB field mask
Jonathan Marek <[email protected]>
clk: qcom: clk-alpha-pll: remove unused/incorrect PLL_CAL_VAL
Jonathan Marek <[email protected]>
clk: qcom: gcc: fix sm8150 GPU and NPU clocks
Colin Ian King <[email protected]>
iommu/omap: Check for failure of a call to omap_iommu_dump_ctx
Aneesh Kumar K.V <[email protected]>
selftests/powerpc: ptrace-pkey: Don't update expected UAMOR value
Aneesh Kumar K.V <[email protected]>
selftests/powerpc: ptrace-pkey: Update the test to mark an invalid pkey correctly
Aneesh Kumar K.V <[email protected]>
selftests/powerpc: ptrace-pkey: Rename variables to make it easier to follow code
Cristian Ciocaltea <[email protected]>
clk: actions: Fix h_clk for Actions S500 SoC
Chao Yu <[email protected]>
f2fs: compress: fix to avoid memory leak on cc->cpages
Tyler Hicks <[email protected]>
ima: Fail rule parsing when appraise_flag=blacklist is unsupportable
Ming Lei <[email protected]>
dm rq: don't call blk_mq_queue_stopped() in dm_stop_queue()
Steve Longerbeam <[email protected]>
gpu: ipu-v3: image-convert: Wait for all EOFs before completing a tile
Steve Longerbeam <[email protected]>
gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers
Herbert Xu <[email protected]>
crypto: caam - Remove broken arc4 support
Sudeep Holla <[email protected]>
rtc: pl031: fix set_alarm by adding back call to alarm_irq_enable
Yan-Hsuan Chuang <[email protected]>
rtw88: pci: disable aspm for platform inter-op with module parameter
Yoshihiro Shimoda <[email protected]>
mmc: renesas_sdhi_internal_dmac: clean up the code for dma complete
Mark Zhang <[email protected]>
RDMA/counter: Allow manually bind QPs with different pids to same counter
Mark Zhang <[email protected]>
RDMA/counter: Only bind user QPs in auto mode
Vladimir Oltean <[email protected]>
devres: keep both device name and resource name in pretty name
Herbert Xu <[email protected]>
crypto: af_alg - Fix regression on empty requests
Johan Hovold <[email protected]>
USB: serial: ftdi_sio: fix break and sysrq handling
Johan Hovold <[email protected]>
USB: serial: ftdi_sio: clean up receive processing
Johan Hovold <[email protected]>
USB: serial: ftdi_sio: make process-packet buffer unsigned
Jesper Dangaard Brouer <[email protected]>
selftests/bpf: test_progs avoid minus shell exit codes
Jesper Dangaard Brouer <[email protected]>
selftests/bpf: test_progs use another shell exit on non-actions
Martin KaFai Lau <[email protected]>
bpf: selftests: Restore netns after each test
Jesper Dangaard Brouer <[email protected]>
selftests/bpf: Test_progs indicate to shell on non-actions
Qais Yousef <[email protected]>
sched/uclamp: Protect uclamp fast path code with static key
Yishai Hadas <[email protected]>
IB/uverbs: Set IOVA on IB MR in uverbs layer
Paul Kocialkowski <[email protected]>
media: rockchip: rga: Only set output CSC mode for RGB input
Paul Kocialkowski <[email protected]>
media: rockchip: rga: Introduce color fmt macros and refactor CSC mode logic
Dafna Hirschfeld <[email protected]>
media: staging: rkisp1: remove macro RKISP1_DIR_SINK_SRC
Sebastian Reichel <[email protected]>
rtc: cpcap: fix range
Jason Gunthorpe <[email protected]>
RDMA/ipoib: Fix ABBA deadlock with ipoib_reap_ah()
Kamal Heib <[email protected]>
RDMA/ipoib: Return void from ipoib_ib_dev_stop()
Qiushi Wu <[email protected]>
platform/chrome: cros_ec_ishtp: Fix a double-unlock issue
Kamal Dasu <[email protected]>
mtd: rawnand: brcmnand: ECC error handling on EDU transfers
Boris Brezillon <[email protected]>
mtd: rawnand: fsl_upm: Remove unused mtd var
Eric Dumazet <[email protected]>
octeontx2-af: change (struct qmem)->entry_sz from u8 to u16
Charles Keepax <[email protected]>
mfd: arizona: Ensure 32k clock is put on driver unbind and error
Herbert Xu <[email protected]>
crypto: algif_aead - Only wake up when ctx->more is zero
Paul Cercueil <[email protected]>
drm/ingenic: Fix incorrect assumption about plane->index
Liu Ying <[email protected]>
drm/imx: imx-ldb: Disable both channels for split mode in enc->disable()
Sibi Sankar <[email protected]>
remoteproc: qcom_q6v5_mss: Validate modem blob firmware size before load
Sibi Sankar <[email protected]>
remoteproc: qcom_q6v5_mss: Validate MBA firmware size before load
Sibi Sankar <[email protected]>
remoteproc: qcom: q6v5: Update running state before requesting stop
Bob Peterson <[email protected]>
gfs2: Never call gfs2_block_zero_range with an open transaction
Adrian Hunter <[email protected]>
perf intel-pt: Fix duplicate branch after CBR
Adrian Hunter <[email protected]>
perf intel-pt: Fix FUP packet state
Masami Hiramatsu <[email protected]>
perf probe: Fix memory leakage when the probe point is not found
Masami Hiramatsu <[email protected]>
perf probe: Fix wrong variable warning when the probe point is not found
Masami Hiramatsu <[email protected]>
bootconfig: Fix to find the initargs correctly
Kees Cook <[email protected]>
module: Correctly truncate sysfs sections output
Johannes Thumshirn <[email protected]>
dm: don't call report zones for more than the user requested
Anton Blanchard <[email protected]>
pseries: Fix 64 bit logical memory block panic
Jeff Layton <[email protected]>
ceph: handle zero-length feature mask in session messages
Jeff Layton <[email protected]>
ceph: set sec_context xattr on symlink creation
Ahmad Fatoum <[email protected]>
watchdog: f71808e_wdt: clear watchdog timeout occurred flag
Ahmad Fatoum <[email protected]>
watchdog: f71808e_wdt: remove use of wrong watchdog_info option
Ahmad Fatoum <[email protected]>
watchdog: f71808e_wdt: indicate WDIOF_CARDRESET support in watchdog_info.options
Steven Rostedt (VMware) <[email protected]>
tracing: Use trace_sched_process_free() instead of exit() for pid tracing
Kevin Hao <[email protected]>
tracing/hwlat: Honor the tracing_cpumask
Muchun Song <[email protected]>
kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler
Chengming Zhou <[email protected]>
ftrace: Setup correct FTRACE_FL_REGS flags for module
Jia He <[email protected]>
mm/memory_hotplug: fix unpaired mem_hotplug_begin/done
Mike Kravetz <[email protected]>
cma: don't quit at first error when activating reserved areas
Michal Koutný <[email protected]>
mm/page_counter.c: fix protection usage propagation
Junxiao Bi <[email protected]>
ocfs2: change slot number type s16 to u16
David Hildenbrand <[email protected]>
mm/shuffle: don't move pages between zones and don't read garbage memmaps
Mike Kravetz <[email protected]>
hugetlbfs: remove call to huge_pte_alloc without i_mmap_rwsem
Hugh Dickins <[email protected]>
khugepaged: collapse_pte_mapped_thp() protect the pmd lock
Peter Xu <[email protected]>
mm/hugetlb: fix calculation of adjust_range_if_pmd_sharing_possible
Hugh Dickins <[email protected]>
khugepaged: collapse_pte_mapped_thp() flush the right range
Mikulas Patocka <[email protected]>
ext2: fix missing percpu_counter_inc
Mike Rapoport <[email protected]>
MIPS: SGI-IP27: always enable NUMA in Kconfig
Paul Cercueil <[email protected]>
MIPS: qi_lb60: Fix routing to audio amplifier
Huacai Chen <[email protected]>
MIPS: CPU#0 is not hotpluggable
Lukas Wunner <[email protected]>
driver core: Avoid binding drivers to dead devices
Johannes Berg <[email protected]>
mac80211: fix misplaced while instead of if
Coly Li <[email protected]>
bcache: fix overflow in offset_to_stripe()
Coly Li <[email protected]>
bcache: allocate meta data pages as compound pages
ChangSyun Peng <[email protected]>
md/raid5: Fix Force reconstruct-write io stuck in degraded raid5
Kees Cook <[email protected]>
selftests/seccomp: Set NNP for TSYNC ESRCH flag test
Kees Cook <[email protected]>
net/compat: Add missing sock updates for SCM_RIGHTS
Kees Cook <[email protected]>
pidfd: Add missing sock updates for pidfd_getfd()
Zenghui Yu <[email protected]>
irqchip/gic-v4.1: Ensure accessing the correct RD when writing INVALLR
Huacai Chen <[email protected]>
irqchip/loongson-liointc: Fix misuse of gc->mask_cache
Jonathan McDowell <[email protected]>
net: stmmac: dwmac1000: provide multicast filter fallback
Jonathan McDowell <[email protected]>
net: ethernet: stmmac: Disable hardware multicast filter
Eugeniu Rosca <[email protected]>
media: vsp1: dl: Fix NULL pointer dereference on unbind
Mansur Alisha Shaik <[email protected]>
media: venus: fix multiple encoder crash
Paul Cercueil <[email protected]>
pinctrl: ingenic: Properly detect GPIO direction when configured for IRQ
Paul Cercueil <[email protected]>
pinctrl: ingenic: Enhance support for IRQ_TYPE_EDGE_BOTH
Michael Ellerman <[email protected]>
powerpc: Fix circular dependency between percpu.h and mmu.h
Michael Ellerman <[email protected]>
powerpc: Allow 4224 bytes of stack expansion for the signal frame
Christophe Leroy <[email protected]>
powerpc/ptdump: Fix build failure in hashpagetable.c
Paul Aurich <[email protected]>
cifs: Fix leak when handling lease break for cached root fid
Max Filippov <[email protected]>
xtensa: fix xtensa_pmu_setup prototype
Max Filippov <[email protected]>
xtensa: add missing exclusive access state management
Lorenzo Bianconi <[email protected]>
iio: imu: st_lsm6dsx: reset hw ts after resume
Alexandru Ardelean <[email protected]>
iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw()
Christian Eggers <[email protected]>
dt-bindings: iio: io-channel-mux: Fix compatible string in example code
Shaokun Zhang <[email protected]>
arm64: perf: Correct the event index in sysfs
Pavel Machek <[email protected]>
btrfs: fix return value mixup in btrfs_get_extent
Josef Bacik <[email protected]>
btrfs: make sure SB_I_VERSION doesn't get unset by remount
Qu Wenruo <[email protected]>
btrfs: trim: fix underflow in trim length to prevent access beyond device boundary
Filipe Manana <[email protected]>
btrfs: fix memory leaks after failure to lookup checksums during inode logging
Qu Wenruo <[email protected]>
btrfs: inode: fix NULL pointer dereference if inode doesn't need compression
Josef Bacik <[email protected]>
btrfs: only search for left_info if there is no right_info in try_merge_free_space
David Sterba <[email protected]>
btrfs: fix messages after changing compression level by remount
Josef Bacik <[email protected]>
btrfs: don't show full path of bind mounts in subvol=
Filipe Manana <[email protected]>
btrfs: fix race between page release and a fast fsync
Josef Bacik <[email protected]>
btrfs: don't WARN if we abort a transaction with EROFS
Josef Bacik <[email protected]>
btrfs: sysfs: use NOFS for device creation
Josef Bacik <[email protected]>
btrfs: return EROFS for BTRFS_FS_STATE_ERROR cases
Qu Wenruo <[email protected]>
btrfs: avoid possible signal interruption of btrfs_drop_snapshot() on relocation tree
David Sterba <[email protected]>
btrfs: add missing check for nocow and compression inode flags
Qu Wenruo <[email protected]>
btrfs: relocation: review the call sites which can be interrupted by signal
Josef Bacik <[email protected]>
btrfs: move the chunk_mutex in btrfs_read_chunk_tree
Josef Bacik <[email protected]>
btrfs: open device without device_list_mutex
Johannes Thumshirn <[email protected]>
btrfs: pass checksum type via BTRFS_IOC_FS_INFO ioctl
Anand Jain <[email protected]>
btrfs: don't traverse into the seed devices in show_devname
Filipe Manana <[email protected]>
btrfs: remove no longer needed use of log_writers for the log root tree
Filipe Manana <[email protected]>
btrfs: only commit delayed items at fsync if we are logging a directory
Filipe Manana <[email protected]>
btrfs: stop incremening log_batch for the log root tree when syncing log
Filipe Manana <[email protected]>
btrfs: only commit the delayed inode when doing a full fsync
Tom Rix <[email protected]>
btrfs: ref-verify: fix memory leak in add_block_entry
Qu Wenruo <[email protected]>
btrfs: don't allocate anonymous block device for user invisible roots
Qu Wenruo <[email protected]>
btrfs: free anon block device right after subvolume deletion
David Sterba <[email protected]>
btrfs: allow use of global block reserve for balance item deletion
Ansuel Smith <[email protected]>
PCI: qcom: Add support for tx term offset for rev 2.1.0
Ansuel Smith <[email protected]>
PCI: qcom: Define some PARF params needed for ipq8064 SoC
Rajat Jain <[email protected]>
PCI: Add device even if driver attach failed
Kai-Heng Feng <[email protected]>
PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken
Ashok Raj <[email protected]>
PCI/ATS: Add pci_pri_supported() to check device or associated PF
Rafael J. Wysocki <[email protected]>
PCI: hotplug: ACPI: Fix context refcounting in acpiphp_grab_context()
Guenter Roeck <[email protected]>
genirq/PM: Always unlock IRQ descriptor in rearm_wake_irq()
Thomas Gleixner <[email protected]>
genirq/affinity: Make affinity setting if activated opt-in
Steve French <[email protected]>
smb3: warn on confusing error scenario with sec=krb5
-------------
Diffstat:
Documentation/admin-guide/hw-vuln/multihit.rst | 4 +
.../bindings/iio/multiplexer/io-channel-mux.txt | 2 +-
Makefile | 4 +-
arch/arm64/kernel/perf_event.c | 13 +-
arch/mips/Kconfig | 1 +
arch/mips/boot/dts/ingenic/qi_lb60.dts | 2 +-
arch/mips/kernel/topology.c | 2 +-
arch/openrisc/kernel/stacktrace.c | 18 ++-
arch/powerpc/include/asm/percpu.h | 4 +-
arch/powerpc/mm/fault.c | 7 +-
arch/powerpc/mm/ptdump/hashpagetable.c | 2 +-
arch/powerpc/platforms/pseries/hotplug-memory.c | 2 +-
arch/s390/Kconfig | 1 +
arch/s390/lib/test_unwind.c | 1 +
arch/sh/boards/mach-landisk/setup.c | 3 +
arch/x86/events/rapl.c | 2 +-
arch/x86/kernel/apic/vector.c | 4 +
arch/x86/kernel/cpu/bugs.c | 8 +-
arch/x86/kernel/tsc_msr.c | 9 +-
arch/xtensa/include/asm/thread_info.h | 4 +
arch/xtensa/kernel/asm-offsets.c | 3 +
arch/xtensa/kernel/entry.S | 11 ++
arch/xtensa/kernel/perf_event.c | 2 +-
crypto/af_alg.c | 11 +-
crypto/algif_aead.c | 10 +-
crypto/algif_skcipher.c | 11 +-
drivers/base/dd.c | 4 +-
drivers/clk/actions/owl-s500.c | 2 +-
drivers/clk/bcm/clk-bcm2835.c | 25 +++-
drivers/clk/qcom/clk-alpha-pll.c | 2 -
drivers/clk/qcom/gcc-sdm660.c | 3 +
drivers/clk/qcom/gcc-sm8150.c | 8 +-
drivers/clk/sirf/clk-atlas6.c | 2 +-
drivers/crypto/caam/caamalg.c | 29 -----
drivers/crypto/caam/compat.h | 1 -
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 8 +-
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 23 ++++
.../drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c | 69 +++++++++-
drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c | 5 +-
drivers/gpu/drm/drm_dp_mst_topology.c | 35 ++---
drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 +
drivers/gpu/drm/i915/gt/intel_gt.c | 5 +
drivers/gpu/drm/imx/imx-ldb.c | 7 +-
drivers/gpu/drm/ingenic/ingenic-drm.c | 2 +-
drivers/gpu/drm/omapdrm/dss/dispc.c | 1 +
drivers/gpu/drm/omapdrm/dss/dsi.c | 1 +
drivers/gpu/drm/omapdrm/dss/dss.c | 1 +
drivers/gpu/drm/omapdrm/dss/venc.c | 1 +
drivers/gpu/drm/panfrost/panfrost_gem.c | 2 +-
drivers/gpu/drm/panfrost/panfrost_mmu.c | 2 +-
drivers/gpu/drm/radeon/ni_dpm.c | 2 +-
drivers/gpu/drm/tidss/tidss_kms.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 8 +-
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 5 +-
drivers/gpu/ipu-v3/ipu-image-convert.c | 145 +++++++++++++--------
drivers/i2c/busses/i2c-bcm-iproc.c | 13 +-
drivers/i2c/busses/i2c-rcar.c | 15 ++-
drivers/iio/dac/ad5592r-base.c | 4 +-
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 3 +-
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 23 ++--
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 2 +-
drivers/infiniband/core/counters.c | 4 +-
drivers/infiniband/core/uverbs_cmd.c | 4 +
drivers/infiniband/hw/cxgb4/mem.c | 1 -
drivers/infiniband/hw/mlx4/mr.c | 1 -
drivers/infiniband/ulp/ipoib/ipoib.h | 2 +-
drivers/infiniband/ulp/ipoib/ipoib_ib.c | 67 +++++-----
drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 +
drivers/input/mouse/sentelic.c | 2 +-
drivers/iommu/intel-iommu.c | 2 +-
drivers/iommu/omap-iommu-debug.c | 3 +
drivers/irqchip/irq-gic-v3-its.c | 15 ++-
drivers/irqchip/irq-loongson-liointc.c | 10 +-
drivers/md/bcache/bcache.h | 2 +-
drivers/md/bcache/bset.c | 2 +-
drivers/md/bcache/btree.c | 2 +-
drivers/md/bcache/journal.c | 4 +-
drivers/md/bcache/super.c | 2 +-
drivers/md/bcache/writeback.c | 14 +-
drivers/md/bcache/writeback.h | 19 ++-
drivers/md/dm-rq.c | 3 -
drivers/md/dm.c | 3 +-
drivers/md/md-cluster.c | 1 +
drivers/md/raid5.c | 3 +-
drivers/media/platform/qcom/venus/pm_helpers.c | 4 +
drivers/media/platform/rockchip/rga/rga-hw.c | 29 +++--
drivers/media/platform/rockchip/rga/rga-hw.h | 5 +
drivers/media/platform/vsp1/vsp1_dl.c | 2 +
drivers/mfd/arizona-core.c | 18 +++
drivers/mfd/dln2.c | 4 +
drivers/mmc/host/renesas_sdhi_internal_dmac.c | 18 ++-
drivers/mtd/nand/raw/brcmnand/brcmnand.c | 26 ++++
drivers/mtd/nand/raw/fsl_upm.c | 1 -
drivers/net/ethernet/marvell/octeontx2/af/common.h | 2 +-
drivers/net/ethernet/qualcomm/emac/emac.c | 17 ++-
.../net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 1 +
.../net/ethernet/stmicro/stmmac/dwmac1000_core.c | 3 +
drivers/net/wireless/realtek/rtw88/pci.c | 9 ++
drivers/nvdimm/security.c | 13 +-
drivers/nvme/host/core.c | 15 +++
drivers/nvme/host/fabrics.c | 2 +-
drivers/nvme/host/fabrics.h | 3 +-
drivers/nvme/host/fc.c | 1 +
drivers/nvme/host/multipath.c | 18 ++-
drivers/nvme/host/nvme.h | 1 +
drivers/nvme/host/rdma.c | 10 +-
drivers/nvme/host/tcp.c | 15 ++-
drivers/pci/ats.c | 15 +++
drivers/pci/bus.c | 6 +-
drivers/pci/controller/dwc/pcie-qcom.c | 41 +++++-
drivers/pci/hotplug/acpiphp_glue.c | 14 +-
drivers/pci/quirks.c | 5 +-
drivers/pinctrl/pinctrl-ingenic.c | 9 +-
drivers/platform/chrome/cros_ec_ishtp.c | 4 +-
drivers/pwm/pwm-bcm-iproc.c | 9 +-
drivers/remoteproc/qcom_q6v5.c | 2 +
drivers/remoteproc/qcom_q6v5_mss.c | 11 +-
drivers/rtc/rtc-cpcap.c | 2 +-
drivers/rtc/rtc-pl031.c | 1 +
drivers/scsi/lpfc/lpfc_nvmet.c | 2 +-
drivers/staging/media/rkisp1/rkisp1-isp.c | 25 ++--
drivers/usb/serial/ftdi_sio.c | 57 ++++----
drivers/vdpa/vdpa_sim/vdpa_sim.c | 3 +-
drivers/watchdog/f71808e_wdt.c | 13 +-
drivers/watchdog/rti_wdt.c | 2 +
drivers/watchdog/watchdog_dev.c | 18 +--
fs/btrfs/ctree.h | 4 +-
fs/btrfs/disk-io.c | 13 +-
fs/btrfs/extent-io-tree.h | 2 +
fs/btrfs/extent-tree.c | 23 +++-
fs/btrfs/extent_io.c | 18 ++-
fs/btrfs/free-space-cache.c | 4 +-
fs/btrfs/inode.c | 20 ++-
fs/btrfs/ioctl.c | 46 +++++--
fs/btrfs/ref-verify.c | 2 +
fs/btrfs/relocation.c | 12 +-
fs/btrfs/scrub.c | 2 +-
fs/btrfs/super.c | 51 +++++---
fs/btrfs/sysfs.c | 3 +
fs/btrfs/transaction.c | 5 +-
fs/btrfs/tree-log.c | 43 ++----
fs/btrfs/volumes.c | 48 ++++++-
fs/ceph/dir.c | 4 +
fs/ceph/mds_client.c | 6 +-
fs/cifs/smb2misc.c | 73 ++++++++---
fs/cifs/smb2pdu.c | 2 +
fs/ext2/ialloc.c | 3 +-
fs/f2fs/compress.c | 2 +
fs/f2fs/data.c | 4 +
fs/gfs2/bmap.c | 69 +++++-----
fs/minix/inode.c | 12 +-
fs/minix/itree_v1.c | 12 +-
fs/minix/itree_v2.c | 13 +-
fs/minix/minix.h | 1 -
fs/nfs/file.c | 17 ++-
fs/nfs/flexfilelayout/flexfilelayout.c | 50 +++++--
fs/nfs/nfs4file.c | 5 +-
fs/nfs/nfs4proc.c | 2 -
fs/nfs/nfs4xdr.c | 6 +-
fs/nfs/pnfs.c | 4 +-
fs/nfs/pnfs.h | 2 +-
fs/ocfs2/ocfs2.h | 4 +-
fs/ocfs2/suballoc.c | 4 +-
fs/ocfs2/super.c | 4 +-
fs/ubifs/journal.c | 10 +-
fs/ufs/super.c | 2 +-
include/crypto/if_alg.h | 4 +-
include/linux/fs.h | 10 ++
include/linux/hugetlb.h | 8 +-
include/linux/intel-iommu.h | 4 +-
include/linux/irq.h | 13 ++
include/linux/pci-ats.h | 4 +
include/net/sock.h | 4 +
include/uapi/linux/btrfs.h | 14 +-
init/main.c | 14 +-
kernel/irq/manage.c | 6 +-
kernel/irq/pm.c | 8 +-
kernel/kprobes.c | 7 +
kernel/module.c | 22 +++-
kernel/pid.c | 7 +-
kernel/sched/core.c | 81 +++++++++++-
kernel/sched/cpufreq_schedutil.c | 2 +-
kernel/sched/sched.h | 47 ++++++-
kernel/trace/ftrace.c | 15 ++-
kernel/trace/trace_events.c | 4 +-
kernel/trace/trace_hwlat.c | 5 +-
lib/devres.c | 11 +-
lib/test_kmod.c | 2 +-
lib/test_lockup.c | 4 +-
mm/cma.c | 23 ++--
mm/hugetlb.c | 39 +++---
mm/khugepaged.c | 70 +++++-----
mm/memory_hotplug.c | 5 +-
mm/page_counter.c | 6 +-
mm/rmap.c | 2 +-
mm/shuffle.c | 18 +--
net/compat.c | 1 +
net/core/sock.c | 21 +++
net/mac80211/sta_info.c | 2 +-
scripts/recordmcount.c | 2 +
security/integrity/ima/ima_policy.c | 15 ++-
sound/pci/echoaudio/echoaudio.c | 2 -
sound/soc/tegra/tegra_alc5632.c | 7 +-
sound/soc/tegra/tegra_asoc_utils.c | 113 ++++++++--------
sound/soc/tegra/tegra_asoc_utils.h | 1 -
sound/soc/tegra/tegra_max98090.c | 22 +---
sound/soc/tegra/tegra_rt5640.c | 22 +---
sound/soc/tegra/tegra_rt5677.c | 7 +-
sound/soc/tegra/tegra_sgtl5000.c | 7 +-
sound/soc/tegra/tegra_wm8753.c | 22 +---
sound/soc/tegra/tegra_wm8903.c | 22 +---
sound/soc/tegra/tegra_wm9712.c | 8 +-
sound/soc/tegra/trimslice.c | 18 +--
tools/build/Makefile.feature | 2 +-
tools/build/feature/Makefile | 2 -
tools/perf/bench/mem-functions.c | 21 +--
.../perf/util/intel-pt-decoder/intel-pt-decoder.c | 29 ++---
tools/perf/util/probe-finder.c | 5 +-
tools/testing/selftests/bpf/Makefile | 5 +-
tools/testing/selftests/bpf/test_progs.c | 33 ++++-
tools/testing/selftests/bpf/test_progs.h | 2 +
.../testing/selftests/powerpc/ptrace/ptrace-pkey.c | 55 ++++----
tools/testing/selftests/seccomp/seccomp_bpf.c | 5 +
223 files changed, 1815 insertions(+), 933 deletions(-)
From: Kai-Heng Feng <[email protected]>
commit 45beb31d3afb651bb5c41897e46bd4fa9980c51c upstream.
We are seeing AMD Radeon Pro W5700 doesn't work when IOMMU is enabled:
iommu ivhd0: AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=63:00.0 address=0x42b5b01a0]
iommu ivhd0: AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=63:00.0 address=0x42b5b01c0]
The error also makes graphics driver fail to probe the device.
It appears to be the same issue as commit 5e89cd303e3a ("PCI: Mark AMD
Navi14 GPU rev 0xc5 ATS as broken") addresses, and indeed the same ATS
quirk can workaround the issue.
See-also: 5e89cd303e3a ("PCI: Mark AMD Navi14 GPU rev 0xc5 ATS as broken")
See-also: d28ca864c493 ("PCI: Mark AMD Stoney Radeon R7 GPU ATS as broken")
See-also: 9b44b0b09dec ("PCI: Mark AMD Stoney GPU ATS as broken")
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=208725
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Kai-Heng Feng <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
Acked-by: Alex Deucher <[email protected]>
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/pci/quirks.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -5207,7 +5207,8 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SE
*/
static void quirk_amd_harvest_no_ats(struct pci_dev *pdev)
{
- if (pdev->device == 0x7340 && pdev->revision != 0xc5)
+ if ((pdev->device == 0x7312 && pdev->revision != 0x00) ||
+ (pdev->device == 0x7340 && pdev->revision != 0xc5))
return;
pci_info(pdev, "disabling ATS\n");
@@ -5218,6 +5219,8 @@ static void quirk_amd_harvest_no_ats(str
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x98e4, quirk_amd_harvest_no_ats);
/* AMD Iceland dGPU */
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6900, quirk_amd_harvest_no_ats);
+/* AMD Navi10 dGPU */
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7312, quirk_amd_harvest_no_ats);
/* AMD Navi14 dGPU */
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7340, quirk_amd_harvest_no_ats);
#endif /* CONFIG_PCI_ATS */
From: Filipe Manana <[email protected]>
commit 8c8648dd1f6d62aeb912deeb788b6ac33cb782e7 upstream.
Commit 2c2c452b0cafdc ("Btrfs: fix fsync when extend references are added
to an inode") forced a commit of the delayed inode when logging an inode
in order to ensure we would end up logging the inode item during a full
fsync. By committing the delayed inode, we updated the inode item in the
fs/subvolume tree and then later when copying items from leafs modified in
the current transaction into the log tree (with copy_inode_items_to_log())
we ended up copying the inode item from the fs/subvolume tree into the log
tree. Logging an up to date version of the inode item is required to make
sure at log replay time we get the link count fixup triggered among other
things (replay xattr deletes, etc). The test case generic/040 from fstests
exercises the bug which that commit fixed.
However for a fast fsync we don't need to commit the delayed inode because
we always log an up to date version of the inode item based on the struct
btrfs_inode we have in-memory. We started doing this for fast fsyncs since
commit e4545de5b035c7 ("Btrfs: fix fsync data loss after append write").
So just stop committing the delayed inode if we are doing a fast fsync,
we are only wasting time and adding contention on fs/subvolume tree.
This patch is part of a series that has the following patches:
1/4 btrfs: only commit the delayed inode when doing a full fsync
2/4 btrfs: only commit delayed items at fsync if we are logging a directory
3/4 btrfs: stop incremening log_batch for the log root tree when syncing log
4/4 btrfs: remove no longer needed use of log_writers for the log root tree
After the entire patchset applied I saw about 12% decrease on max latency
reported by dbench. The test was done on a qemu vm, with 8 cores, 16Gb of
ram, using kvm and using a raw NVMe device directly (no intermediary fs on
the host). The test was invoked like the following:
mkfs.btrfs -f /dev/sdk
mount -o ssd -o nospace_cache /dev/sdk /mnt/sdk
dbench -D /mnt/sdk -t 300 8
umount /mnt/dsk
CC: [email protected] # 5.4+
Reviewed-by: Josef Bacik <[email protected]>
Signed-off-by: Filipe Manana <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/tree-log.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -5158,7 +5158,7 @@ static int btrfs_log_inode(struct btrfs_
struct btrfs_key max_key;
struct btrfs_root *log = root->log_root;
int err = 0;
- int ret;
+ int ret = 0;
bool fast_search = false;
u64 ino = btrfs_ino(inode);
struct extent_map_tree *em_tree = &inode->extent_tree;
@@ -5195,14 +5195,16 @@ static int btrfs_log_inode(struct btrfs_
/*
* Only run delayed items if we are a dir or a new file.
- * Otherwise commit the delayed inode only, which is needed in
- * order for the log replay code to mark inodes for link count
- * fixup (create temporary BTRFS_TREE_LOG_FIXUP_OBJECTID items).
+ * Otherwise commit the delayed inode only if the full sync flag is set,
+ * as we want to make sure an up to date version is in the subvolume
+ * tree so copy_inode_items_to_log() / copy_items() can find it and copy
+ * it to the log tree. For a non full sync, we always log the inode item
+ * based on the in-memory struct btrfs_inode which is always up to date.
*/
if (S_ISDIR(inode->vfs_inode.i_mode) ||
inode->generation > fs_info->last_trans_committed)
ret = btrfs_commit_inode_delayed_items(trans, inode);
- else
+ else if (test_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &inode->runtime_flags))
ret = btrfs_commit_inode_delayed_inode(inode);
if (ret) {
From: Qu Wenruo <[email protected]>
commit f3e3d9cc35252a70a2fd698762c9687718268ec6 upstream.
[BUG]
There is a bug report about bad signal timing could lead to read-only
fs during balance:
BTRFS info (device xvdb): balance: start -d -m -s
BTRFS info (device xvdb): relocating block group 73001861120 flags metadata
BTRFS info (device xvdb): found 12236 extents, stage: move data extents
BTRFS info (device xvdb): relocating block group 71928119296 flags data
BTRFS info (device xvdb): found 3 extents, stage: move data extents
BTRFS info (device xvdb): found 3 extents, stage: update data pointers
BTRFS info (device xvdb): relocating block group 60922265600 flags metadata
BTRFS: error (device xvdb) in btrfs_drop_snapshot:5505: errno=-4 unknown
BTRFS info (device xvdb): forced readonly
BTRFS info (device xvdb): balance: ended with status: -4
[CAUSE]
The direct cause is the -EINTR from the following call chain when a
fatal signal is pending:
relocate_block_group()
|- clean_dirty_subvols()
|- btrfs_drop_snapshot()
|- btrfs_start_transaction()
|- btrfs_delayed_refs_rsv_refill()
|- btrfs_reserve_metadata_bytes()
|- __reserve_metadata_bytes()
|- wait_reserve_ticket()
|- prepare_to_wait_event();
|- ticket->error = -EINTR;
Normally this behavior is fine for most btrfs_start_transaction()
callers, as they need to catch any other error, same for the signal, and
exit ASAP.
However for balance, especially for the clean_dirty_subvols() case, we're
already doing cleanup works, getting -EINTR from btrfs_drop_snapshot()
could cause a lot of unexpected problems.
>From the mentioned forced read-only report, to later balance error due
to half dropped reloc trees.
[FIX]
Fix this problem by using btrfs_join_transaction() if
btrfs_drop_snapshot() is called from relocation context.
Since btrfs_join_transaction() won't get interrupted by signal, we can
continue the cleanup.
CC: [email protected] # 5.4+
Reviewed-by: Josef Bacik <[email protected]>
Signed-off-by: Qu Wenruo <[email protected]>
Reviewed-by: David Sterba <[email protected]>3
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/extent-tree.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -5313,7 +5313,14 @@ int btrfs_drop_snapshot(struct btrfs_roo
goto out;
}
- trans = btrfs_start_transaction(tree_root, 0);
+ /*
+ * Use join to avoid potential EINTR from transaction start. See
+ * wait_reserve_ticket and the whole reservation callchain.
+ */
+ if (for_reloc)
+ trans = btrfs_join_transaction(tree_root);
+ else
+ trans = btrfs_start_transaction(tree_root, 0);
if (IS_ERR(trans)) {
err = PTR_ERR(trans);
goto out_free;
From: David Sterba <[email protected]>
commit 3502a8c0dc1bd4b4970b59b06e348f22a1c05581 upstream.
On a filesystem with exhausted metadata, but still enough to start
balance, it's possible to hit this error:
[324402.053842] BTRFS info (device loop0): 1 enospc errors during balance
[324402.060769] BTRFS info (device loop0): balance: ended with status: -28
[324402.172295] BTRFS: error (device loop0) in reset_balance_state:3321: errno=-28 No space left
It fails inside reset_balance_state and turns the filesystem to
read-only, which is unnecessary and should be fixed too, but the problem
is caused by lack for space when the balance item is deleted. This is a
one-time operation and from the same rank as unlink that is allowed to
use the global block reserve. So do the same for the balance item.
Status of the filesystem (100GiB) just after the balance fails:
$ btrfs fi df mnt
Data, single: total=80.01GiB, used=38.58GiB
System, single: total=4.00MiB, used=16.00KiB
Metadata, single: total=19.99GiB, used=19.48GiB
GlobalReserve, single: total=512.00MiB, used=50.11MiB
CC: [email protected] # 4.4+
Reviewed-by: Johannes Thumshirn <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/volumes.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -3235,7 +3235,7 @@ static int del_balance_item(struct btrfs
if (!path)
return -ENOMEM;
- trans = btrfs_start_transaction(root, 0);
+ trans = btrfs_start_transaction_fallback_global_rsv(root, 0);
if (IS_ERR(trans)) {
btrfs_free_path(path);
return PTR_ERR(trans);
From: Tom Rix <[email protected]>
commit d60ba8de1164e1b42e296ff270c622a070ef8fe7 upstream.
clang static analysis flags this error
fs/btrfs/ref-verify.c:290:3: warning: Potential leak of memory pointed to by 're' [unix.Malloc]
kfree(be);
^~~~~
The problem is in this block of code:
if (root_objectid) {
struct root_entry *exist_re;
exist_re = insert_root_entry(&exist->roots, re);
if (exist_re)
kfree(re);
}
There is no 'else' block freeing when root_objectid is 0. Add the
missing kfree to the else branch.
Fixes: fd708b81d972 ("Btrfs: add a extent ref verify tool")
CC: [email protected] # 4.19+
Signed-off-by: Tom Rix <[email protected]>
Reviewed-by: David Sterba <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/ref-verify.c | 2 ++
1 file changed, 2 insertions(+)
--- a/fs/btrfs/ref-verify.c
+++ b/fs/btrfs/ref-verify.c
@@ -286,6 +286,8 @@ static struct block_entry *add_block_ent
exist_re = insert_root_entry(&exist->roots, re);
if (exist_re)
kfree(re);
+ } else {
+ kfree(re);
}
kfree(be);
return exist;
From: Qu Wenruo <[email protected]>
commit 851fd730a743e072badaf67caf39883e32439431 upstream.
[BUG]
When a lot of subvolumes are created, there is a user report about
transaction aborted:
BTRFS: Transaction aborted (error -24)
WARNING: CPU: 17 PID: 17041 at fs/btrfs/transaction.c:1576 create_pending_snapshot+0xbc4/0xd10 [btrfs]
RIP: 0010:create_pending_snapshot+0xbc4/0xd10 [btrfs]
Call Trace:
create_pending_snapshots+0x82/0xa0 [btrfs]
btrfs_commit_transaction+0x275/0x8c0 [btrfs]
btrfs_mksubvol+0x4b9/0x500 [btrfs]
btrfs_ioctl_snap_create_transid+0x174/0x180 [btrfs]
btrfs_ioctl_snap_create_v2+0x11c/0x180 [btrfs]
btrfs_ioctl+0x11a4/0x2da0 [btrfs]
do_vfs_ioctl+0xa9/0x640
ksys_ioctl+0x67/0x90
__x64_sys_ioctl+0x1a/0x20
do_syscall_64+0x5a/0x110
entry_SYSCALL_64_after_hwframe+0x44/0xa9
---[ end trace 33f2f83f3d5250e9 ]---
BTRFS: error (device sda1) in create_pending_snapshot:1576: errno=-24 unknown
BTRFS info (device sda1): forced readonly
BTRFS warning (device sda1): Skipping commit of aborted transaction.
BTRFS: error (device sda1) in cleanup_transaction:1831: errno=-24 unknown
[CAUSE]
The error is EMFILE (Too many files open) and comes from the anonymous
block device allocation. The ids are in a shared pool of size 1<<20.
The ids are assigned to live subvolumes, ie. the root structure exists
in memory (eg. after creation or after the root appears in some path).
The pool could be exhausted if the numbers are not reclaimed fast
enough, after subvolume deletion or if other system component uses the
anon block devices.
[WORKAROUND]
Since it's not possible to completely solve the problem, we can only
minimize the time the id is allocated to a subvolume root.
Firstly, we can reduce the use of anon_dev by trees that are not
subvolume roots, like data reloc tree.
This patch will do extra check on root objectid, to skip roots that
don't need anon_dev. Currently it's only data reloc tree and orphan
roots.
Reported-by: Greed Rong <[email protected]>
Link: https://lore.kernel.org/linux-btrfs/CA+UqX+NTrZ6boGnWHhSeZmEY5J76CTqmYjO2S+=tHJX7nb9DPw@mail.gmail.com/
CC: [email protected] # 4.4+
Reviewed-by: Josef Bacik <[email protected]>
Signed-off-by: Qu Wenruo <[email protected]>
Reviewed-by: David Sterba <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/disk-io.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -1432,9 +1432,16 @@ static int btrfs_init_fs_root(struct btr
spin_lock_init(&root->ino_cache_lock);
init_waitqueue_head(&root->ino_cache_wait);
- ret = get_anon_bdev(&root->anon_dev);
- if (ret)
- goto fail;
+ /*
+ * Don't assign anonymous block device to roots that are not exposed to
+ * userspace, the id pool is limited to 1M
+ */
+ if (is_fstree(root->root_key.objectid) &&
+ btrfs_root_refs(&root->root_item) > 0) {
+ ret = get_anon_bdev(&root->anon_dev);
+ if (ret)
+ goto fail;
+ }
mutex_lock(&root->objectid_mutex);
ret = btrfs_find_highest_objectid(root,
From: Filipe Manana <[email protected]>
commit 5aa7d1a7f4a2f8ca6be1f32415e9365d026e8fa7 upstream.
When logging an inode we are committing its delayed items if either the
inode is a directory or if it is a new inode, created in the current
transaction.
We need to do it for directories, since new directory indexes are stored
as delayed items of the inode and when logging a directory we need to be
able to access all indexes from the fs/subvolume tree in order to figure
out which index ranges need to be logged.
However for new inodes that are not directories, we do not need to do it
because the only type of delayed item they can have is the inode item, and
we are guaranteed to always log an up to date version of the inode item:
*) for a full fsync we do it by committing the delayed inode and then
copying the item from the fs/subvolume tree with
copy_inode_items_to_log();
*) for a fast fsync we always log the inode item based on the contents of
the in-memory struct btrfs_inode. We guarantee this is always done since
commit e4545de5b035c7 ("Btrfs: fix fsync data loss after append write").
So stop running delayed items for a new inodes that are not directories,
since that forces committing the delayed inode into the fs/subvolume tree,
wasting time and adding contention to the tree when a full fsync is not
required. We will only do it in case a fast fsync is needed.
This patch is part of a series that has the following patches:
1/4 btrfs: only commit the delayed inode when doing a full fsync
2/4 btrfs: only commit delayed items at fsync if we are logging a directory
3/4 btrfs: stop incremening log_batch for the log root tree when syncing log
4/4 btrfs: remove no longer needed use of log_writers for the log root tree
After the entire patchset applied I saw about 12% decrease on max latency
reported by dbench. The test was done on a qemu vm, with 8 cores, 16Gb of
ram, using kvm and using a raw NVMe device directly (no intermediary fs on
the host). The test was invoked like the following:
mkfs.btrfs -f /dev/sdk
mount -o ssd -o nospace_cache /dev/sdk /mnt/sdk
dbench -D /mnt/sdk -t 300 8
umount /mnt/dsk
CC: [email protected] # 5.4+
Reviewed-by: Josef Bacik <[email protected]>
Signed-off-by: Filipe Manana <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/tree-log.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -5150,7 +5150,6 @@ static int btrfs_log_inode(struct btrfs_
const loff_t end,
struct btrfs_log_ctx *ctx)
{
- struct btrfs_fs_info *fs_info = root->fs_info;
struct btrfs_path *path;
struct btrfs_path *dst_path;
struct btrfs_key min_key;
@@ -5193,15 +5192,17 @@ static int btrfs_log_inode(struct btrfs_
max_key.offset = (u64)-1;
/*
- * Only run delayed items if we are a dir or a new file.
+ * Only run delayed items if we are a directory. We want to make sure
+ * all directory indexes hit the fs/subvolume tree so we can find them
+ * and figure out which index ranges have to be logged.
+ *
* Otherwise commit the delayed inode only if the full sync flag is set,
* as we want to make sure an up to date version is in the subvolume
* tree so copy_inode_items_to_log() / copy_items() can find it and copy
* it to the log tree. For a non full sync, we always log the inode item
* based on the in-memory struct btrfs_inode which is always up to date.
*/
- if (S_ISDIR(inode->vfs_inode.i_mode) ||
- inode->generation > fs_info->last_trans_committed)
+ if (S_ISDIR(inode->vfs_inode.i_mode))
ret = btrfs_commit_inode_delayed_items(trans, inode);
else if (test_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &inode->runtime_flags))
ret = btrfs_commit_inode_delayed_inode(inode);
From: Filipe Manana <[email protected]>
commit 28a9579561bcb9082715e720eac93012e708ab94 upstream.
We are incrementing the log_batch atomic counter of the root log tree but
we never use that counter, it's used only for the log trees of subvolume
roots. We started doing it when we moved the log_batch and log_write
counters from the global, per fs, btrfs_fs_info structure, into the
btrfs_root structure in commit 7237f1833601dc ("Btrfs: fix tree logs
parallel sync").
So just stop doing it for the log root tree and add a comment over the
field declaration so inform it's used only for log trees of subvolume
roots.
This patch is part of a series that has the following patches:
1/4 btrfs: only commit the delayed inode when doing a full fsync
2/4 btrfs: only commit delayed items at fsync if we are logging a directory
3/4 btrfs: stop incremening log_batch for the log root tree when syncing log
4/4 btrfs: remove no longer needed use of log_writers for the log root tree
After the entire patchset applied I saw about 12% decrease on max latency
reported by dbench. The test was done on a qemu vm, with 8 cores, 16Gb of
ram, using kvm and using a raw NVMe device directly (no intermediary fs on
the host). The test was invoked like the following:
mkfs.btrfs -f /dev/sdk
mount -o ssd -o nospace_cache /dev/sdk /mnt/sdk
dbench -D /mnt/sdk -t 300 8
umount /mnt/dsk
CC: [email protected] # 5.4+
Reviewed-by: Josef Bacik <[email protected]>
Signed-off-by: Filipe Manana <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/ctree.h | 1 +
fs/btrfs/tree-log.c | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1040,6 +1040,7 @@ struct btrfs_root {
struct list_head log_ctxs[2];
atomic_t log_writers;
atomic_t log_commit[2];
+ /* Used only for log trees of subvolumes, not for the log root tree */
atomic_t log_batch;
int log_transid;
/* No matter the commit succeeds or not*/
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -3125,7 +3125,6 @@ int btrfs_sync_log(struct btrfs_trans_ha
btrfs_init_log_ctx(&root_log_ctx, NULL);
mutex_lock(&log_root_tree->log_mutex);
- atomic_inc(&log_root_tree->log_batch);
atomic_inc(&log_root_tree->log_writers);
index2 = log_root_tree->log_transid % 2;
From: Steve French <[email protected]>
commit 0a018944eee913962bce8ffebbb121960d5125d9 upstream.
When mounting with Kerberos, users have been confused about the
default error returned in scenarios in which either keyutils is
not installed or the user did not properly acquire a krb5 ticket.
Log a warning message in the case that "ENOKEY" is returned
from the get_spnego_key upcall so that users can better understand
why mount failed in those two cases.
CC: Stable <[email protected]>
Signed-off-by: Steve French <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/cifs/smb2pdu.c | 2 ++
1 file changed, 2 insertions(+)
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -1347,6 +1347,8 @@ SMB2_auth_kerberos(struct SMB2_sess_data
spnego_key = cifs_get_spnego_key(ses);
if (IS_ERR(spnego_key)) {
rc = PTR_ERR(spnego_key);
+ if (rc == -ENOKEY)
+ cifs_dbg(VFS, "Verify user has a krb5 ticket and keyutils is installed\n");
spnego_key = NULL;
goto out;
}
From: Qu Wenruo <[email protected]>
commit 082b6c970f02fefd278c7833880cda29691a5f34 upstream.
[BUG]
When a lot of subvolumes are created, there is a user report about
transaction aborted caused by slow anonymous block device reclaim:
BTRFS: Transaction aborted (error -24)
WARNING: CPU: 17 PID: 17041 at fs/btrfs/transaction.c:1576 create_pending_snapshot+0xbc4/0xd10 [btrfs]
RIP: 0010:create_pending_snapshot+0xbc4/0xd10 [btrfs]
Call Trace:
create_pending_snapshots+0x82/0xa0 [btrfs]
btrfs_commit_transaction+0x275/0x8c0 [btrfs]
btrfs_mksubvol+0x4b9/0x500 [btrfs]
btrfs_ioctl_snap_create_transid+0x174/0x180 [btrfs]
btrfs_ioctl_snap_create_v2+0x11c/0x180 [btrfs]
btrfs_ioctl+0x11a4/0x2da0 [btrfs]
do_vfs_ioctl+0xa9/0x640
ksys_ioctl+0x67/0x90
__x64_sys_ioctl+0x1a/0x20
do_syscall_64+0x5a/0x110
entry_SYSCALL_64_after_hwframe+0x44/0xa9
---[ end trace 33f2f83f3d5250e9 ]---
BTRFS: error (device sda1) in create_pending_snapshot:1576: errno=-24 unknown
BTRFS info (device sda1): forced readonly
BTRFS warning (device sda1): Skipping commit of aborted transaction.
BTRFS: error (device sda1) in cleanup_transaction:1831: errno=-24 unknown
[CAUSE]
The anonymous device pool is shared and its size is 1M. It's possible to
hit that limit if the subvolume deletion is not fast enough and the
subvolumes to be cleaned keep the ids allocated.
[WORKAROUND]
We can't avoid the anon device pool exhaustion but we can shorten the
time the id is attached to the subvolume root once the subvolume becomes
invisible to the user.
Reported-by: Greed Rong <[email protected]>
Link: https://lore.kernel.org/linux-btrfs/CA+UqX+NTrZ6boGnWHhSeZmEY5J76CTqmYjO2S+=tHJX7nb9DPw@mail.gmail.com/
CC: [email protected] # 4.4+
Reviewed-by: Josef Bacik <[email protected]>
Signed-off-by: Qu Wenruo <[email protected]>
Reviewed-by: David Sterba <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
fs/btrfs/inode.c | 2 ++
1 file changed, 2 insertions(+)
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4049,6 +4049,8 @@ int btrfs_delete_subvolume(struct inode
}
}
+ free_anon_bdev(dest->anon_dev);
+ dest->anon_dev = 0;
out_end_trans:
trans->block_rsv = NULL;
trans->bytes_reserved = 0;
On Thu, 20 Aug 2020 at 15:06, Greg Kroah-Hartman
<[email protected]> wrote:
>
> This is the start of the stable review cycle for the 5.7.17 release.
> There are 204 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Sat, 22 Aug 2020 09:15:09 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.17-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
> Herbert Xu <[email protected]>
> crypto: af_alg - Fix regression on empty requests
Results from Linaro’s test farm.
Regressions detected.
LTP crypto af_alg02 and cve-2017-17805 failed on stable-rc 5.7 and 5.8
branches on arm, arm64, i386 and x86_64.
ltp-crypto-tests:
* af_alg02
ltp-cve-tests:
* cve-2017-17805
Summary
------------------------------------------------------------------------
kernel: 5.7.17-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-5.7.y
git commit: 7366707e7e9962245a618a0aee04c22ab31115c2
git describe: v5.7.16-205-g7366707e7e99
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-5.7-oe/build/v5.7.16-205-g7366707e7e99
Regressions (compared to build v5.7.16)
------------------------------------------------------------------------
ltp-crypto-tests:
* af_alg02
ltp-cve-tests:
* cve-2017-17805
--
Linaro LKFT
https://lkft.linaro.org
On Thu, Aug 20, 2020 at 11:18:17AM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.7.17 release.
> There are 204 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Sat, 22 Aug 2020 09:15:09 +0000.
> Anything received after that time might be too late.
>
Build results:
total: 158 pass: 158 fail: 0
Qemu test results:
total: 431 pass: 431 fail: 0
Tested-by: Guenter Roeck <[email protected]>
Guenter
On 8/20/20 3:18 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.7.17 release.
> There are 204 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Sat, 22 Aug 2020 09:15:09 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.17-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
Compiled and booted on my test system. No dmesg regressions.
Tested-by: Shuah Khan <[email protected]>
thanks,
-- Shuah
On Thu, 20 Aug 2020 at 22:34, Naresh Kamboju <[email protected]> wrote:
>
> On Thu, 20 Aug 2020 at 15:06, Greg Kroah-Hartman
> <[email protected]> wrote:
> >
> > This is the start of the stable review cycle for the 5.7.17 release.
> > There are 204 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Sat, 22 Aug 2020 09:15:09 +0000.
> > Anything received after that time might be too late.
> >
> > The whole patch series can be found in one patch at:
> > https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.17-rc1.gz
> > or in the git tree and branch at:
> > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
> > and the diffstat can be found below.
> >
> > thanks,
> >
> > greg k-h
>
> > Herbert Xu <[email protected]>
> > crypto: af_alg - Fix regression on empty requests
>
> Results from Linaro’s test farm.
> Regressions detected.
>
> LTP crypto af_alg02 and cve-2017-17805 failed on stable-rc 5.7 and 5.8
> branches on arm, arm64, i386 and x86_64.
Apart from the reported LTP crypto test case problem all other results
look good to me.
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
Summary
------------------------------------------------------------------------
kernel: 5.7.17
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-5.7.y
git commit: 3f45898cffc4e386952f3e4821810500adccea1f
git describe: v5.7.17
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-5.7-oe/build/v5.7.17
No regressions (compared to build v5.7.16)
No fixes (compared to build v5.7.16)
Ran 32841 total tests in the following environments and test suites.
Environments
--------------
- dragonboard-410c
- hi6220-hikey
- i386
- juno-r2
- nxp-ls2088
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15
- x86
- x86-kasan
Test Suites
-----------
* build
* install-android-platform-tools-r2600
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-hugetlb-tests
* ltp-ipc-tests
* ltp-mm-tests
* ltp-sched-tests
* perf
* ltp-containers-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-securebits-tests
* v4l2-compliance
* libhugetlbfs
* ltp-commands-tests
* ltp-controllers-tests
* ltp-cve-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-io-tests
* ltp-math-tests
* ltp-open-posix-tests
* ltp-syscalls-tests
* ltp-tracing-tests
* network-basic-tests
* igt-gpu-tools
* kselftest
* kselftest/drivers
* kselftest/filesystems
* kselftest/net
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-native/drivers
* kselftest-vsyscall-mode-native/filesystems
* kselftest-vsyscall-mode-native/net
* kselftest-vsyscall-mode-none
* kselftest-vsyscall-mode-none/drivers
* kselftest-vsyscall-mode-none/filesystems
* kselftest-vsyscall-mode-none/net
--
Linaro LKFT
https://lkft.linaro.org