public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Sascha Hauer <s.hauer@pengutronix.de>,
	Richard Weinberger <richard@nod.at>,
	Sasha Levin <sashal@kernel.org>,
	linux-mtd@lists.infradead.org
Subject: [PATCH AUTOSEL 4.19 033/206] ubi: Fix producing anchor PEBs
Date: Thu, 17 Sep 2020 22:05:09 -0400	[thread overview]
Message-ID: <20200918020802.2065198-33-sashal@kernel.org> (raw)
In-Reply-To: <20200918020802.2065198-1-sashal@kernel.org>

From: Sascha Hauer <s.hauer@pengutronix.de>

[ Upstream commit f9c34bb529975fe9f85b870a80c53a83a3c5a182 ]

When a new fastmap is about to be written UBI must make sure it has a
free block for a fastmap anchor available. For this ubi_update_fastmap()
calls ubi_ensure_anchor_pebs(). This stopped working with 2e8f08deabbc
("ubi: Fix races around ubi_refill_pools()"), with this commit the wear
leveling code is blocked and can no longer produce free PEBs. UBI then
more often than not falls back to write the new fastmap anchor to the
same block it was already on which means the same erase block gets
erased during each fastmap write and wears out quite fast.

As the locking prevents us from producing the anchor PEB when we
actually need it, this patch changes the strategy for creating the
anchor PEB. We no longer create it on demand right before we want to
write a fastmap, but instead we create an anchor PEB right after we have
written a fastmap. This gives us enough time to produce a new anchor PEB
before it is needed. To make sure we have an anchor PEB for the very
first fastmap write we call ubi_ensure_anchor_pebs() during
initialisation as well.

Fixes: 2e8f08deabbc ("ubi: Fix races around ubi_refill_pools()")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mtd/ubi/fastmap-wl.c | 31 ++++++++++++++++++-------------
 drivers/mtd/ubi/fastmap.c    | 14 +++++---------
 drivers/mtd/ubi/ubi.h        |  6 ++++--
 drivers/mtd/ubi/wl.c         | 32 ++++++++++++++------------------
 drivers/mtd/ubi/wl.h         |  1 -
 5 files changed, 41 insertions(+), 43 deletions(-)

diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c
index 98f7d6be8d1fc..13efebb400225 100644
--- a/drivers/mtd/ubi/fastmap-wl.c
+++ b/drivers/mtd/ubi/fastmap-wl.c
@@ -66,18 +66,6 @@ static void return_unused_pool_pebs(struct ubi_device *ubi,
 	}
 }
 
-static int anchor_pebs_available(struct rb_root *root)
-{
-	struct rb_node *p;
-	struct ubi_wl_entry *e;
-
-	ubi_rb_for_each_entry(p, e, root, u.rb)
-		if (e->pnum < UBI_FM_MAX_START)
-			return 1;
-
-	return 0;
-}
-
 /**
  * ubi_wl_get_fm_peb - find a physical erase block with a given maximal number.
  * @ubi: UBI device description object
@@ -286,8 +274,26 @@ static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi)
 int ubi_ensure_anchor_pebs(struct ubi_device *ubi)
 {
 	struct ubi_work *wrk;
+	struct ubi_wl_entry *anchor;
 
 	spin_lock(&ubi->wl_lock);
+
+	/* Do we already have an anchor? */
+	if (ubi->fm_anchor) {
+		spin_unlock(&ubi->wl_lock);
+		return 0;
+	}
+
+	/* See if we can find an anchor PEB on the list of free PEBs */
+	anchor = ubi_wl_get_fm_peb(ubi, 1);
+	if (anchor) {
+		ubi->fm_anchor = anchor;
+		spin_unlock(&ubi->wl_lock);
+		return 0;
+	}
+
+	/* No luck, trigger wear leveling to produce a new anchor PEB */
+	ubi->fm_do_produce_anchor = 1;
 	if (ubi->wl_scheduled) {
 		spin_unlock(&ubi->wl_lock);
 		return 0;
@@ -303,7 +309,6 @@ int ubi_ensure_anchor_pebs(struct ubi_device *ubi)
 		return -ENOMEM;
 	}
 
