Commit f4a8871f authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'mm-hotfixes-stable-2023-05-18-15-52' of...

Merge tag 'mm-hotfixes-stable-2023-05-18-15-52' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Pull misc fixes from Andrew Morton:
 "Eight hotfixes. Four are cc:stable, the other four are for post-6.4
  issues, or aren't considered suitable for backporting"

* tag 'mm-hotfixes-stable-2023-05-18-15-52' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
  MAINTAINERS: Cleanup Arm Display IP maintainers
  MAINTAINERS: repair pattern in DIALOG SEMICONDUCTOR DRIVERS
  nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode()
  mm: fix zswap writeback race condition
  mm: kfence: fix false positives on big endian
  zsmalloc: move LRU update from zs_map_object() to zs_malloc()
  mm: shrinkers: fix race condition on debugfs cleanup
  maple_tree: make maple state reusable after mas_empty_area()
parents 2d1bcbc6 c7394fa9
Loading
Loading
Loading
Loading
+1 −6
Original line number Original line Diff line number Diff line
@@ -1677,10 +1677,7 @@ F: drivers/power/reset/arm-versatile-reboot.c
F:	drivers/soc/versatile/
F:	drivers/soc/versatile/
ARM KOMEDA DRM-KMS DRIVER
ARM KOMEDA DRM-KMS DRIVER
M:	James (Qian) Wang <james.qian.wang@arm.com>
M:	Liviu Dudau <liviu.dudau@arm.com>
M:	Liviu Dudau <liviu.dudau@arm.com>
M:	Mihail Atanassov <mihail.atanassov@arm.com>
L:	Mali DP Maintainers <malidp@foss.arm.com>
S:	Supported
S:	Supported
T:	git git://anongit.freedesktop.org/drm/drm-misc
T:	git git://anongit.freedesktop.org/drm/drm-misc
F:	Documentation/devicetree/bindings/display/arm,komeda.yaml
F:	Documentation/devicetree/bindings/display/arm,komeda.yaml
@@ -1701,8 +1698,6 @@ F: include/uapi/drm/panfrost_drm.h
ARM MALI-DP DRM DRIVER
ARM MALI-DP DRM DRIVER
M:	Liviu Dudau <liviu.dudau@arm.com>
M:	Liviu Dudau <liviu.dudau@arm.com>
M:	Brian Starkey <brian.starkey@arm.com>
L:	Mali DP Maintainers <malidp@foss.arm.com>
S:	Supported
S:	Supported
T:	git git://anongit.freedesktop.org/drm/drm-misc
T:	git git://anongit.freedesktop.org/drm/drm-misc
F:	Documentation/devicetree/bindings/display/arm,malidp.yaml
F:	Documentation/devicetree/bindings/display/arm,malidp.yaml
@@ -6012,7 +6007,7 @@ W: http://www.dialog-semiconductor.com/products
F:	Documentation/devicetree/bindings/input/da90??-onkey.txt
F:	Documentation/devicetree/bindings/input/da90??-onkey.txt
F:	Documentation/devicetree/bindings/input/dlg,da72??.txt
F:	Documentation/devicetree/bindings/input/dlg,da72??.txt
F:	Documentation/devicetree/bindings/mfd/da90*.txt
F:	Documentation/devicetree/bindings/mfd/da90*.txt
F:	Documentation/devicetree/bindings/mfd/da90*.yaml
F:	Documentation/devicetree/bindings/mfd/dlg,da90*.yaml
F:	Documentation/devicetree/bindings/regulator/da92*.txt
F:	Documentation/devicetree/bindings/regulator/da92*.txt
F:	Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
F:	Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
F:	Documentation/devicetree/bindings/regulator/slg51000.txt
F:	Documentation/devicetree/bindings/regulator/slg51000.txt
+18 −0
Original line number Original line Diff line number Diff line
@@ -917,6 +917,7 @@ void nilfs_evict_inode(struct inode *inode)
	struct nilfs_transaction_info ti;
	struct nilfs_transaction_info ti;
	struct super_block *sb = inode->i_sb;
	struct super_block *sb = inode->i_sb;
	struct nilfs_inode_info *ii = NILFS_I(inode);
	struct nilfs_inode_info *ii = NILFS_I(inode);
	struct the_nilfs *nilfs;
	int ret;
	int ret;


	if (inode->i_nlink || !ii->i_root || unlikely(is_bad_inode(inode))) {
	if (inode->i_nlink || !ii->i_root || unlikely(is_bad_inode(inode))) {
@@ -929,6 +930,23 @@ void nilfs_evict_inode(struct inode *inode)


	truncate_inode_pages_final(&inode->i_data);
	truncate_inode_pages_final(&inode->i_data);


	nilfs = sb->s_fs_info;
	if (unlikely(sb_rdonly(sb) || !nilfs->ns_writer)) {
		/*
		 * If this inode is about to be disposed after the file system
		 * has been degraded to read-only due to file system corruption
		 * or after the writer has been detached, do not make any
		 * changes that cause writes, just clear it.
		 * Do this check after read-locking ns_segctor_sem by
		 * nilfs_transaction_begin() in order to avoid a race with
		 * the writer detach operation.
		 */
		clear_inode(inode);
		nilfs_clear_inode(inode);
		nilfs_transaction_abort(sb);
		return;
	}

	/* TODO: some of the following operations may fail.  */
	/* TODO: some of the following operations may fail.  */
	nilfs_truncate_bmap(ii, 0);
	nilfs_truncate_bmap(ii, 0);
	nilfs_mark_inode_dirty(inode);
	nilfs_mark_inode_dirty(inode);
+11 −2
Original line number Original line Diff line number Diff line
@@ -107,7 +107,10 @@ extern void synchronize_shrinkers(void);


#ifdef CONFIG_SHRINKER_DEBUG
#ifdef CONFIG_SHRINKER_DEBUG
extern int shrinker_debugfs_add(struct shrinker *shrinker);
extern int shrinker_debugfs_add(struct shrinker *shrinker);
extern struct dentry *shrinker_debugfs_remove(struct shrinker *shrinker);
extern struct dentry *shrinker_debugfs_detach(struct shrinker *shrinker,
					      int *debugfs_id);
extern void shrinker_debugfs_remove(struct dentry *debugfs_entry,
				    int debugfs_id);
extern int __printf(2, 3) shrinker_debugfs_rename(struct shrinker *shrinker,
extern int __printf(2, 3) shrinker_debugfs_rename(struct shrinker *shrinker,
						  const char *fmt, ...);
						  const char *fmt, ...);
#else /* CONFIG_SHRINKER_DEBUG */
#else /* CONFIG_SHRINKER_DEBUG */
@@ -115,10 +118,16 @@ static inline int shrinker_debugfs_add(struct shrinker *shrinker)
{
{
	return 0;
	return 0;
}
}
static inline struct dentry *shrinker_debugfs_remove(struct shrinker *shrinker)
static inline struct dentry *shrinker_debugfs_detach(struct shrinker *shrinker,
						     int *debugfs_id)
{
{
	*debugfs_id = -1;
	return NULL;
	return NULL;
}
}
static inline void shrinker_debugfs_remove(struct dentry *debugfs_entry,
					   int debugfs_id)
{
}
static inline __printf(2, 3)
static inline __printf(2, 3)
int shrinker_debugfs_rename(struct shrinker *shrinker, const char *fmt, ...)
int shrinker_debugfs_rename(struct shrinker *shrinker, const char *fmt, ...)
{
{
+3 −9
Original line number Original line Diff line number Diff line
@@ -5317,15 +5317,9 @@ int mas_empty_area(struct ma_state *mas, unsigned long min,


	mt = mte_node_type(mas->node);
	mt = mte_node_type(mas->node);
	pivots = ma_pivots(mas_mn(mas), mt);
	pivots = ma_pivots(mas_mn(mas), mt);
	if (offset)
	min = mas_safe_min(mas, pivots, offset);
		mas->min = pivots[offset - 1] + 1;
	if (mas->index < min)

		mas->index = min;
	if (offset < mt_pivots[mt])
		mas->max = pivots[offset];

	if (mas->index < mas->min)
		mas->index = mas->min;

	mas->last = mas->index + size - 1;
	mas->last = mas->index + size - 1;
	return 0;
	return 0;
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@
 * canary of every 8 bytes is the same. 64-bit memory can be filled and checked
 * canary of every 8 bytes is the same. 64-bit memory can be filled and checked
 * at a time instead of byte by byte to improve performance.
 * at a time instead of byte by byte to improve performance.
 */
 */
#define KFENCE_CANARY_PATTERN_U64 ((u64)0xaaaaaaaaaaaaaaaa ^ (u64)(0x0706050403020100))
#define KFENCE_CANARY_PATTERN_U64 ((u64)0xaaaaaaaaaaaaaaaa ^ (u64)(le64_to_cpu(0x0706050403020100)))


/* Maximum stack depth for reports. */
/* Maximum stack depth for reports. */
#define KFENCE_STACK_DEPTH 64
#define KFENCE_STACK_DEPTH 64
Loading