2020-10-04 23:22:22

by Linus Torvalds

[permalink] [raw]
Subject: Linux 5.9-rc8

So things have been pretty calm, and rc8 is fairly small. I'm still
waiting for a networking pull with some fixes, so it's not like I
could have made a final 5.9 release even if I had wanted to, but there
was nothing scary going on this past week, and it all feels ready for
a final 5.9 next weekend.

In fact, a lot of the emails I'm seeing are about the next merge
window, and I already have one pull request ready to go, which is all
good. That's how it's all supposed to work.

Anyway, the changes in rc8 are mostly driver fixlets, with some AMD
GPU header file updates being a fairly noticeable part of the patch.
That's not some scary big change - it' just the usual register
definition update (and much smaller than the wholesale big ones we've
had).

Outside of the driver stuff, we do have a few filesystem fixes (btrfs
and nfs), and a couple of core fixes (tiny fallout from the VM
changes, but also a pipe splice race fixlet for stable and a couple of
epoll fixes). And slime other small noise (small arch and DT fixes).
Quite a small diffstat overall - which it obviously should be this
late in the release.

One final push for testing this week,

Linus

---

Adrian Huang (1):
iommu/amd: Fix the overwritten field in IVMD header

Ahmad Fatoum (1):
gpio: siox: explicitly support only threaded irqs

Al Viro (4):
epoll: do not insert into poll queues until all sanity checks are done
epoll: replace ->visited/visited_list with generation count
epoll: EPOLL_CTL_ADD: close the race in decision to take fast path
ep_create_wakeup_source(): dentry name can change under you...

Alex Deucher (6):
drm/amdgpu: add the GC 10.3 VRS registers
drm/amdgpu: add VCN 3.0 AV1 registers
drm/amdgpu: use the AV1 defines for VCN 3.0
drm/amdgpu: remove experimental flag from navi12
drm/amdgpu/display: fix CFLAGS setup for DCN30
drm/amdgpu/swsmu/smu12: fix force clock handling for mclk

Andy Shevchenko (3):
gpiolib: Fix line event handling in syscall compatible mode
gpio: pca953x: Use bitmap API over implicit GCC extension
gpio: pca953x: Correctly initialize registers 6 and 7 for PCA957x

Anup Patel (1):
RISC-V: Check clint_time_val before use

Ard Biesheuvel (1):
arm64: permit ACPI core to map kernel memory used for table overrides

Bartosz Golaszewski (1):
gpio: mockup: fix resource leak in error path

Bryan O'Donoghue (1):
USB: gadget: f_ncm: Fix NDP16 datagram validation

Chris Packham (1):
pinctrl: mvebu: Fix i2c sda definition for 98DX3236

Dan Carpenter (1):
phy: ti: am654: Fix a leak in serdes_am654_probe()

Dinh Nguyen (1):
clk: socfpga: stratix10: fix the divider for the emac_ptp_free_clk

Dirk Gouders (1):
drm/amd/display: remove duplicate call to rn_vbios_smu_get_smu_version()

Dmitry Baryshkov (2):
iio: adc: qcom-spmi-adc5: fix driver name
pinctrl: qcom: sm8250: correct sdc2_clk

Ed Wildgoose (1):
gpio: amd-fch: correct logic of GPIO_LINE_DIRECTION

Eli Cohen (1):
vhost: Fix documentation

Eric Biggers (1):
scripts/spelling.txt: fix malformed entry

Eric Farman (1):
mm, slub: restore initial kmem_cache flags

Evan Quan (1):
drm/amd/pm: setup APU dpm clock table in SMU HW initialization

Filipe Manana (1):
btrfs: fix filesystem corruption after a device replace

Flora Cui (1):
drm/amd/display: fix return value check for hdcp_work

Hanks Chen (1):
pinctrl: mediatek: check mtk_is_virt_gpio input parameter

Hans de Goede (2):
pinctrl: cherryview: Preserve CHV_PADCTRL1_INVRXTX_TXDATA flag on GPIOs
mmc: sdhci: Workaround broken command queuing on Intel GLK based
IRBIS models

Hao Xu (1):
io_uring: fix async buffered reads when readahead is disabled

Jason A. Donenfeld (1):
mm: do not rely on mm == current->mm in __get_user_pages_locked

Jason Wang (1):
vhost-vdpa: fix backend feature ioctls

Jean Delvare (2):
i2c: i801: Exclude device from suspend direct complete optimization
drm/amdgpu: restore proper ref count in amdgpu_display_crtc_set_config

Jeffrey Mitchell (1):
nfs: Fix security label length not being reset

Jens Axboe (2):
io_uring: always delete double poll wait entry on match
io_uring: fix potential ABBA deadlock in ->show_fdinfo()