-	wrk->anchor = 1;
 	wrk->func = &wear_leveling_worker;
 	__schedule_ubi_work(ubi, wrk);
 	return 0;
diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
index 8e292992f84c7..b88ef875236cc 100644
--- a/drivers/mtd/ubi/fastmap.c
+++ b/drivers/mtd/ubi/fastmap.c
@@ -1552,14 +1552,6 @@ int ubi_update_fastmap(struct ubi_device *ubi)
 		return 0;
 	}
 
-	ret = ubi_ensure_anchor_pebs(ubi);
-	if (ret) {
-		up_write(&ubi->fm_eba_sem);
-		up_write(&ubi->work_sem);
-		up_write(&ubi->fm_protect);
-		return ret;
-	}
-
 	new_fm = kzalloc(sizeof(*new_fm), GFP_KERNEL);
 	if (!new_fm) {
 		up_write(&ubi->fm_eba_sem);
@@ -1630,7 +1622,8 @@ int ubi_update_fastmap(struct ubi_device *ubi)
 	}
 
 	spin_lock(&ubi->wl_lock);
-	tmp_e = ubi_wl_get_fm_peb(ubi, 1);
+	tmp_e = ubi->fm_anchor;
+	ubi->fm_anchor = NULL;
 	spin_unlock(&ubi->wl_lock);
 
 	if (old_fm) {
@@ -1682,6 +1675,9 @@ out_unlock:
 	up_write(&ubi->work_sem);
 	up_write(&ubi->fm_protect);
 	kfree(old_fm);
+
+	ubi_ensure_anchor_pebs(ubi);
+
 	return ret;
 
 err:
diff --git a/drivers/mtd/ubi/ubi.h b/drivers/mtd/ubi/ubi.h
index d47b9e436e673..d248ec371cc17 100644
--- a/drivers/mtd/ubi/ubi.h
+++ b/drivers/mtd/ubi/ubi.h
@@ -504,6 +504,8 @@ struct ubi_debug_info {
  * @fm_work: fastmap work queue
  * @fm_work_scheduled: non-zero if fastmap work was scheduled
  * @fast_attach: non-zero if UBI was attached by fastmap
+ * @fm_anchor: The next anchor PEB to use for fastmap
+ * @fm_do_produce_anchor: If true produce an anchor PEB in wl
  *
  * @used: RB-tree of used physical eraseblocks
  * @erroneous: RB-tree of erroneous used physical eraseblocks
@@ -612,6 +614,8 @@ struct ubi_device {
 	struct work_struct fm_work;
 	int fm_work_scheduled;
 	int fast_attach;
+	struct ubi_wl_entry *fm_anchor;
+	int fm_do_produce_anchor;
 
 	/* Wear-leveling sub-system's stuff */
 	struct rb_root used;
@@ -802,7 +806,6 @@ struct ubi_attach_info {
  * @vol_id: the volume ID on which this erasure is being performed
  * @lnum: the logical eraseblock number
  * @torture: if the physical eraseblock has to be tortured
- * @anchor: produce a anchor PEB to by used by fastmap
  *
  * The @func pointer points to the worker function. If the @shutdown argument is
  * not zero, the worker has to free the resources and exit immediately as the
@@ -818,7 +821,6 @@ struct ubi_work {
 	int vol_id;
 	int lnum;
 	int torture;
-	int anchor;
 };
 
 #include "debug.h"
diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
index 6f2ac865ff05e..80d64d7e7a8be 100644
--- a/drivers/mtd/ubi/wl.c
+++ b/drivers/mtd/ubi/wl.c
@@ -331,13 +331,6 @@ static struct ubi_wl_entry *find_wl_entry(struct ubi_device *ubi,
 		}
 	}
 
-	/* If no fastmap has been written and this WL entry can be used
-	 * as anchor PEB, hold it back and return the second best WL entry
-	 * such that fastmap can use the anchor PEB later. */
-	if (prev_e && !ubi->fm_disabled &&
-	    !ubi->fm && e->pnum < UBI_FM_MAX_START)
-		return prev_e;
-
 	return e;
 }
 
@@ -648,9 +641,6 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,
 {
 	int err, scrubbing = 0, torture = 0, protect = 0, erroneous = 0;
 	int erase = 0, keep = 0, vol_id = -1, lnum = -1;
-#ifdef CONFIG_MTD_UBI_FASTMAP
-	int anchor = wrk->anchor;
-#endif
 	struct ubi_wl_entry *e1, *e2;
 	struct ubi_vid_io_buf *vidb;
 	struct ubi_vid_hdr *vid_hdr;
@@ -690,11 +680,7 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,
 	}
 
 #ifdef CONFIG_MTD_UBI_FASTMAP
-	/* Check whether we need to produce an anchor PEB */
-	if (!anchor)
-		anchor = !anchor_pebs_available(&ubi->free);
-
-	if (anchor) {
+	if (ubi->fm_do_produce_anchor) {
 		e1 = find_anchor_wl_entry(&ubi->used);
 		if (!e1)
 			goto out_cancel;
@@ -705,6 +691,7 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,
 		self_check_in_wl_tree(ubi, e1, &ubi->used);
 		rb_erase(&e1->u.rb, &ubi->used);
 		dbg_wl("anchor-move PEB %d to PEB %d", e1->pnum, e2->pnum);
+		ubi->fm_do_produce_anchor = 0;
 	} else if (!ubi->scrub.rb_node) {
 #else
 	if (!ubi->scrub.rb_node) {
@@ -1037,7 +1024,6 @@ static int ensure_wear_leveling(struct ubi_device *ubi, int nested)
 		goto out_cancel;
 	}
 
-	wrk->anchor = 0;
 	wrk->func = &wear_leveling_worker;
 	if (nested)
 		__schedule_ubi_work(ubi, wrk);
@@ -1079,8 +1065,15 @@ static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk)
 	err = sync_erase(ubi, e, wl_wrk->torture);
 	if (!err) {
 		spin_lock(&ubi->wl_lock);
-		wl_tree_add(e, &ubi->free);
-		ubi->free_count++;
+
+		if (!ubi->fm_anchor && e->pnum < UBI_FM_MAX_START) {
+			ubi->fm_anchor = e;
+			ubi->fm_do_produce_anchor = 0;
+		} else {
+			wl_tree_add(e, &ubi->free);
+			ubi->free_count++;
+		}
+
 		spin_unlock(&ubi->wl_lock);
 
 		/*
@@ -1724,6 +1717,9 @@ int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai)
 	if (err)
 		goto out_free;
 
+#ifdef CONFIG_MTD_UBI_FASTMAP
+	ubi_ensure_anchor_pebs(ubi);
+#endif
 	return 0;
 
 out_free:
diff --git a/drivers/mtd/ubi/wl.h b/drivers/mtd/ubi/wl.h
index a9e2d669acd81..c93a532937863 100644
--- a/drivers/mtd/ubi/wl.h
+++ b/drivers/mtd/ubi/wl.h
@@ -2,7 +2,6 @@
 #ifndef UBI_WL_H
 #define UBI_WL_H
 #ifdef CONFIG_MTD_UBI_FASTMAP
-static int anchor_pebs_available(struct rb_root *root);
 static void update_fastmap_work_fn(struct work_struct *wrk);
 static struct ubi_wl_entry *find_anchor_wl_entry(struct rb_root *root);
 static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi);
-- 
2.25.1


  parent reply	other threads:[~2020-09-18  2:50 UTC|newest]

Thread overview: 209+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-18  2:04 [PATCH AUTOSEL 4.19 001/206] selinux: allow labeling before policy is loaded Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 002/206] media: mc-device.c: fix memleak in media_device_register_entity Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 003/206] dma-fence: Serialise signal enabling (dma_fence_enable_sw_signaling) Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 004/206] ath10k: fix array out-of-bounds access Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 005/206] ath10k: fix memory leak for tpc_stats_final Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 006/206] mm: fix double page fault on arm64 if PTE_AF is cleared Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 007/206] scsi: aacraid: fix illegal IO beyond last LBA Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 008/206] m68k: q40: Fix info-leak in rtc_ioctl Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 009/206] gma/gma500: fix a memory disclosure bug due to uninitialized bytes Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 010/206] ASoC: kirkwood: fix IRQ error handling Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 011/206] media: smiapp: Fix error handling at NVM reading Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 012/206] ata: sata_mv, avoid trigerrable BUG_ON Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 013/206] leds: mlxreg: Fix possible buffer overflow Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 014/206] PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 015/206] scsi: fnic: fix use after free Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 016/206] scsi: lpfc: Fix kernel crash at lpfc_nvme_info_show during remote port bounce Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 017/206] net: silence data-races on sk_backlog.tail Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 018/206] clk/ti/adpll: allocate room for terminating null Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 019/206] drm/amdgpu/powerplay: fix AVFS handling with custom powerplay table Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 020/206] mtd: cfi_cmdset_0002: don't free cfi->cfiq in error path of cfi_amdstd_setup() Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 021/206] mfd: mfd-core: Protect against NULL call-back function pointer Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 022/206] drm/amdgpu/powerplay/smu7: fix AVFS handling with custom powerplay table Sasha Levin
2020-09-18  2:04 ` [PATCH AUTOSEL 4.19 023/206] USB: serial: mos7840: fix probe error handling Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 024/206] tpm_crb: fix fTPM on AMD Zen+ CPUs Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 025/206] tracing: Adding NULL checks for trace_array descriptor pointer Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 026/206] bcache: fix a lost wake-up problem caused by mca_cannibalize_lock Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 027/206] dmaengine: mediatek: hsdma_probe: fixed a memory leak when devm_request_irq fails Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 028/206] RDMA/qedr: Fix potential use after free Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 029/206] RDMA/i40iw: " Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 030/206] fix dget_parent() fastpath race Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 031/206] xfs: fix attr leaf header freemap.size underflow Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 032/206] RDMA/iw_cgxb4: Fix an error handling path in 'c4iw_connect()' Sasha Levin
2020-09-18  2:05 ` Sasha Levin [this message]
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 034/206] mmc: core: Fix size overflow for mmc partitions Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 035/206] gfs2: clean up iopen glock mess in gfs2_create_inode Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 036/206] scsi: pm80xx: Cleanup command when a reset times out Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 037/206] debugfs: Fix !DEBUG_FS debugfs_create_automount Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 038/206] CIFS: Properly process SMB3 lease breaks Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 039/206] ASoC: max98090: remove msleep in PLL unlocked workaround Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 040/206] kernel/sys.c: avoid copying possible padding bytes in copy_to_user Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 041/206] KVM: arm/arm64: vgic: Fix potential double free dist->spis in __kvm_vgic_destroy() Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 042/206] xfs: fix log reservation overflows when allocating large rt extents Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 043/206] neigh_stat_seq_next() should increase position index Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 044/206] rt_cpu_seq_next " Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 045/206] ipv6_route_seq_next " Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 046/206] seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 047/206] media: ti-vpe: cal: Restrict DMA to avoid memory corruption Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 048/206] sctp: move trace_sctp_probe_path into sctp_outq_sack Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 049/206] ACPI: EC: Reference count query handlers under lock Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 050/206] scsi: ufs: Make ufshcd_add_command_trace() easier to read Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 051/206] scsi: ufs: Fix a race condition in the tracing code Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 052/206] efi/arm: Defer probe of PCIe backed efifb on DT systems Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 053/206] dmaengine: zynqmp_dma: fix burst length configuration Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 054/206] s390/cpum_sf: Use kzalloc and minor changes Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 055/206] powerpc/powernv/ioda: Fix ref count for devices with their own PE Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 056/206] powerpc/eeh: Only dump stack once if an MMIO loop is detected Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 057/206] Bluetooth: btrtl: Use kvmalloc for FW allocations Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 058/206] tracing: Set kernel_stack's caller size properly Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 059/206] ext4: make dioread_nolock the default Sasha Levin
2020-09-18  2:58   ` Eric Biggers
2020-09-18 17:18     ` Theodore Y. Ts'o
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 060/206] ARM: 8948/1: Prevent OOB access in stacktrace Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 061/206] ar5523: Add USB ID of SMCWUSBT-G2 wireless adapter Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 062/206] ceph: ensure we have a new cap before continuing in fill_inode Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 063/206] selftests/ftrace: fix glob selftest Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 064/206] tools/power/x86/intel_pstate_tracer: changes for python 3 compatibility Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 065/206] Bluetooth: Fix refcount use-after-free issue Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 066/206] mm/swapfile.c: swap_next should increase position index Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 067/206] mm: pagewalk: fix termination condition in walk_pte_range() Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 068/206] Bluetooth: prefetch channel before killing sock Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 069/206] KVM: fix overflow of zero page refcount with ksm running Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 070/206] ALSA: hda: Clear RIRB status before reading WP Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 071/206] skbuff: fix a data race in skb_queue_len() Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 072/206] audit: CONFIG_CHANGE don't log internal bookkeeping as an event Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 073/206] selinux: sel_avc_get_stat_idx should increase position index Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 074/206] scsi: lpfc: Fix RQ buffer leakage when no IOCBs available Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 075/206] scsi: lpfc: Fix coverity errors in fmdi attribute handling Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 076/206] drm/omap: fix possible object reference leak Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 077/206] clk: stratix10: use do_div() for 64-bit calculation Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 078/206] crypto: chelsio - This fixes the kernel panic which occurs during a libkcapi test Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 079/206] mt76: clear skb pointers from rx aggregation reorder buffer during cleanup Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 080/206] ALSA: usb-audio: Don't create a mixer element with bogus volume range Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 081/206] perf test: Fix test trace+probe_vfs_getname.sh on s390 Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 082/206] RDMA/rxe: Fix configuration of atomic queue pair attributes Sasha Levin
2020-09-18  2:05 ` [PATCH AUTOSEL 4.19 083/206] KVM: x86: fix incorrect comparison in trace event Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 084/206] dmaengine: stm32-mdma: use vchan_terminate_vdesc() in .terminate_all Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 085/206] media: staging/imx: Missing assignment in imx_media_capture_device_register() Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 086/206] x86/pkeys: Add check for pkey "overflow" Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 087/206] bpf: Remove recursion prevention from rcu free callback Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 088/206] dmaengine: stm32-dma: use vchan_terminate_vdesc() in .terminate_all Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 089/206] dmaengine: tegra-apb: Prevent race conditions on channel's freeing Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 090/206] drm/amd/display: dal_ddc_i2c_payloads_create can fail causing panic Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 091/206] firmware: arm_sdei: Use cpus_read_lock() to avoid races with cpuhp Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 092/206] random: fix data races at timer_rand_state Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 093/206] bus: hisi_lpc: Fixup IO ports addresses to avoid use-after-free in host removal Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 094/206] media: go7007: Fix URB type for interrupt handling Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 095/206] Bluetooth: guard against controllers sending zero'd events Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 096/206] timekeeping: Prevent 32bit truncation in scale64_check_overflow() Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 097/206] ext4: fix a data race at inode->i_disksize Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 098/206] perf jevents: Fix leak of mapfile memory Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 099/206] mm: avoid data corruption on CoW fault into PFN-mapped VMA Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 100/206] drm/amdgpu: increase atombios cmd timeout Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 101/206] drm/amd/display: Stop if retimer is not available Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 102/206] ath10k: use kzalloc to read for ath10k_sdio_hif_diag_read Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 103/206] scsi: aacraid: Disabling TM path and only processing IOP reset Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 104/206] Bluetooth: L2CAP: handle l2cap config request during open state Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 105/206] media: tda10071: fix unsigned sign extension overflow Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 106/206] xfs: don't ever return a stale pointer from __xfs_dir3_free_read Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 107/206] xfs: mark dir corrupt when lookup-by-hash fails Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 108/206] ext4: mark block bitmap corrupted when found instead of BUGON Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 109/206] tpm: ibmvtpm: Wait for buffer to be set before proceeding Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 110/206] rtc: sa1100: fix possible race condition Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 111/206] rtc: ds1374: " Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 112/206] nfsd: Don't add locks to closed or closing open stateids Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 113/206] RDMA/cm: Remove a race freeing timewait_info Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 114/206] KVM: PPC: Book3S HV: Treat TM-related invalid form instructions on P9 like the valid ones Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 115/206] drm/msm: fix leaks if initialization fails Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 116/206] drm/msm/a5xx: Always set an OPP supported hardware value Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 117/206] tracing: Use address-of operator on section symbols Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 118/206] thermal: rcar_thermal: Handle probe error gracefully Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 119/206] perf parse-events: Fix 3 use after frees found with clang ASAN Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 120/206] serial: 8250_port: Don't service RX FIFO if throttled Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 121/206] serial: 8250_omap: Fix sleeping function called from invalid context during probe Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 122/206] serial: 8250: 8250_omap: Terminate DMA before pushing data on RX timeout Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 123/206] perf cpumap: Fix snprintf overflow check Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 124/206] cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_work_fn Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 125/206] tools: gpio-hammer: Avoid potential overflow in main Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 126/206] nvme-multipath: do not reset on unknown status Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 127/206] nvme: Fix controller creation races with teardown flow Sasha Levin
2020-09-18 18:46   ` Sagi Grimberg
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 128/206] RDMA/rxe: Set sys_image_guid to be aligned with HW IB devices Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 129/206] scsi: hpsa: correct race condition in offload enabled Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 130/206] SUNRPC: Fix a potential buffer overflow in 'svc_print_xprts()' Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 131/206] svcrdma: Fix leak of transport addresses Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 132/206] PCI: Use ioremap(), not phys_to_virt() for platform ROM Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 133/206] ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 134/206] ALSA: usb-audio: Fix case when USB MIDI interface has more than one extra endpoint descriptor Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 135/206] PCI: pciehp: Fix MSI interrupt race Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 136/206] NFS: Fix races nfs_page_group_destroy() vs nfs_destroy_unlinked_subrequests() Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 137/206] mm/kmemleak.c: use address-of operator on section symbols Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 138/206] mm/filemap.c: clear page error before actual read Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 139/206] mm/vmscan.c: fix data races using kswapd_classzone_idx Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 140/206] nvmet-rdma: fix double free of rdma queue Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 141/206] mm/mmap.c: initialize align_offset explicitly for vm_unmapped_area Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 142/206] scsi: qedi: Fix termination timeouts in session logout Sasha Levin
2020-09-18  2:06 ` [PATCH AUTOSEL 4.19 143/206] serial: uartps: Wait for tx_empty in console setup Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 144/206] KVM: Remove CREATE_IRQCHIP/SET_PIT2 race Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 145/206] perf stat: Force error in fallback on :k events Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 146/206] bdev: Reduce time holding bd_mutex in sync in blkdev_close() Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 147/206] drivers: char: tlclk.c: Avoid data race between init and interrupt handler Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 148/206] KVM: arm64: vgic-its: Fix memory leak on the error path of vgic_add_lpi() Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 149/206] net: openvswitch: use u64 for meter bucket Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 150/206] scsi: aacraid: Fix error handling paths in aac_probe_one() Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 151/206] staging:r8188eu: avoid skb_clone for amsdu to msdu conversion Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 152/206] sparc64: vcc: Fix error return code in vcc_probe() Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 153/206] arm64: cpufeature: Relax checks for AArch32 support at EL[0-2] Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 154/206] dt-bindings: sound: wm8994: Correct required supplies based on actual implementaion Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 155/206] atm: fix a memory leak of vcc->user_back Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 156/206] perf parse-events: Fix memory leaks found on parse_events Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 157/206] perf mem2node: Avoid double free related to realloc Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 158/206] power: supply: max17040: Correct voltage reading Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 159/206] phy: samsung: s5pv210-usb2: Add delay after reset Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 160/206] Bluetooth: Handle Inquiry Cancel error after Inquiry Complete Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 161/206] USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe() Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 162/206] tipc: fix memory leak in service subscripting Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 163/206] tty: serial: samsung: Correct clock selection logic Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 164/206] ALSA: hda: Fix potential race in unsol event handler Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 165/206] powerpc/traps: Make unrecoverable NMIs die instead of panic Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 166/206] fuse: don't check refcount after stealing page Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 167/206] USB: EHCI: ehci-mv: fix less than zero comparison of an unsigned int Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 168/206] scsi: cxlflash: Fix error return code in cxlflash_probe() Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 169/206] arm64/cpufeature: Drop TraceFilt feature exposure from ID_DFR0 register Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 170/206] e1000: Do not perform reset in reset_task if we are already down Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 171/206] drm/nouveau/debugfs: fix runtime pm imbalance on error Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 172/206] drm/nouveau: " Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 173/206] drm/nouveau/dispnv50: " Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 174/206] printk: handle blank console arguments passed in Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 175/206] usb: dwc3: Increase timeout for CmdAct cleared by device controller Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 176/206] btrfs: don't force read-only after error in drop snapshot Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 177/206] vfio/pci: fix memory leaks of eventfd ctx Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 178/206] perf parse-events: Fix incorrect conversion of 'if () free()' to 'zfree()' Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 179/206] perf evsel: Fix 2 memory leaks Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 180/206] perf trace: Fix the selection for architectures to generate the errno name tables Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 181/206] perf stat: Fix duration_time value for higher intervals Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 182/206] perf util: Fix memory leak of prefix_if_not_in Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 183/206] perf metricgroup: Free metric_events on error Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 184/206] perf kcore_copy: Fix module map when there are no modules loaded Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 185/206] ASoC: img-i2s-out: Fix runtime PM imbalance on error Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 186/206] wlcore: fix runtime pm imbalance in wl1271_tx_work Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 187/206] wlcore: fix runtime pm imbalance in wlcore_regdomain_config Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 188/206] mtd: rawnand: omap_elm: Fix runtime PM imbalance on error Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 189/206] PCI: tegra: " Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 190/206] ceph: fix potential race in ceph_check_caps Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 191/206] mm/swap_state: fix a data race in swapin_nr_pages Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 192/206] rapidio: avoid data race between file operation callbacks and mport_cdev_add() Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 193/206] mtd: parser: cmdline: Support MTD names containing one or more colons Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 194/206] x86/speculation/mds: Mark mds_user_clear_cpu_buffers() __always_inline Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 195/206] vfio/pci: Clear error and request eventfd ctx after releasing Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 196/206] cifs: Fix double add page to memcg when cifs_readpages Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 197/206] nvme: fix possible deadlock when I/O is blocked Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 198/206] scsi: libfc: Handling of extra kref Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 199/206] scsi: libfc: Skip additional kref updating work event Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 200/206] selftests/x86/syscall_nt: Clear weird flags after each test Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 201/206] vfio/pci: fix racy on error and request eventfd ctx Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 202/206] btrfs: qgroup: fix data leak caused by race between writeback and truncate Sasha Levin
2020-09-18  2:07 ` [PATCH AUTOSEL 4.19 203/206] ubi: fastmap: Free unused fastmap anchor peb during detach Sasha Levin
2020-09-18  2:08 ` [PATCH AUTOSEL 4.19 204/206] perf parse-events: Use strcmp() to compare the PMU name Sasha Levin
2020-09-18  2:08 ` [PATCH AUTOSEL 4.19 205/206] net: openvswitch: use div_u64() for 64-by-32 divisions Sasha Levin
2020-09-18  2:08 ` [PATCH AUTOSEL 4.19 206/206] nvme: explicitly update mpath disk capacity on revalidation Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200918020802.2065198-33-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=richard@nod.at \
    --cc=s.hauer@pengutronix.de \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox