mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Filipe Manana <fdmanana@suse.com>,
	Josef Bacik <josef@toxicpanda.com>,
	David Sterba <dsterba@suse.com>
Subject: [PATCH 5.4 082/129] btrfs: allocate scrub workqueues outside of locks
Date: Tue,  8 Sep 2020 17:25:23 +0200	[thread overview]
Message-ID: <20200908152233.793191583@linuxfoundation.org> (raw)
In-Reply-To: <20200908152229.689878733@linuxfoundation.org>

From: Josef Bacik <josef@toxicpanda.com>

commit e89c4a9c8e6ce3a84cab4f342687d3fbbb1234eb upstream.

I got the following lockdep splat while testing:

  ======================================================
  WARNING: possible circular locking dependency detected
  5.8.0-rc7-00172-g021118712e59 #932 Not tainted
  ------------------------------------------------------
  btrfs/229626 is trying to acquire lock:
  ffffffff828513f0 (cpu_hotplug_lock){++++}-{0:0}, at: alloc_workqueue+0x378/0x450

  but task is already holding lock:
  ffff889dd3889518 (&fs_info->scrub_lock){+.+.}-{3:3}, at: btrfs_scrub_dev+0x11c/0x630

  which lock already depends on the new lock.

  the existing dependency chain (in reverse order) is:

  -> #7 (&fs_info->scrub_lock){+.+.}-{3:3}:
	 __mutex_lock+0x9f/0x930
	 btrfs_scrub_dev+0x11c/0x630
	 btrfs_dev_replace_by_ioctl.cold.21+0x10a/0x1d4
	 btrfs_ioctl+0x2799/0x30a0
	 ksys_ioctl+0x83/0xc0
	 __x64_sys_ioctl+0x16/0x20
	 do_syscall_64+0x50/0x90
	 entry_SYSCALL_64_after_hwframe+0x44/0xa9

  -> #6 (&fs_devs->device_list_mutex){+.+.}-{3:3}:
	 __mutex_lock+0x9f/0x930
	 btrfs_run_dev_stats+0x49/0x480
	 commit_cowonly_roots+0xb5/0x2a0
	 btrfs_commit_transaction+0x516/0xa60
	 sync_filesystem+0x6b/0x90
	 generic_shutdown_super+0x22/0x100
	 kill_anon_super+0xe/0x30
	 btrfs_kill_super+0x12/0x20
	 deactivate_locked_super+0x29/0x60
	 cleanup_mnt+0xb8/0x140
	 task_work_run+0x6d/0xb0
	 __prepare_exit_to_usermode+0x1cc/0x1e0
	 do_syscall_64+0x5c/0x90
	 entry_SYSCALL_64_after_hwframe+0x44/0xa9

  -> #5 (&fs_info->tree_log_mutex){+.+.}-{3:3}:
	 __mutex_lock+0x9f/0x930
	 btrfs_commit_transaction+0x4bb/0xa60
	 sync_filesystem+0x6b/0x90
	 generic_shutdown_super+0x22/0x100
	 kill_anon_super+0xe/0x30
	 btrfs_kill_super+0x12/0x20
	 deactivate_locked_super+0x29/0x60
	 cleanup_mnt+0xb8/0x140
	 task_work_run+0x6d/0xb0
	 __prepare_exit_to_usermode+0x1cc/0x1e0
	 do_syscall_64+0x5c/0x90
	 entry_SYSCALL_64_after_hwframe+0x44/0xa9

  -> #4 (&fs_info->reloc_mutex){+.+.}-{3:3}:
	 __mutex_lock+0x9f/0x930
	 btrfs_record_root_in_trans+0x43/0x70
	 start_transaction+0xd1/0x5d0
	 btrfs_dirty_inode+0x42/0xd0
	 touch_atime+0xa1/0xd0
	 btrfs_file_mmap+0x3f/0x60
	 mmap_region+0x3a4/0x640
	 do_mmap+0x376/0x580
	 vm_mmap_pgoff+0xd5/0x120
	 ksys_mmap_pgoff+0x193/0x230
	 do_syscall_64+0x50/0x90
	 entry_SYSCALL_64_after_hwframe+0x44/0xa9

  -> #3 (&mm->mmap_lock#2){++++}-{3:3}:
	 __might_fault+0x68/0x90
	 _copy_to_user+0x1e/0x80
	 perf_read+0x141/0x2c0
	 vfs_read+0xad/0x1b0
	 ksys_read+0x5f/0xe0
	 do_syscall_64+0x50/0x90
	 entry_SYSCALL_64_after_hwframe+0x44/0xa9

  -> #2 (&cpuctx_mutex){+.+.}-{3:3}:
	 __mutex_lock+0x9f/0x930
	 perf_event_init_cpu+0x88/0x150
	 perf_event_init+0x1db/0x20b
	 start_kernel+0x3ae/0x53c
	 secondary_startup_64+0xa4/0xb0

  -> #1 (pmus_lock){+.+.}-{3:3}:
	 __mutex_lock+0x9f/0x930
	 perf_event_init_cpu+0x4f/0x150
	 cpuhp_invoke_callback+0xb1/0x900
	 _cpu_up.constprop.26+0x9f/0x130
	 cpu_up+0x7b/0xc0
	 bringup_nonboot_cpus+0x4f/0x60
	 smp_init+0x26/0x71
	 kernel_init_freeable+0x110/0x258
	 kernel_init+0xa/0x103
	 ret_from_fork+0x1f/0x30

  -> #0 (cpu_hotplug_lock){++++}-{0:0}:
	 __lock_acquire+0x1272/0x2310
	 lock_acquire+0x9e/0x360
	 cpus_read_lock+0x39/0xb0
	 alloc_workqueue+0x378/0x450
	 __btrfs_alloc_workqueue+0x15d/0x200
	 btrfs_alloc_workqueue+0x51/0x160
	 scrub_workers_get+0x5a/0x170
	 btrfs_scrub_dev+0x18c/0x630
	 btrfs_dev_replace_by_ioctl.cold.21+0x10a/0x1d4
	 btrfs_ioctl+0x2799/0x30a0
	 ksys_ioctl+0x83/0xc0
	 __x64_sys_ioctl+0x16/0x20
	 do_syscall_64+0x50/0x90
	 entry_SYSCALL_64_after_hwframe+0x44/0xa9

  other info that might help us debug this:

  Chain exists of:
    cpu_hotplug_lock --> &fs_devs->device_list_mutex --> &fs_info->scrub_lock

   Possible unsafe locking scenario:

	 CPU0                    CPU1
	 ----                    ----
    lock(&fs_info->scrub_lock);
				 lock(&fs_devs->device_list_mutex);
				 lock(&fs_info->scrub_lock);
    lock(cpu_hotplug_lock);

   *** DEADLOCK ***

  2 locks held by btrfs/229626:
   #0: ffff88bfe8bb86e0 (&fs_devs->device_list_mutex){+.+.}-{3:3}, at: btrfs_scrub_dev+0xbd/0x630
   #1: ffff889dd3889518 (&fs_info->scrub_lock){+.+.}-{3:3}, at: btrfs_scrub_dev+0x11c/0x630

  stack backtrace:
  CPU: 15 PID: 229626 Comm: btrfs Kdump: loaded Not tainted 5.8.0-rc7-00172-g021118712e59 #932
  Hardware name: Quanta Tioga Pass Single Side 01-0030993006/Tioga Pass Single Side, BIOS F08_3A18 12/20/2018
  Call Trace:
   dump_stack+0x78/0xa0
   check_noncircular+0x165/0x180
   __lock_acquire+0x1272/0x2310
   lock_acquire+0x9e/0x360
   ? alloc_workqueue+0x378/0x450
   cpus_read_lock+0x39/0xb0
   ? alloc_workqueue+0x378/0x450
   alloc_workqueue+0x378/0x450
   ? rcu_read_lock_sched_held+0x52/0x80
   __btrfs_alloc_workqueue+0x15d/0x200
   btrfs_alloc_workqueue+0x51/0x160
   scrub_workers_get+0x5a/0x170
   btrfs_scrub_dev+0x18c/0x630
   ? start_transaction+0xd1/0x5d0
   btrfs_dev_replace_by_ioctl.cold.21+0x10a/0x1d4
   btrfs_ioctl+0x2799/0x30a0
   ? do_sigaction+0x102/0x250
   ? lockdep_hardirqs_on_prepare+0xca/0x160
   ? _raw_spin_unlock_irq+0x24/0x30
   ? trace_hardirqs_on+0x1c/0xe0
   ? _raw_spin_unlock_irq+0x24/0x30
   ? do_sigaction+0x102/0x250
   ? ksys_ioctl+0x83/0xc0
   ksys_ioctl+0x83/0xc0
   __x64_sys_ioctl+0x16/0x20
   do_syscall_64+0x50/0x90
   entry_SYSCALL_64_after_hwframe+0x44/0xa9

