Linux 5.10.128
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.128 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
MAINTAINERS | 3 ++- Makefile | 2 +- arch/powerpc/include/asm/ftrace.h | 4 +++- arch/powerpc/kernel/trace/ftrace.c | 15 ++++++++++++--- arch/powerpc/mm/mem.c | 2 ++ drivers/gpu/drm/drm_crtc_helper_internal.h | 10 ---------- drivers/gpu/drm/drm_fb_helper.c | 21 --------------------- drivers/gpu/drm/drm_kms_helper_common.c | 25 ++++++++++++------------- drivers/md/bcache/btree.c | 1 + drivers/md/bcache/writeback.c | 1 + drivers/net/ethernet/mscc/ocelot.c | 8 ++++++-- fs/xfs/libxfs/xfs_attr.c | 13 +++++-------- fs/xfs/xfs_aops.c | 15 ++++++++++++--- fs/xfs/xfs_buf_item_recover.c | 2 +- fs/xfs/xfs_extfree_item.c | 6 +++--- fs/xfs/xfs_super.c | 14 +++++++++++--- kernel/time/tick-sched.c | 1 - 17 files changed, 72 insertions(+), 71 deletions(-)
Amir Goldstein (1):
MAINTAINERS: add Amir as xfs maintainer for 5.10.y
Brian Foster (1):
xfs: punch out data fork delalloc blocks on COW writeback failure
Christoph Hellwig (1):
drm: remove drm_fb_helper_modinit
Coly Li (1):
bcache: memset on stack variables in bch_btree_check() and bch_sectors_dirty_init()
Darrick J. Wong (1):
xfs: remove all COW fork extents when remounting readonly
Dave Chinner (1):
xfs: check sb_meta_uuid for dabuf buffer recovery
Greg Kroah-Hartman (1):
Linux 5.10.128
Masahiro Yamada (1):
tick/nohz: unexport __init-annotated tick_nohz_full_setup()
Naveen N. Rao (1):
powerpc/ftrace: Remove ftrace init tramp once kernel init is complete
Rustam Kovhaev (1):
xfs: use kmem_cache_free() for kmem_cache objects
Vladimir Oltean (1):
net: mscc: ocelot: allow unregistered IP multicast flooding
Yang Xu (1):
xfs: Fix the free logic of state in xfs_attr_node_hasname
Greg Kroah-Hartman
maintainerMAINTAINERS +2 -1
@@ -19246,7 +19246,8 @@ F: arch/x86/xen/*swiotlb* F: drivers/xen/*swiotlb* XFS FILESYSTEM -M: Darrick J. Wong <[email protected]> +M: Amir Goldstein <[email protected]> +M: Darrick J. Wong <[email protected]> M: [email protected] L: [email protected] S: Supported
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 127 +SUBLEVEL = 128 EXTRAVERSION = NAME = Dare mighty things
arch/powerpc/include/asm/ftrace.h +3 -1
@@ -96,7 +96,7 @@ static inline bool arch_syscall_match_sym_name(const char *sym, const char *name#endif /* PPC64_ELF_ABI_v1 */ #endif /* CONFIG_FTRACE_SYSCALLS */ -#ifdef CONFIG_PPC64 +#if defined(CONFIG_PPC64 ) && defined(CONFIG_FUNCTION_TRACER )#include <asm/paca.h> static inline void this_cpu_disable_ftrace (void )
@@ -120,11 +120,13 @@ static inline u8 this_cpu_get_ftrace_enabled(void)return get_paca ()->ftrace_enabled; } +void ftrace_free_init_tramp (void );#else /* CONFIG_PPC64 */ static inline void this_cpu_disable_ftrace (void ) { }static inline void this_cpu_enable_ftrace (void ) { }static inline void this_cpu_set_ftrace_enabled (u8 ftrace_enabled) { }static inline u8 this_cpu_get_ftrace_enabled (void ) {return 1 ; } +static inline void ftrace_free_init_tramp (void ) { }#endif /* CONFIG_PPC64 */ #endif /* !__ASSEMBLY__ */
arch/powerpc/kernel/trace/ftrace.c +12 -3
@@ -336,9 +336,7 @@ static int setup_mcount_compiler_tramp(unsigned long tramp)/* Is this a known long jump tramp? */ for (i =0 ; i <NUM_FTRACE_TRAMPS ; i++) -if (!ftrace_tramps[i]) -break ; -else if (ftrace_tramps[i] == tramp) +if (ftrace_tramps[i] == tramp)return 0 ;/* Is this a known plt tramp? */
@@ -882,6 +880,17 @@ void arch_ftrace_update_code(int command)extern unsigned int ftrace_tramp_text[], ftrace_tramp_init[]; +void ftrace_free_init_tramp (void ) +{ +int i; + +for (i =0 ; i <NUM_FTRACE_TRAMPS && ftrace_tramps[i]; i++) +if (ftrace_tramps[i] == (unsigned long )ftrace_tramp_init) { + ftrace_tramps[i] =0 ; +return ; + } +} +int __init ftrace_dyn_arch_init (void ) {int i;
arch/powerpc/mm/mem.c +2 -0
@@ -51,6 +51,7 @@#include <asm/kasan.h> #include <asm/svm.h> #include <asm/mmzone.h> +#include <asm/ftrace.h> #include <mm/mmu_decl.h>
@@ -347,6 +348,7 @@ void free_initmem(void)mark_initmem_nx (); init_mem_is_free = true;free_initmem_default (POISON_FREE_INITMEM ); +ftrace_free_init_tramp (); }/**
drivers/gpu/drm/drm_crtc_helper_internal.h +0 -10
@@ -32,16 +32,6 @@#include <drm/drm_encoder.h> #include <drm/drm_modes.h> -/* drm_fb_helper.c */ -#ifdef CONFIG_DRM_FBDEV_EMULATION -int drm_fb_helper_modinit (void ); -#else -static inline int drm_fb_helper_modinit (void ) -{ -return 0 ; -} -#endif -/* drm_dp_aux_dev.c */ #ifdef CONFIG_DRM_DP_AUX_CHARDEV int drm_dp_aux_dev_init (void );
drivers/gpu/drm/drm_fb_helper.c +0 -21
@@ -2271,24 +2271,3 @@ void drm_fbdev_generic_setup(struct drm_device *dev,drm_client_register (&fb_helper->client); }EXPORT_SYMBOL (drm_fbdev_generic_setup); - -/* The Kconfig DRM_KMS_HELPER selects FRAMEBUFFER_CONSOLE (if !EXPERT) -* but the module doesn't depend on any fb console symbols. At least -* attempt to load fbcon to avoid leaving the system without a usable console. -*/ -int __init drm_fb_helper_modinit (void ) -{ -#if defined(CONFIG_FRAMEBUFFER_CONSOLE_MODULE ) && !defined(CONFIG_EXPERT ) -const char name[] ="fbcon" ; -struct module *fbcon; - -mutex_lock (&module_mutex); - fbcon =find_module (name); -mutex_unlock (&module_mutex); - -if (!fbcon) -request_module_nowait (name); -#endif -return 0 ; -} -EXPORT_SYMBOL (drm_fb_helper_modinit);
drivers/gpu/drm/drm_kms_helper_common.c +12 -13
@@ -64,19 +64,18 @@ MODULE_PARM_DESC(edid_firmware,static int __init drm_kms_helper_init (void ) { -int ret; - -/* Call init functions from specific kms helpers here */ - ret =drm_fb_helper_modinit (); -if (ret <0 ) - goto out; - - ret =drm_dp_aux_dev_init (); -if (ret <0 ) - goto out; - -out: -return ret; +/* +* The Kconfig DRM_KMS_HELPER selects FRAMEBUFFER_CONSOLE (if !EXPERT) +* but the module doesn't depend on any fb console symbols. At least +* attempt to load fbcon to avoid leaving the system without a usable +* console. +*/ +if (IS_ENABLED (CONFIG_DRM_FBDEV_EMULATION ) && +IS_MODULE (CONFIG_FRAMEBUFFER_CONSOLE ) && + !IS_ENABLED (CONFIG_EXPERT )) +request_module_nowait ("fbcon" ); + +return drm_dp_aux_dev_init (); } static void __exit drm_kms_helper_exit(void)
drivers/md/bcache/btree.c +1 -0
@@ -2017,6 +2017,7 @@ int bch_btree_check(struct cache_set *c)if (c->root->level ==0 )return 0 ; +memset (&check_state,0 ,sizeof (struct btree_check_state )); check_state.c = c; check_state.total_threads =bch_btree_chkthread_nr (); check_state.key_idx =0 ;
drivers/md/bcache/writeback.c +1 -0
@@ -901,6 +901,7 @@ void bch_sectors_dirty_init(struct bcache_device *d)return ; } +memset (&state,0 ,sizeof (struct bch_dirty_init_state )); state.c = c; state.d = d; state.total_threads =bch_btre_dirty_init_thread_nr ();
drivers/net/ethernet/mscc/ocelot.c +6 -2
@@ -1593,8 +1593,12 @@ int ocelot_init(struct ocelot *ocelot)ocelot_write_rix (ocelot,ANA_PGID_PGID_PGID (GENMASK (ocelot->num_phys_ports,0 )),ANA_PGID_PGID ,PGID_MC ); -ocelot_write_rix (ocelot,0 ,ANA_PGID_PGID ,PGID_MCIPV4 ); -ocelot_write_rix (ocelot,0 ,ANA_PGID_PGID ,PGID_MCIPV6 ); +ocelot_write_rix (ocelot, +ANA_PGID_PGID_PGID (GENMASK (ocelot->num_phys_ports,0 )), +ANA_PGID_PGID ,PGID_MCIPV4 ); +ocelot_write_rix (ocelot, +ANA_PGID_PGID_PGID (GENMASK (ocelot->num_phys_ports,0 )), +ANA_PGID_PGID ,PGID_MCIPV6 );/* Allow manual injection via DEVCPU_QS registers, and byte swap these * registers endianness.
fs/xfs/libxfs/xfs_attr.c +5 -8
@@ -876,21 +876,18 @@ xfs_attr_node_hasname( state =xfs_da_state_alloc (args);if (statep !=NULL ) - *statep =NULL ; + *statep = state;/* * Search to see if name exists, and get back a pointer to it. */ error =xfs_da3_node_lookup_int (state, &retval); -if (error) { -xfs_da_state_free (state); -return error; - } +if (error) + retval = error; -if (statep !=NULL ) - *statep = state; -else +if (!statep)xfs_da_state_free (state); +return retval; }
fs/xfs/xfs_aops.c +12 -3
@@ -145,6 +145,7 @@ xfs_end_ioend( struct iomap_ioend *ioend) {struct xfs_inode *ip =XFS_I (ioend->io_inode); +struct xfs_mount *mp = ip->i_mount;xfs_off_t offset = ioend->io_offset;size_t size = ioend->io_size;unsigned int nofs_flag;
@@ -160,18 +161,26 @@ xfs_end_ioend(/* * Just clean up the in-memory strutures if the fs has been shut down. */ -if (XFS_FORCED_SHUTDOWN (ip->i_mount)) { +if (XFS_FORCED_SHUTDOWN (mp)) { error = -EIO ; goto done; }/* -* Clean up any COW blocks on an I/O error. +* Clean up all COW blocks and underlying data fork delalloc blocks on +* I/O error. The delalloc punch is required because this ioend was +* mapped to blocks in the COW fork and the associated pages are no +* longer dirty. If we don't remove delalloc blocks here, they become +* stale and can corrupt free space accounting on unmount. */ error =blk_status_to_errno (ioend->io_bio->bi_status);if (unlikely (error)) { -if (ioend->io_flags &IOMAP_F_SHARED ) +if (ioend->io_flags &IOMAP_F_SHARED ) {xfs_reflink_cancel_cow_range (ip, offset, size, true); +xfs_bmap_punch_delalloc_range (ip, +XFS_B_TO_FSBT (mp, offset), +XFS_B_TO_FSB (mp, size)); + } goto done; }
fs/xfs/xfs_buf_item_recover.c +1 -1
@@ -805,7 +805,7 @@ xlog_recover_get_buf_lsn( }if (lsn != (xfs_lsn_t)-1 ) { -if (!uuid_equal (&mp->m_sb.sb_uuid, uuid)) +if (!uuid_equal (&mp->m_sb.sb_meta_uuid, uuid)) goto recover_immediately;return lsn; }
fs/xfs/xfs_extfree_item.c +3 -3
@@ -482,7 +482,7 @@ xfs_extent_free_finish_item( free->xefi_startblock, free->xefi_blockcount, &free->xefi_oinfo, free->xefi_skip_discard); -kmem_free (free); +kmem_cache_free (xfs_bmap_free_item_zone, free);return error; }
@@ -502,7 +502,7 @@ xfs_extent_free_cancel_item(struct xfs_extent_free_item *free; free = container_of(item, struct xfs_extent_free_item, xefi_list); -kmem_free (free); +kmem_cache_free (xfs_bmap_free_item_zone, free); }const struct xfs_defer_op_type xfs_extent_free_defer_type = {
@@ -564,7 +564,7 @@ xfs_agfl_free_finish_item( extp->ext_len = free->xefi_blockcount; efdp->efd_next_extent++; -kmem_free (free); +kmem_cache_free (xfs_bmap_free_item_zone, free);return error; }
fs/xfs/xfs_super.c +11 -3
@@ -1695,7 +1695,10 @@ static intxfs_remount_ro ( struct xfs_mount *mp) { -int error; +struct xfs_eofblocks eofb = { + .eof_flags =XFS_EOF_FLAGS_SYNC , + }; +int error;/* * Cancel background eofb scanning so it cannot race with the final
@@ -1703,8 +1706,13 @@ xfs_remount_ro(*/ xfs_stop_block_reaping (mp); -/* Get rid of any leftover CoW reservations... */ - error =xfs_icache_free_cowblocks (mp,NULL ); +/* +* Clear out all remaining COW staging extents and speculative post-EOF +* preallocations so that we don't leave inodes requiring inactivation +* cleanups during reclaim on a read-only mount. We must process every +* cached inode, so this requires a synchronous cache scan. +*/ + error =xfs_icache_free_cowblocks (mp, &eofb);if (error) {xfs_force_shutdown (mp,SHUTDOWN_CORRUPT_INCORE );return error;
kernel/time/tick-sched.c +0 -1
@@ -425,7 +425,6 @@ void __init tick_nohz_full_setup(cpumask_var_t cpumask)cpumask_copy (tick_nohz_full_mask, cpumask); tick_nohz_full_running = true; } -EXPORT_SYMBOL_GPL (tick_nohz_full_setup);static int tick_nohz_cpu_down (unsigned int cpu) {