From: Greg Kroah-Hartman Date: Mon, 29 Aug 2022 08:39:04 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v5.10.140~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=06d0db5a8ad4f3bcbda6bce6c42e0f12342752c6;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: scsi-storvsc-remove-wq_mem_reclaim-from-storvsc_error_wq.patch --- diff --git a/queue-4.19/scsi-storvsc-remove-wq_mem_reclaim-from-storvsc_error_wq.patch b/queue-4.19/scsi-storvsc-remove-wq_mem_reclaim-from-storvsc_error_wq.patch new file mode 100644 index 00000000000..763f93ccc0c --- /dev/null +++ b/queue-4.19/scsi-storvsc-remove-wq_mem_reclaim-from-storvsc_error_wq.patch @@ -0,0 +1,67 @@ +From d957e7ffb2c72410bcc1a514153a46719255a5da Mon Sep 17 00:00:00 2001 +From: Saurabh Sengar +Date: Thu, 4 Aug 2022 08:55:34 -0700 +Subject: scsi: storvsc: Remove WQ_MEM_RECLAIM from storvsc_error_wq + +From: Saurabh Sengar + +commit d957e7ffb2c72410bcc1a514153a46719255a5da upstream. + +storvsc_error_wq workqueue should not be marked as WQ_MEM_RECLAIM as it +doesn't need to make forward progress under memory pressure. Marking this +workqueue as WQ_MEM_RECLAIM may cause deadlock while flushing a +non-WQ_MEM_RECLAIM workqueue. In the current state it causes the following +warning: + +[ 14.506347] ------------[ cut here ]------------ +[ 14.506354] workqueue: WQ_MEM_RECLAIM storvsc_error_wq_0:storvsc_remove_lun is flushing !WQ_MEM_RECLAIM events_freezable_power_:disk_events_workfn +[ 14.506360] WARNING: CPU: 0 PID: 8 at <-snip->kernel/workqueue.c:2623 check_flush_dependency+0xb5/0x130 +[ 14.506390] CPU: 0 PID: 8 Comm: kworker/u4:0 Not tainted 5.4.0-1086-azure #91~18.04.1-Ubuntu +[ 14.506391] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.1 05/09/2022 +[ 14.506393] Workqueue: storvsc_error_wq_0 storvsc_remove_lun +[ 14.506395] RIP: 0010:check_flush_dependency+0xb5/0x130 + <-snip-> +[ 14.506408] Call Trace: +[ 14.506412] __flush_work+0xf1/0x1c0 +[ 14.506414] __cancel_work_timer+0x12f/0x1b0 +[ 14.506417] ? kernfs_put+0xf0/0x190 +[ 14.506418] cancel_delayed_work_sync+0x13/0x20 +[ 14.506420] disk_block_events+0x78/0x80 +[ 14.506421] del_gendisk+0x3d/0x2f0 +[ 14.506423] sr_remove+0x28/0x70 +[ 14.506427] device_release_driver_internal+0xef/0x1c0 +[ 14.506428] device_release_driver+0x12/0x20 +[ 14.506429] bus_remove_device+0xe1/0x150 +[ 14.506431] device_del+0x167/0x380 +[ 14.506432] __scsi_remove_device+0x11d/0x150 +[ 14.506433] scsi_remove_device+0x26/0x40 +[ 14.506434] storvsc_remove_lun+0x40/0x60 +[ 14.506436] process_one_work+0x209/0x400 +[ 14.506437] worker_thread+0x34/0x400 +[ 14.506439] kthread+0x121/0x140 +[ 14.506440] ? process_one_work+0x400/0x400 +[ 14.506441] ? kthread_park+0x90/0x90 +[ 14.506443] ret_from_fork+0x35/0x40 +[ 14.506445] ---[ end trace 2d9633159fdc6ee7 ]--- + +Link: https://lore.kernel.org/r/1659628534-17539-1-git-send-email-ssengar@linux.microsoft.com +Fixes: 436ad9413353 ("scsi: storvsc: Allow only one remove lun work item to be issued per lun") +Reviewed-by: Michael Kelley +Signed-off-by: Saurabh Sengar +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/storvsc_drv.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/scsi/storvsc_drv.c ++++ b/drivers/scsi/storvsc_drv.c +@@ -1858,7 +1858,7 @@ static int storvsc_probe(struct hv_devic + */ + host_dev->handle_error_wq = + alloc_ordered_workqueue("storvsc_error_wq_%d", +- WQ_MEM_RECLAIM, ++ 0, + host->host_no); + if (!host_dev->handle_error_wq) + goto err_out2; diff --git a/queue-4.19/series b/queue-4.19/series index 03db33c4510..100863872f5 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -33,3 +33,4 @@ asm-generic-sections-refactor-memory_intersects.patch s390-fix-double-free-of-gs-and-ri-cbs-on-fork-failure.patch mm-hugetlb-fix-hugetlb-not-supporting-softdirty-tracking.patch md-call-__md_stop_writes-in-md_stop.patch +scsi-storvsc-remove-wq_mem_reclaim-from-storvsc_error_wq.patch