This happens because we're allocating the scrub workqueues under the
scrub and device list mutex, which brings in a whole host of other
dependencies.

Because the work queue allocation is done with GFP_KERNEL, it can
trigger reclaim, which can lead to a transaction commit, which in turns
needs the device_list_mutex, it can lead to a deadlock. A different
problem for which this fix is a solution.

Fix this by moving the actual allocation outside of the
scrub lock, and then only take the lock once we're ready to actually
assign them to the fs_info.  We'll now have to cleanup the workqueues in
a few more places, so I've added a helper to do the refcount dance to
safely free the workqueues.

CC: stable@vger.kernel.org # 5.4+
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/scrub.c |  122 +++++++++++++++++++++++++++++++------------------------
 1 file changed, 70 insertions(+), 52 deletions(-)

--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -3742,50 +3742,84 @@ static noinline_for_stack int scrub_supe
 	return 0;
 }
 
+static void scrub_workers_put(struct btrfs_fs_info *fs_info)
+{
+	if (refcount_dec_and_mutex_lock(&fs_info->scrub_workers_refcnt,
+					&fs_info->scrub_lock)) {
+		struct btrfs_workqueue *scrub_workers = NULL;
+		struct btrfs_workqueue *scrub_wr_comp = NULL;
+		struct btrfs_workqueue *scrub_parity = NULL;
+
+		scrub_workers = fs_info->scrub_workers;
+		scrub_wr_comp = fs_info->scrub_wr_completion_workers;
+		scrub_parity = fs_info->scrub_parity_workers;
+
+		fs_info->scrub_workers = NULL;
+		fs_info->scrub_wr_completion_workers = NULL;
+		fs_info->scrub_parity_workers = NULL;
+		mutex_unlock(&fs_info->scrub_lock);
+
+		btrfs_destroy_workqueue(scrub_workers);
+		btrfs_destroy_workqueue(scrub_wr_comp);
+		btrfs_destroy_workqueue(scrub_parity);
+	}
+}
+
 /*
  * get a reference count on fs_info->scrub_workers. start worker if necessary
  */
 static noinline_for_stack int scrub_workers_get(struct btrfs_fs_info *fs_info,
 						int is_dev_replace)
 {
+	struct btrfs_workqueue *scrub_workers = NULL;
+	struct btrfs_workqueue *scrub_wr_comp = NULL;
+	struct btrfs_workqueue *scrub_parity = NULL;
 	unsigned int flags = WQ_FREEZABLE | WQ_UNBOUND;
 	int max_active = fs_info->thread_pool_size;
+	int ret = -ENOMEM;
 
-	lockdep_assert_held(&fs_info->scrub_lock);
+	if (refcount_inc_not_zero(&fs_info->scrub_workers_refcnt))
+		return 0;
 
-	if (refcount_read(&fs_info->scrub_workers_refcnt) == 0) {
-		ASSERT(fs_info->scrub_workers == NULL);
-		fs_info->scrub_workers = btrfs_alloc_workqueue(fs_info, "scrub",
-				flags, is_dev_replace ? 1 : max_active, 4);
-		if (!fs_info->scrub_workers)
-			goto fail_scrub_workers;
-
-		ASSERT(fs_info->scrub_wr_completion_workers == NULL);
-		fs_info->scrub_wr_completion_workers =
-			btrfs_alloc_workqueue(fs_info, "scrubwrc", flags,
-					      max_active, 2);
-		if (!fs_info->scrub_wr_completion_workers)
-			goto fail_scrub_wr_completion_workers;
+	scrub_workers = btrfs_alloc_workqueue(fs_info, "scrub", flags,
+					      is_dev_replace ? 1 : max_active, 4);
+	if (!scrub_workers)
+		goto fail_scrub_workers;
 
-		ASSERT(fs_info->scrub_parity_workers == NULL);
-		fs_info->scrub_parity_workers =
-			btrfs_alloc_workqueue(fs_info, "scrubparity", flags,
+	scrub_wr_comp = btrfs_alloc_workqueue(fs_info, "scrubwrc", flags,
 					      max_active, 2);
-		if (!fs_info->scrub_parity_workers)
-			goto fail_scrub_parity_workers;
+	if (!scrub_wr_comp)
+		goto fail_scrub_wr_completion_workers;
 
+	scrub_parity = btrfs_alloc_workqueue(fs_info, "scrubparity", flags,
+					     max_active, 2);
+	if (!scrub_parity)
+		goto fail_scrub_parity_workers;
+
+	mutex_lock(&fs_info->scrub_lock);
+	if (refcount_read(&fs_info->scrub_workers_refcnt) == 0) {
+		ASSERT(fs_info->scrub_workers == NULL &&
+		       fs_info->scrub_wr_completion_workers == NULL &&
+		       fs_info->scrub_parity_workers == NULL);
+		fs_info->scrub_workers = scrub_workers;
+		fs_info->scrub_wr_completion_workers = scrub_wr_comp;
+		fs_info->scrub_parity_workers = scrub_parity;
 		refcount_set(&fs_info->scrub_workers_refcnt, 1);
-	} else {
-		refcount_inc(&fs_info->scrub_workers_refcnt);
+		mutex_unlock(&fs_info->scrub_lock);
+		return 0;
 	}
-	return 0;
+	/* Other thread raced in and created the workers for us */
+	refcount_inc(&fs_info->scrub_workers_refcnt);
+	mutex_unlock(&fs_info->scrub_lock);
 
+	ret = 0;
+	btrfs_destroy_workqueue(scrub_parity);
 fail_scrub_parity_workers:
-	btrfs_destroy_workqueue(fs_info->scrub_wr_completion_workers);
+	btrfs_destroy_workqueue(scrub_wr_comp);
 fail_scrub_wr_completion_workers:
-	btrfs_destroy_workqueue(fs_info->scrub_workers);
+	btrfs_destroy_workqueue(scrub_workers);
 fail_scrub_workers:
-	return -ENOMEM;
+	return ret;
 }
 
 int btrfs_scrub_dev(struct btrfs_fs_info *fs_info, u64 devid, u64 start,
@@ -3796,9 +3830,6 @@ int btrfs_scrub_dev(struct btrfs_fs_info
 	int ret;
 	struct btrfs_device *dev;
 	unsigned int nofs_flag;
-	struct btrfs_workqueue *scrub_workers = NULL;
-	struct btrfs_workqueue *scrub_wr_comp = NULL;
-	struct btrfs_workqueue *scrub_parity = NULL;
 
 	if (btrfs_fs_closing(fs_info))
 		return -EAGAIN;
@@ -3845,13 +3876,17 @@ int btrfs_scrub_dev(struct btrfs_fs_info
 	if (IS_ERR(sctx))
 		return PTR_ERR(sctx);
 
+	ret = scrub_workers_get(fs_info, is_dev_replace);
+	if (ret)
+		goto out_free_ctx;
+
 	mutex_lock(&fs_info->fs_devices->device_list_mutex);
 	dev = btrfs_find_device(fs_info->fs_devices, devid, NULL, NULL, true);
 	if (!dev || (test_bit(BTRFS_DEV_STATE_MISSING, &dev->dev_state) &&
 		     !is_dev_replace)) {
 		mutex_unlock(&fs_info->fs_devices->device_list_mutex);
 		ret = -ENODEV;
-		goto out_free_ctx;
+		goto out;
 	}
 
 	if (!is_dev_replace && !readonly &&
@@ -3860,7 +3895,7 @@ int btrfs_scrub_dev(struct btrfs_fs_info
 		btrfs_err_in_rcu(fs_info, "scrub: device %s is not writable",
 				rcu_str_deref(dev->name));
 		ret = -EROFS;
-		goto out_free_ctx;
+		goto out;
 	}
 
 	mutex_lock(&fs_info->scrub_lock);
@@ -3869,7 +3904,7 @@ int btrfs_scrub_dev(struct btrfs_fs_info
 		mutex_unlock(&fs_info->scrub_lock);
 		mutex_unlock(&fs_info->fs_devices->device_list_mutex);
 		ret = -EIO;
-		goto out_free_ctx;
+		goto out;
 	}
 
 	down_read(&fs_info->dev_replace.rwsem);
@@ -3880,17 +3915,10 @@ int btrfs_scrub_dev(struct btrfs_fs_info
 		mutex_unlock(&fs_info->scrub_lock);
 		mutex_unlock(&fs_info->fs_devices->device_list_mutex);
 		ret = -EINPROGRESS;
-		goto out_free_ctx;
+		goto out;
 	}
 	up_read(&fs_info->dev_replace.rwsem);
 
-	ret = scrub_workers_get(fs_info, is_dev_replace);
-	if (ret) {
-		mutex_unlock(&fs_info->scrub_lock);
-		mutex_unlock(&fs_info->fs_devices->device_list_mutex);
-		goto out_free_ctx;
-	}
-
 	sctx->readonly = readonly;
 	dev->scrub_ctx = sctx;
 	mutex_unlock(&fs_info->fs_devices->device_list_mutex);
@@ -3943,24 +3971,14 @@ int btrfs_scrub_dev(struct btrfs_fs_info
 
 	mutex_lock(&fs_info->scrub_lock);
 	dev->scrub_ctx = NULL;
-	if (refcount_dec_and_test(&fs_info->scrub_workers_refcnt)) {
-		scrub_workers = fs_info->scrub_workers;
-		scrub_wr_comp = fs_info->scrub_wr_completion_workers;
-		scrub_parity = fs_info->scrub_parity_workers;
-
-		fs_info->scrub_workers = NULL;
-		fs_info->scrub_wr_completion_workers = NULL;
-		fs_info->scrub_parity_workers = NULL;
-	}
 	mutex_unlock(&fs_info->scrub_lock);
 
-	btrfs_destroy_workqueue(scrub_workers);
-	btrfs_destroy_workqueue(scrub_wr_comp);
-	btrfs_destroy_workqueue(scrub_parity);
+	scrub_workers_put(fs_info);
 	scrub_put_ctx(sctx);
 
 	return ret;
-
+out:
+	scrub_workers_put(fs_info);
 out_free_ctx:
 	scrub_free_ctx(sctx);
 



  parent reply	other threads:[~2020-09-08 19:10 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-08 15:24 [PATCH 5.4 000/129] 5.4.64-rc1 review Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 001/129] HID: quirks: Always poll three more Lenovo PixArt mice Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 002/129] drm/msm/dpu: Fix scale params in plane validation Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 003/129] tty: serial: qcom_geni_serial: Drop __init from qcom_geni_console_setup Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 004/129] drm/msm: add shutdown support for display platform_driver Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 005/129] hwmon: (applesmc) check status earlier Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 006/129] nvmet: Disable keep-alive timer when kato is cleared to 0h Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 007/129] drm/msm: enable vblank during atomic commits Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 008/129] habanalabs: validate FW file size Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 009/129] habanalabs: check correct vmalloc return code Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 010/129] drm/msm/a6xx: fix gmu start on newer firmware Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 011/129] ceph: dont allow setlease on cephfs Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 012/129] drm/omap: fix incorrect lock state Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 013/129] cpuidle: Fixup IRQ state Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 014/129] nbd: restore default timeout when setting it to zero Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 015/129] s390: dont trace preemption in percpu macros Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 016/129] drm/amd/display: Reject overlay plane configurations in multi-display scenarios Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 017/129] drivers: gpu: amd: Initialize amdgpu_dm_backlight_caps object to 0 in amdgpu_dm_update_backlight_caps Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 018/129] drm/amd/display: Retry AUX write when fail occurs Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 019/129] drm/amd/display: Fix memleak in amdgpu_dm_mode_config_init Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 020/129] xen/xenbus: Fix granting of vmallocd memory Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 021/129] fsldma: fix very broken 32-bit ppc ioread64 functionality Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 022/129] dmaengine: of-dma: Fix of_dma_router_xlates of_dma_xlate handling Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 023/129] batman-adv: Avoid uninitialized chaddr when handling DHCP Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 024/129] batman-adv: Fix own OGM check in aggregated OGMs Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 025/129] batman-adv: bla: use netif_rx_ni when not in interrupt context Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 026/129] dmaengine: at_hdmac: check return value of of_find_device_by_node() in at_dma_xlate() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 027/129] rxrpc: Keep the ACK serial in a var in rxrpc_input_ack() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 028/129] rxrpc: Make rxrpc_kernel_get_srtt() indicate validity Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 029/129] MIPS: mm: BMIPS5000 has inclusive physical caches Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 030/129] MIPS: BMIPS: Also call bmips_cpu_setup() for secondary cores Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 031/129] mmc: sdhci-acpi: Fix HS400 tuning for AMDI0040 Greg Kroah-Hartman
     [not found]   ` <CAHQZ30B5JzOwUhiyLsbbYpFJdWQeH6vR3Ze-Gtr5-BCnw1AVBw@mail.gmail.com>
2020-09-08 17:35     ` Greg Kroah-Hartman
2020-09-08 19:54       ` Raul Rangel
2020-09-08 15:24 ` [PATCH 5.4 032/129] netfilter: nf_tables: add NFTA_SET_USERDATA if not null Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 033/129] netfilter: nf_tables: incorrect enum nft_list_attributes definition Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 034/129] netfilter: nf_tables: fix destination register zeroing Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 035/129] net: hns: Fix memleak in hns_nic_dev_probe Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 036/129] net: systemport: Fix memleak in bcm_sysport_probe Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 037/129] ravb: Fixed to be able to unload modules Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 038/129] net: arc_emac: Fix memleak in arc_mdio_probe Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 039/129] dmaengine: pl330: Fix burst length if burst size is smaller than bus width Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 040/129] gtp: add GTPA_LINK info to msg sent to userspace Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 041/129] net: ethernet: ti: cpsw: fix clean up of vlan mc entries for host port Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 042/129] bnxt_en: Dont query FW when netif_running() is false Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 043/129] bnxt_en: Check for zero dir entries in NVRAM Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 044/129] bnxt_en: Fix PCI AER error recovery flow Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 045/129] bnxt_en: Fix possible crash in bnxt_fw_reset_task() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 046/129] bnxt_en: fix HWRM error when querying VF temperature Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 047/129] xfs: fix boundary test in xfs_attr_shortform_verify Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 048/129] bnxt: dont enable NAPI until rings are ready Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 049/129] media: vicodec: add missing v4l2_ctrl_request_hdl_put() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 050/129] media: cedrus: Add " Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 051/129] selftests/bpf: Fix massive output from test_maps Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 052/129] net: dsa: mt7530: fix advertising unsupported 1000baseT_Half Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 053/129] netfilter: nfnetlink: nfnetlink_unicast() reports EAGAIN instead of ENOBUFS Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 054/129] nvmet-fc: Fix a missed _irqsave version of spin_lock in nvmet_fc_fod_op_done() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 055/129] nvme: fix controller instance leak Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 056/129] cxgb4: fix thermal zone device registration Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 057/129] perf tools: Correct SNOOPX field offset Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.4 058/129] net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 059/129] fix regression in "epoll: Keep a reference on files added to the check list" Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 060/129] net: gemini: Fix another missing clk_disable_unprepare() in probe Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 061/129] drm/radeon: Prefer lower feedback dividers Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 062/129] MIPS: add missing MSACSR and upper MSA initialization Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 063/129] xfs: fix xfs_bmap_validate_extent_raw when checking attr fork of rt files Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 064/129] perf jevents: Fix suspicious code in fixregex() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 065/129] tg3: Fix soft lockup when tg3_reset_task() fails Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 066/129] x86, fakenuma: Fix invalid starting node ID Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 067/129] iommu/vt-d: Serialize IOMMU GCMD register modifications Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 068/129] thermal: ti-soc-thermal: Fix bogus thermal shutdowns for omap4430 Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 069/129] thermal: qcom-spmi-temp-alarm: Dont suppress negative temp Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 070/129] iommu/amd: Restore IRTE.RemapEn bit after programming IRTE Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 071/129] net/packet: fix overflow in tpacket_rcv Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 072/129] include/linux/log2.h: add missing () around n in roundup_pow_of_two() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 073/129] vfio/type1: Support faulting PFNMAP vmas Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 074/129] vfio-pci: Fault mmaps to enable vma tracking Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 075/129] vfio-pci: Invalidate mmaps and block MMIO access on disabled memory Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 076/129] iommu/vt-d: Handle 36bit addressing for x86-32 Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 077/129] tracing/kprobes, x86/ptrace: Fix regs argument order for i386 Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 078/129] ext2: dont update mtime on COW faults Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 079/129] xfs: " Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 080/129] ARC: perf: dont bail setup if pct irq missing in device-tree Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 081/129] btrfs: drop path before adding new uuid tree entry Greg Kroah-Hartman
2020-09-08 15:25 ` Greg Kroah-Hartman [this message]
2020-09-08 15:25 ` [PATCH 5.4 083/129] btrfs: set the correct lockdep class for new nodes Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 084/129] btrfs: set the lockdep class for log tree extent buffers Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 085/129] btrfs: tree-checker: fix the error message for transid error Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 086/129] net: core: use listified Rx for GRO_NORMAL in napi_gro_receive() Greg Kroah-Hartman
2020-09-08 21:35   ` Edward Cree
2020-09-09  6:37     ` Greg Kroah-Hartman
     [not found]     ` <CGME20200909063710epcas2p340688acd14fad9e0fe53a66d06fd14a7@epcms2p4>
     [not found]       ` <20200909072101epcms2p457639b69a22434d140c01aeecd3ef46e@epcms2p4>