Jeremy Kerr (2):
gpio/aspeed-sgpio: enable access to all 80 input & output sgpios
gpio/aspeed-sgpio: don't enable all interrupts by default

Jiansong Chen (2):
drm/amdgpu: remove gpu_info fw support for sienna_cichlid etc.
drm/amdgpu: disable gfxoff temporarily for navy_flounder

Jiri Kosina (1):
Input: i8042 - add nopnp quirk for Acer Aspire 5 A515

Joonsoo Kim (1):
mm/page_alloc: handle a missing case for
memalloc_nocma_{save/restore} APIs

Josef Bacik (2):
btrfs: move btrfs_scratch_superblocks into btrfs_dev_replace_finishing
btrfs: move btrfs_rm_dev_replace_free_srcdev outside of all locks

Juergen Gross (1):
xen/events: don't use chip_data for legacy IRQs

Kai-Heng Feng (1):
memstick: Skip allocating card when removing host

Likun Gao (1):
drm/amdgpu: add device ID for sienna_cichlid (v2)

Linus Torvalds (3):
autofs: use __kernel_write() for the autofs pipe writing
pipe: remove pipe_wait() and fix wakeup race with splice
Linux 5.9-rc8

Lorenzo Pieralisi (1):
PCI: rockchip: Fix bus checks in rockchip_pcie_valid_device()

Lu Baolu (1):
iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb()

M. Vefa Bicakci (4):
Revert "usbip: Implement a match function to fix usbip"
usbcore/driver: Fix specific driver selection
usbcore/driver: Fix incorrect downcast
usbcore/driver: Accommodate usbip

Marc Zyngier (1):
KVM: arm64: Restore missing ISB on nVHE __tlb_switch_to_guest

Marek Behún (1):
dt-bindings: leds: cznic,turris-omnia-leds: fix error in binding

Marek Szyprowski (2):
clk: samsung: Keep top BPLL mux on Exynos542x enabled
clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED

Mark Mielke (1):
scsi: iscsi: iscsi_tcp: Avoid holding spinlock while calling getpeername()

Maxime Ripard (1):
ARM: dts: bcm2835: Change firmware compatible from simple-bus to
simple-mfd

Mircea Caprioru (1):
iio: adc: ad7124: Fix typo in device name

Nicolas VINCENT (1):
i2c: cpm: Fix i2c_ram structure

Olga Kornievskaia (1):
NFSv4.2: fix client's attribute cache management for copy_file_range

Pali Rohár (1):
MAINTAINERS: Add Pali Rohár as aardvark PCI maintainer

Palmer Dabbelt (1):
clocksource: clint: Export clint_time_val for modules

Paolo Bonzini (1):
KVM: VMX: update PFEC_MASK/PFEC_MATCH together with PF intercept

Philip Yang (1):
drm/amdgpu: prevent double kfree ttm->sg

Rob Herring (1):
dt-bindings: Fix 'reg' size issues in zynqmp examples

Roman Gushchin (1):
mm: memcg/slab: fix slab statistics in !SMP configuration

Steven Rostedt (VMware) (2):
tracing: Fix trace_find_next_entry() accounting of temp buffer size
ftrace: Move RCU is watching check after recursion check

Sudhakar Panneerselvam (1):
scsi: target: Fix lun lookup for TARGET_SCF_LOOKUP_LUN_FROM_TAG case

Sudheesh Mavila (1):
drm/amd/pm: Removed fixed clock in auto mode DPM

Taiping Lai (1):
gpio: sprd: Clear interrupt when setting the type as edge

Tali Perry (1):
i2c: npcm7xx: Clear LAST bit after a failed transaction.

Tao Ren (1):
gpio: aspeed: fix ast2600 bank properties

Tero Kristo (1):
dt-bindings: crypto: sa2ul: fix a DT binding check warning

Thibaut Sautereau (1):
random32: Restore __latent_entropy attribute on net_rand_state

Thierry Reding (3):
clk: tegra: Capitalization fixes
clk: tegra: Always program PLL_E when enabled
clk: tegra: Fix missing prototype for tegra210_clk_register_emc()

Tony Lindgren (1):
gpio: omap: Fix warnings if PM is disabled

Trond Myklebust (2):
pNFS/flexfiles: Ensure we initialise the mirror bsizes correctly on read
pNFS/flexfiles: Be consistent about mirror index types

Ulf Hansson (1):
ARM: imx6q: Fixup RCU usage for cpuidle

Uwe Kleine-König (1):
scripts/dtc: only append to HOST_EXTRACFLAGS instead of overwriting

Vincent Huang (1):
Input: trackpoint - enable Synaptics trackpoints

Vladimir Murzin (1):
dmaengine: dmatest: Prevent to run on misconfigured channel

Ye Li (1):
gpio: pca953x: Fix uninitialized pending variable