2020-09-09  8:50         ` Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 087/129] btrfs: fix potential deadlock in the search ioctl Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 088/129] Revert "net: dsa: microchip: set the correct number of ports" Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 089/129] Revert "ALSA: hda: Add support for Loongson 7A1000 controller" Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 090/129] ALSA: ca0106: fix error code handling Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 091/129] ALSA: usb-audio: Add implicit feedback quirk for UR22C Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 092/129] ALSA: pcm: oss: Remove superfluous WARN_ON() for mulaw sanity check Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 093/129] ALSA: hda/hdmi: always check pin power status in i915 pin fixup Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 094/129] ALSA: firewire-digi00x: exclude Avid Adrenaline from detection Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 095/129] ALSA: hda - Fix silent audio output and corrupted input on MSI X570-A PRO Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 096/129] ALSA; firewire-tascam: exclude Tascam FE-8 from detection Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 097/129] ALSA: hda/realtek: Add quirk for Samsung Galaxy Book Ion NT950XCJ-X716A Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 098/129] ALSA: hda/realtek - Improved routing for Thinkpad X1 7th/8th Gen Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 099/129] arm64: dts: mt7622: add reset node for mmc device Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 100/129] mmc: mediatek: add optional module reset property Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 101/129] mmc: dt-bindings: Add resets/reset-names for Mediatek MMC bindings Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 102/129] mmc: cqhci: Add cqhci_deactivate() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 103/129] mmc: sdhci-pci: Fix SDHCI_RESET_ALL for CQHCI for Intel GLK-based controllers Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 104/129] media: rc: do not access device via sysfs after rc_unregister_device() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 105/129] media: rc: uevent sysfs file races with rc_unregister_device() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 106/129] affs: fix basic permission bits to actually work Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 107/129] block: allow for_each_bvec to support zero len bvec Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 108/129] block: ensure bdi->io_pages is always initialized Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 109/129] libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 110/129] blk-iocost: ioc_pd_free() shouldnt assume irq disabled Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 111/129] dmaengine: dw-edma: Fix scatter-gather address calculation Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 112/129] drm/amd/pm: avoid false alarm due to confusing softwareshutdowntemp setting Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 113/129] dm writecache: handle DAX to partitions on persistent memory correctly Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 114/129] dm mpath: fix racey management of PG initialization Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 115/129] dm integrity: fix error reporting in bitmap mode after creation Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 116/129] dm crypt: Initialize crypto wait structures Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 117/129] dm cache metadata: Avoid returning cmd->bm wild pointer on error Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.4 118/129] dm thin " Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 119/129] dm thin metadata: Fix use-after-free in dm_bm_set_read_only Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 120/129] mm: slub: fix conversion of freelist_corrupted() Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 121/129] mm: madvise: fix vma user-after-free Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 122/129] vfio/pci: Fix SR-IOV VF handling with MMIO blocking Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 123/129] perf record: Correct the help info of option "--no-bpf-event" Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 124/129] sdhci: tegra: Add missing TMCLK for data timeout Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 125/129] checkpatch: fix the usage of capture group ( ... ) Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 126/129] mm/hugetlb: fix a race between hugetlb sysctl handlers Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 127/129] mm/khugepaged.c: fix khugepageds request size in collapse_file Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 128/129] cfg80211: regulatory: reject invalid hints Greg Kroah-Hartman
2020-09-08 15:26 ` [PATCH 5.4 129/129] net: usb: Fix uninit-was-stored issue in asix_read_phy_addr() Greg Kroah-Hartman
2020-09-09  1:41 ` [PATCH 5.4 000/129] 5.4.64-rc1 review Shuah Khan
2020-09-09  5:49 ` Naresh Kamboju
2020-09-09 16:40 ` Guenter Roeck

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=20200908152233.793191583@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dsterba@suse.com \
    --cc=fdmanana@suse.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-kernel@vger.kernel.org \
    --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

Powered by JetHome