Yoann Congal (1):
Documentation: PM: Fix a reStructuredText syntax error

Yu Kuai (1):
iommu/exynos: add missing put_device() call in exynos_iommu_of_xlate()

Zack Rusin (1):
drm/vmwgfx: Fix error handling in get_node

Zhang Rui (1):
cpufreq: intel_pstate: Fix missing return statement

dillon min (1):
gpio: tc35894: fix up tc35894 interrupt configuration

yangerkun (1):
blk-mq: call commit_rqs while list empty but error happen


2020-10-05 08:24:15

by Josh Triplett

[permalink] [raw]
Subject: ext4 regression in v5.9-rc2 from e7bfb5c9bb3d on ro fs with overlapped bitmaps

Ran into an ext4 regression when testing upgrades to 5.9-rc kernels:

Commit e7bfb5c9bb3d ("ext4: handle add_system_zone() failure in
ext4_setup_system_zone()") breaks mounting of read-only ext4 filesystems
with intentionally overlapping bitmap blocks.

On an always-read-only filesystem explicitly marked with
EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS, prior to that commit, it's safe to
point all the block and inode bitmaps to a single block of all 1s,
because a read-only filesystem will never allocate or free any blocks or
inodes.

However, after that commit, the block validity check rejects such
filesystems with -EUCLEAN and "failed to initialize system zone (-117)".
This causes systems that previously worked correctly to fail when
upgrading to v5.9-rc2 or later.

This was obviously a bugfix, and I'm not suggesting that it should be
reverted; it looks like this effectively worked by accident before,
because the block_validity check wasn't fully functional. However, this
does break real systems, and I'd like to get some kind of regression fix
in before 5.9 final if possible. I think it would suffice to make
block_validity default to false if and only if
EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS is set.

Does that seem like a reasonable fix?

Here's a quick sketch of a patch, which I've tested and confirmed to
work:

----- 8< -----
Subject: [PATCH] Fix ext4 regression in v5.9-rc2 on ro fs with overlapped bitmaps

Commit e7bfb5c9bb3d ("ext4: handle add_system_zone() failure in
ext4_setup_system_zone()") breaks mounting of read-only ext4 filesystems
with intentionally overlapping bitmap blocks.

On an always-read-only filesystem explicitly marked with
EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS, prior to that commit, it's safe to
point all the block and inode bitmaps to a single block of all 1s,
because a read-only filesystem will never allocate or free any blocks or
inodes.

However, after that commit, the block validity check rejects such
filesystems with -EUCLEAN and "failed to initialize system zone (-117)".
This causes systems that previously worked correctly to fail when
upgrading to v5.9-rc2 or later.

Fix this by defaulting block_validity to off when
EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS is set.

Signed-off-by: Josh Triplett <[email protected]>
Fixes: e7bfb5c9bb3d ("ext4: handle add_system_zone() failure in ext4_setup_system_zone()")
---
fs/ext4/ext4.h | 2 ++
fs/ext4/super.c | 3 ++-
2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 523e00d7b392..7874028fa864 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1834,6 +1834,7 @@ static inline bool ext4_verity_in_progress(struct inode *inode)
#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 0x0400
#define EXT4_FEATURE_RO_COMPAT_READONLY 0x1000
#define EXT4_FEATURE_RO_COMPAT_PROJECT 0x2000
+#define EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS 0x4000
#define EXT4_FEATURE_RO_COMPAT_VERITY 0x8000

#define EXT4_FEATURE_INCOMPAT_COMPRESSION 0x0001
@@ -1930,6 +1931,7 @@ EXT4_FEATURE_RO_COMPAT_FUNCS(bigalloc, BIGALLOC)
EXT4_FEATURE_RO_COMPAT_FUNCS(metadata_csum, METADATA_CSUM)
EXT4_FEATURE_RO_COMPAT_FUNCS(readonly, READONLY)
EXT4_FEATURE_RO_COMPAT_FUNCS(project, PROJECT)
+EXT4_FEATURE_RO_COMPAT_FUNCS(shared_blocks, SHARED_BLOCKS)
EXT4_FEATURE_RO_COMPAT_FUNCS(verity, VERITY)

EXT4_FEATURE_INCOMPAT_FUNCS(compression, COMPRESSION)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index ea425b49b345..f57a7e966e44 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3954,7 +3954,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
else
set_opt(sb, ERRORS_RO);
/* block_validity enabled by default; disable with noblock_validity */
- set_opt(sb, BLOCK_VALIDITY);
+ if (!ext4_has_feature_shared_blocks(sb))
+ set_opt(sb, BLOCK_VALIDITY);
if (def_mount_opts & EXT4_DEFM_DISCARD)
set_opt(sb, DISCARD);

2020-10-05 16:22:41

by Jan Kara

[permalink] [raw]
Subject: Re: ext4 regression in v5.9-rc2 from e7bfb5c9bb3d on ro fs with overlapped bitmaps

On Mon 05-10-20 01:14:54, Josh Triplett wrote:
> Ran into an ext4 regression when testing upgrades to 5.9-rc kernels:
>
> Commit e7bfb5c9bb3d ("ext4: handle add_system_zone() failure in
> ext4_setup_system_zone()") breaks mounting of read-only ext4 filesystems
> with intentionally overlapping bitmap blocks.
>
> On an always-read-only filesystem explicitly marked with
> EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS, prior to that commit, it's safe to
> point all the block and inode bitmaps to a single block of all 1s,
> because a read-only filesystem will never allocate or free any blocks or
> inodes.
>
> However, after that commit, the block validity check rejects such
> filesystems with -EUCLEAN and "failed to initialize system zone (-117)".
> This causes systems that previously worked correctly to fail when
> upgrading to v5.9-rc2 or later.
>
> This was obviously a bugfix, and I'm not suggesting that it should be
> reverted; it looks like this effectively worked by accident before,
> because the block_validity check wasn't fully functional. However, this
> does break real systems, and I'd like to get some kind of regression fix
> in before 5.9 final if possible. I think it would suffice to make
> block_validity default to false if and only if
> EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS is set.
>
> Does that seem like a reasonable fix?
>
> Here's a quick sketch of a patch, which I've tested and confirmed to
> work:
>
> ----- 8< -----
> Subject: [PATCH] Fix ext4 regression in v5.9-rc2 on ro fs with overlapped bitmaps
>
> Commit e7bfb5c9bb3d ("ext4: handle add_system_zone() failure in
> ext4_setup_system_zone()") breaks mounting of read-only ext4 filesystems
> with intentionally overlapping bitmap blocks.
>
> On an always-read-only filesystem explicitly marked with
> EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS, prior to that commit, it's safe to
> point all the block and inode bitmaps to a single block of all 1s,
> because a read-only filesystem will never allocate or free any blocks or
> inodes.
>
> However, after that commit, the block validity check rejects such
> filesystems with -EUCLEAN and "failed to initialize system zone (-117)".
> This causes systems that previously worked correctly to fail when
> upgrading to v5.9-rc2 or later.
>
> Fix this by defaulting block_validity to off when
> EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS is set.
>
> Signed-off-by: Josh Triplett <[email protected]>
> Fixes: e7bfb5c9bb3d ("ext4: handle add_system_zone() failure in ext4_setup_system_zone()")

The patch looks fine to me. Thanks for fixing this and for educating me
about the feature :) You can add:

Reviewed-by: Jan Kara <[email protected]>

Honza


> ---
> fs/ext4/ext4.h | 2 ++
> fs/ext4/super.c | 3 ++-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
> index 523e00d7b392..7874028fa864 100644
> --- a/fs/ext4/ext4.h
> +++ b/fs/ext4/ext4.h
> @@ -1834,6 +1834,7 @@ static inline bool ext4_verity_in_progress(struct inode *inode)
> #define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 0x0400
> #define EXT4_FEATURE_RO_COMPAT_READONLY 0x1000
> #define EXT4_FEATURE_RO_COMPAT_PROJECT 0x2000
> +#define EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS 0x4000
> #define EXT4_FEATURE_RO_COMPAT_VERITY 0x8000
>
> #define EXT4_FEATURE_INCOMPAT_COMPRESSION 0x0001
> @@ -1930,6 +1931,7 @@ EXT4_FEATURE_RO_COMPAT_FUNCS(bigalloc, BIGALLOC)
> EXT4_FEATURE_RO_COMPAT_FUNCS(metadata_csum, METADATA_CSUM)
> EXT4_FEATURE_RO_COMPAT_FUNCS(readonly, READONLY)
> EXT4_FEATURE_RO_COMPAT_FUNCS(project, PROJECT)
> +EXT4_FEATURE_RO_COMPAT_FUNCS(shared_blocks, SHARED_BLOCKS)
> EXT4_FEATURE_RO_COMPAT_FUNCS(verity, VERITY)
>
> EXT4_FEATURE_INCOMPAT_FUNCS(compression, COMPRESSION)
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index ea425b49b345..f57a7e966e44 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -3954,7 +3954,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
> else
> set_opt(sb, ERRORS_RO);
> /* block_validity enabled by default; disable with noblock_validity */
> - set_opt(sb, BLOCK_VALIDITY);
> + if (!ext4_has_feature_shared_blocks(sb))
> + set_opt(sb, BLOCK_VALIDITY);
> if (def_mount_opts & EXT4_DEFM_DISCARD)
> set_opt(sb, DISCARD);
>
>
--
Jan Kara <[email protected]>
SUSE Labs, CR