public inbox for linux-kernel@vger.kernel.org
 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,
	Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
	Sagi Grimberg <sagi@grimberg.me>,
	Chaitanya Kulkarni <kch@nvidia.com>,
	Christoph Hellwig <hch@lst.de>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.15 034/132] nvmet: use a private workqueue instead of the system workqueue
Date: Mon, 23 May 2022 19:04:03 +0200	[thread overview]
Message-ID: <20220523165829.132547750@linuxfoundation.org> (raw)
In-Reply-To: <20220523165823.492309987@linuxfoundation.org>

From: Sagi Grimberg <sagi@grimberg.me>

[ Upstream commit 8832cf922151e9dfa2821736beb0ae2dd3968b6e ]

Any attempt to flush kernel-global WQs has possibility of deadlock
so we should simply stop using them, instead introduce nvmet_wq
which is the generic nvmet workqueue for work elements that
don't explicitly require a dedicated workqueue (by the mere fact
that they are using the system_wq).

Changes were done using the following replaces:

 - s/schedule_work(/queue_work(nvmet_wq, /g
 - s/schedule_delayed_work(/queue_delayed_work(nvmet_wq, /g
 - s/flush_scheduled_work()/flush_workqueue(nvmet_wq)/g

Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvme/target/admin-cmd.c   |  2 +-
 drivers/nvme/target/configfs.c    |  2 +-
 drivers/nvme/target/core.c        | 24 ++++++++++++++++++------
 drivers/nvme/target/fc.c          |  8 ++++----
 drivers/nvme/target/fcloop.c      | 16 ++++++++--------
 drivers/nvme/target/io-cmd-file.c |  6 +++---
 drivers/nvme/target/loop.c        |  4 ++--
 drivers/nvme/target/nvmet.h       |  1 +
 drivers/nvme/target/passthru.c    |  2 +-
 drivers/nvme/target/rdma.c        | 12 ++++++------
 drivers/nvme/target/tcp.c         | 10 +++++-----
 11 files changed, 50 insertions(+), 37 deletions(-)

diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c
index aa6d84d8848e..52bb262d267a 100644
--- a/drivers/nvme/target/admin-cmd.c
+++ b/drivers/nvme/target/admin-cmd.c
@@ -978,7 +978,7 @@ void nvmet_execute_async_event(struct nvmet_req *req)
 	ctrl->async_event_cmds[ctrl->nr_async_event_cmds++] = req;
 	mutex_unlock(&ctrl->lock);
 
-	schedule_work(&ctrl->async_event_work);
+	queue_work(nvmet_wq, &ctrl->async_event_work);
 }
 
 void nvmet_execute_keep_alive(struct nvmet_req *req)
diff --git a/drivers/nvme/target/configfs.c b/drivers/nvme/target/configfs.c
index 496d775c6770..cea30e4f5053 100644
--- a/drivers/nvme/target/configfs.c
+++ b/drivers/nvme/target/configfs.c
@@ -1554,7 +1554,7 @@ static void nvmet_port_release(struct config_item *item)
 	struct nvmet_port *port = to_nvmet_port(item);
 
 	/* Let inflight controllers teardown complete */
-	flush_scheduled_work();
+	flush_workqueue(nvmet_wq);
 	list_del(&port->global_entry);
 
 	kfree(port->ana_state);
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index b8425fa34300..a8dafe8670f2 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -20,6 +20,9 @@ struct workqueue_struct *zbd_wq;
 static const struct nvmet_fabrics_ops *nvmet_transports[NVMF_TRTYPE_MAX];
 static DEFINE_IDA(cntlid_ida);
 
+struct workqueue_struct *nvmet_wq;
+EXPORT_SYMBOL_GPL(nvmet_wq);
+
 /*
  * This read/write semaphore is used to synchronize access to configuration
  * information on a target system that will result in discovery log page
@@ -205,7 +208,7 @@ void nvmet_add_async_event(struct nvmet_ctrl *ctrl, u8 event_type,
 	list_add_tail(&aen->entry, &ctrl->async_events);
 	mutex_unlock(&ctrl->lock);
 
-	schedule_work(&ctrl->async_event_work);
+	queue_work(nvmet_wq, &ctrl->async_event_work);
 }
 
 static void nvmet_add_to_changed_ns_log(struct nvmet_ctrl *ctrl, __le32 nsid)
@@ -385,7 +388,7 @@ static void nvmet_keep_alive_timer(struct work_struct *work)
 	if (reset_tbkas) {
 		pr_debug("ctrl %d reschedule traffic based keep-alive timer\n",
 			ctrl->cntlid);
-		schedule_delayed_work(&ctrl->ka_work, ctrl->kato * HZ);
+		queue_delayed_work(nvmet_wq, &ctrl->ka_work, ctrl->kato * HZ);
 		return;
 	}
 
@@ -403,7 +406,7 @@ void nvmet_start_keep_alive_timer(struct nvmet_ctrl *ctrl)
 	pr_debug("ctrl %d start keep-alive timer for %d secs\n",
 		ctrl->cntlid, ctrl->kato);
 
-	schedule_delayed_work(&ctrl->ka_work, ctrl->kato * HZ);
+	queue_delayed_work(nvmet_wq, &ctrl->ka_work, ctrl->kato * HZ);
 }
 
 void nvmet_stop_keep_alive_timer(struct nvmet_ctrl *ctrl)
@@ -1477,7 +1480,7 @@ void nvmet_ctrl_fatal_error(struct nvmet_ctrl *ctrl)
 	mutex_lock(&ctrl->lock);
 	if (!(ctrl->csts & NVME_CSTS_CFS)) {
 		ctrl->csts |= NVME_CSTS_CFS;
-		schedule_work(&ctrl->fatal_err_work);
+		queue_work(nvmet_wq, &ctrl->fatal_err_work);
 	}
 	mutex_unlock(&ctrl->lock);
 }
@@ -1617,9 +1620,15 @@ static int __init nvmet_init(void)
 		goto out_free_zbd_work_queue;
 	}
 
+	nvmet_wq = alloc_workqueue("nvmet-wq", WQ_MEM_RECLAIM, 0);
+	if (!nvmet_wq) {
+		error = -ENOMEM;
+		goto out_free_buffered_work_queue;
+	}
+
 	error = nvmet_init_discovery();
 	if (error)
-		goto out_free_work_queue;
+		goto out_free_nvmet_work_queue;
 
 	error = nvmet_init_configfs();
 	if (error)
@@ -1628,7 +1637,9 @@ static int __init nvmet_init(void)
 
 out_exit_discovery:
 	nvmet_exit_discovery();
-out_free_work_queue:
+out_free_nvmet_work_queue:
+	destroy_workqueue(nvmet_wq);
+out_free_buffered_work_queue:
 	destroy_workqueue(buffered_io_wq);
 out_free_zbd_work_queue:
 	destroy_workqueue(zbd_wq);
@@ -1640,6 +1651,7 @@ static void __exit nvmet_exit(void)
 	nvmet_exit_configfs();
 	nvmet_exit_discovery();
 	ida_destroy(&cntlid_ida);
+	destroy_workqueue(nvmet_wq);
 	destroy_workqueue(buffered_io_wq);
 	destroy_workqueue(zbd_wq);
 
diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c
index 22b5108168a6..c43bc5e1c7a2 100644
--- a/drivers/nvme/target/fc.c
+++ b/drivers/nvme/target/fc.c
@@ -1491,7 +1491,7 @@ __nvmet_fc_free_assocs(struct nvmet_fc_tgtport *tgtport)
 	list_for_each_entry_rcu(assoc, &tgtport->assoc_list, a_list) {
 		if (!nvmet_fc_tgt_a_get(assoc))
 			continue;
-		if (!schedule_work(&assoc->del_work))
+		if (!queue_work(nvmet_wq, &assoc->del_work))
 			/* already deleting - release local reference */
 			nvmet_fc_tgt_a_put(assoc);
 	}
@@ -1546,7 +1546,7 @@ nvmet_fc_invalidate_host(struct nvmet_fc_target_port *target_port,
 			continue;
 		assoc->hostport->invalid = 1;
 		noassoc = false;
-		if (!schedule_work(&assoc->del_work))
+		if (!queue_work(nvmet_wq, &assoc->del_work))
 			/* already deleting - release local reference */
 			nvmet_fc_tgt_a_put(assoc);
 	}
@@ -1592,7 +1592,7 @@ nvmet_fc_delete_ctrl(struct nvmet_ctrl *ctrl)
 		nvmet_fc_tgtport_put(tgtport);
 
 		if (found_ctrl) {
-			if (!schedule_work(&assoc->del_work))
+			if (!queue_work(nvmet_wq, &assoc->del_work))
 				/* already deleting - release local reference */
 				nvmet_fc_tgt_a_put(assoc);
 			return;
@@ -2060,7 +2060,7 @@ nvmet_fc_rcv_ls_req(struct nvmet_fc_target_port *target_port,
 	iod->rqstdatalen = lsreqbuf_len;
 	iod->hosthandle = hosthandle;
 
-	schedule_work(&iod->work);
+	queue_work(nvmet_wq, &iod->work);
 
 	return 0;
 }
diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c
index 54606f1872b4..5c16372f3b53 100644
--- a/drivers/nvme/target/fcloop.c
+++ b/drivers/nvme/target/fcloop.c
@@ -360,7 +360,7 @@ fcloop_h2t_ls_req(struct nvme_fc_local_port *localport,
 		spin_lock(&rport->lock);
 		list_add_tail(&rport->ls_list, &tls_req->ls_list);
 		spin_unlock(&rport->lock);
-		schedule_work(&rport->ls_work);
+		queue_work(nvmet_wq, &rport->ls_work);
 		return ret;
 	}
 
@@ -393,7 +393,7 @@ fcloop_h2t_xmt_ls_rsp(struct nvmet_fc_target_port *targetport,
 		spin_lock(&rport->lock);
 		list_add_tail(&rport->ls_list, &tls_req->ls_list);
 		spin_unlock(&rport->lock);
-		schedule_work(&rport->ls_work);
+		queue_work(nvmet_wq, &rport->ls_work);
 	}
 
 	return 0;
@@ -448,7 +448,7 @@ fcloop_t2h_ls_req(struct nvmet_fc_target_port *targetport, void *hosthandle,
 		spin_lock(&tport->lock);
 		list_add_tail(&tport->ls_list, &tls_req->ls_list);
 		spin_unlock(&tport->lock);
-		schedule_work(&tport->ls_work);
+		queue_work(nvmet_wq, &tport->ls_work);
 		return ret;
 	}
 
@@ -480,7 +480,7 @@ fcloop_t2h_xmt_ls_rsp(struct nvme_fc_local_port *localport,
 		spin_lock(&tport->lock);
 		list_add_tail(&tport->ls_list, &tls_req->ls_list);
 		spin_unlock(&tport->lock);
-		schedule_work(&tport->ls_work);
+		queue_work(nvmet_wq, &tport->ls_work);
 	}
 
 	return 0;
@@ -520,7 +520,7 @@ fcloop_tgt_discovery_evt(struct nvmet_fc_target_port *tgtport)
 	tgt_rscn->tport = tgtport->private;
 	INIT_WORK(&tgt_rscn->work, fcloop_tgt_rscn_work);
 
-	schedule_work(&tgt_rscn->work);
+	queue_work(nvmet_wq, &tgt_rscn->work);
 }
 
 static void
@@ -739,7 +739,7 @@ fcloop_fcp_req(struct nvme_fc_local_port *localport,
 	INIT_WORK(&tfcp_req->tio_done_work, fcloop_tgt_fcprqst_done_work);
 	kref_init(&tfcp_req->ref);
 
-	schedule_work(&tfcp_req->fcp_rcv_work);
+	queue_work(nvmet_wq, &tfcp_req->fcp_rcv_work);
 
 	return 0;
 }
@@ -921,7 +921,7 @@ fcloop_fcp_req_release(struct nvmet_fc_target_port *tgtport,
 {
 	struct fcloop_fcpreq *tfcp_req = tgt_fcp_req_to_fcpreq(tgt_fcpreq);
 
-	schedule_work(&tfcp_req->tio_done_work);
+	queue_work(nvmet_wq, &tfcp_req->tio_done_work);
 }
 
 static void
@@ -976,7 +976,7 @@ fcloop_fcp_abort(struct nvme_fc_local_port *localport,
 
 	if (abortio)
 		/* leave the reference while the work item is scheduled */
-		WARN_ON(!schedule_work(&tfcp_req->abort_rcv_work));
+		WARN_ON(!queue_work(nvmet_wq, &tfcp_req->abort_rcv_work));
 	else  {
 		/*
 		 * as the io has already had the done callback made,
diff --git a/drivers/nvme/target/io-cmd-file.c b/drivers/nvme/target/io-cmd-file.c
index df7e033dd273..228871d48106 100644
--- a/drivers/nvme/target/io-cmd-file.c
+++ b/drivers/nvme/target/io-cmd-file.c
@@ -292,7 +292,7 @@ static void nvmet_file_execute_flush(struct nvmet_req *req)
 	if (!nvmet_check_transfer_len(req, 0))
 		return;
 	INIT_WORK(&req->f.work, nvmet_file_flush_work);
-	schedule_work(&req->f.work);
+	queue_work(nvmet_wq, &req->f.work);
 }
 
 static void nvmet_file_execute_discard(struct nvmet_req *req)
@@ -352,7 +352,7 @@ static void nvmet_file_execute_dsm(struct nvmet_req *req)
 	if (!nvmet_check_data_len_lte(req, nvmet_dsm_len(req)))
 		return;
 	INIT_WORK(&req->f.work, nvmet_file_dsm_work);
-	schedule_work(&req->f.work);
+	queue_work(nvmet_wq, &req->f.work);
 }
 
 static void nvmet_file_write_zeroes_work(struct work_struct *w)
@@ -382,7 +382,7 @@ static void nvmet_file_execute_write_zeroes(struct nvmet_req *req)
 	if (!nvmet_check_transfer_len(req, 0))
 		return;
 	INIT_WORK(&req->f.work, nvmet_file_write_zeroes_work);
-	schedule_work(&req->f.work);
+	queue_work(nvmet_wq, &req->f.work);
 }
 
 u16 nvmet_file_parse_io_cmd(struct nvmet_req *req)
diff --git a/drivers/nvme/target/loop.c b/drivers/nvme/target/loop.c
index 0285ccc7541f..2553f487c9f2 100644
--- a/drivers/nvme/target/loop.c
+++ b/drivers/nvme/target/loop.c
@@ -166,7 +166,7 @@ static blk_status_t nvme_loop_queue_rq(struct blk_mq_hw_ctx *hctx,
 		iod->req.transfer_len = blk_rq_payload_bytes(req);
 	}
 
-	schedule_work(&iod->work);
+	queue_work(nvmet_wq, &iod->work);
 	return BLK_STS_OK;
 }
 
@@ -187,7 +187,7 @@ static void nvme_loop_submit_async_event(struct nvme_ctrl *arg)
 		return;
 	}
 
-	schedule_work(&iod->work);
+	queue_work(nvmet_wq, &iod->work);
 }
 
 static int nvme_loop_init_iod(struct nvme_loop_ctrl *ctrl,
diff --git a/drivers/nvme/target/nvmet.h b/drivers/nvme/target/nvmet.h
index 7143c7fa7464..dbeb0b8c1194 100644
--- a/drivers/nvme/target/nvmet.h
+++ b/drivers/nvme/target/nvmet.h
@@ -365,6 +365,7 @@ struct nvmet_req {
 
 extern struct workqueue_struct *buffered_io_wq;
 extern struct workqueue_struct *zbd_wq;
+extern struct workqueue_struct *nvmet_wq;
 
 static inline void nvmet_set_result(struct nvmet_req *req, u32 result)
 {
diff --git a/drivers/nvme/target/passthru.c b/drivers/nvme/target/passthru.c
index f0efb3537989..6220e1dd961a 100644
--- a/drivers/nvme/target/passthru.c
+++ b/drivers/nvme/target/passthru.c
@@ -281,7 +281,7 @@ static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
 	if (req->p.use_workqueue || effects) {
 		INIT_WORK(&req->p.work, nvmet_passthru_execute_cmd_work);
 		req->p.rq = rq;
-		schedule_work(&req->p.work);
+		queue_work(nvmet_wq, &req->p.work);
 	} else {
 		rq->end_io_data = req;
 		blk_execute_rq_nowait(ns ? ns->disk : NULL, rq, 0,
diff --git a/drivers/nvme/target/rdma.c b/drivers/nvme/target/rdma.c
index f1eedbf493d5..18e082091c82 100644
--- a/drivers/nvme/target/rdma.c
+++ b/drivers/nvme/target/rdma.c
@@ -1583,7 +1583,7 @@ static int nvmet_rdma_queue_connect(struct rdma_cm_id *cm_id,
 
 	if (queue->host_qid == 0) {
 		/* Let inflight controller teardown complete */
-		flush_scheduled_work();
+		flush_workqueue(nvmet_wq);
 	}
 
 	ret = nvmet_rdma_cm_accept(cm_id, queue, &event->param.conn);
@@ -1668,7 +1668,7 @@ static void __nvmet_rdma_queue_disconnect(struct nvmet_rdma_queue *queue)
 
 	if (disconnect) {
 		rdma_disconnect(queue->cm_id);
-		schedule_work(&queue->release_work);
+		queue_work(nvmet_wq, &queue->release_work);
 	}
 }
 
@@ -1698,7 +1698,7 @@ static void nvmet_rdma_queue_connect_fail(struct rdma_cm_id *cm_id,
 	mutex_unlock(&nvmet_rdma_queue_mutex);
 
 	pr_err("failed to connect queue %d\n", queue->idx);
-	schedule_work(&queue->release_work);
+	queue_work(nvmet_wq, &queue->release_work);
 }
 
 /**
@@ -1772,7 +1772,7 @@ static int nvmet_rdma_cm_handler(struct rdma_cm_id *cm_id,
 		if (!queue) {
 			struct nvmet_rdma_port *port = cm_id->context;
 
-			schedule_delayed_work(&port->repair_work, 0);
+			queue_delayed_work(nvmet_wq, &port->repair_work, 0);
 			break;
 		}
 		fallthrough;
@@ -1902,7 +1902,7 @@ static void nvmet_rdma_repair_port_work(struct work_struct *w)
 	nvmet_rdma_disable_port(port);
 	ret = nvmet_rdma_enable_port(port);
 	if (ret)
-		schedule_delayed_work(&port->repair_work, 5 * HZ);
+		queue_delayed_work(nvmet_wq, &port->repair_work, 5 * HZ);
 }
 
 static int nvmet_rdma_add_port(struct nvmet_port *nport)
@@ -2046,7 +2046,7 @@ static void nvmet_rdma_remove_one(struct ib_device *ib_device, void *client_data
 	}
 	mutex_unlock(&nvmet_rdma_queue_mutex);
 
-	flush_scheduled_work();
+	flush_workqueue(nvmet_wq);
 }
 
 static struct ib_client nvmet_rdma_ib_client = {
diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
index 2b8bab28417b..f592e5f7f5f3 100644
--- a/drivers/nvme/target/tcp.c
+++ b/drivers/nvme/target/tcp.c
@@ -1251,7 +1251,7 @@ static void nvmet_tcp_schedule_release_queue(struct nvmet_tcp_queue *queue)
 	spin_lock(&queue->state_lock);
 	if (queue->state != NVMET_TCP_Q_DISCONNECTING) {
 		queue->state = NVMET_TCP_Q_DISCONNECTING;
-		schedule_work(&queue->release_work);
+		queue_work(nvmet_wq, &queue->release_work);
 	}
 	spin_unlock(&queue->state_lock);
 }
@@ -1662,7 +1662,7 @@ static void nvmet_tcp_listen_data_ready(struct sock *sk)
 		goto out;
 
 	if (sk->sk_state == TCP_LISTEN)
-		schedule_work(&port->accept_work);
+		queue_work(nvmet_wq, &port->accept_work);
 out:
 	read_unlock_bh(&sk->sk_callback_lock);
 }
@@ -1793,7 +1793,7 @@ static u16 nvmet_tcp_install_queue(struct nvmet_sq *sq)
 
 	if (sq->qid == 0) {
 		/* Let inflight controller teardown complete */
-		flush_scheduled_work();
+		flush_workqueue(nvmet_wq);
 	}
 
 	queue->nr_cmds = sq->size * 2;
@@ -1854,12 +1854,12 @@ static void __exit nvmet_tcp_exit(void)
 
 	nvmet_unregister_transport(&nvmet_tcp_ops);
 
-	flush_scheduled_work();
+	flush_workqueue(nvmet_wq);
 	mutex_lock(&nvmet_tcp_queue_mutex);
 	list_for_each_entry(queue, &nvmet_tcp_queue_list, queue_list)
 		kernel_sock_shutdown(queue->sock, SHUT_RDWR);
 	mutex_unlock(&nvmet_tcp_queue_mutex);
-	flush_scheduled_work();
+	flush_workqueue(nvmet_wq);
 
 	destroy_workqueue(nvmet_tcp_wq);
 }
-- 
2.35.1




  parent reply	other threads:[~2022-05-23 17:39 UTC|newest]

Thread overview: 142+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-23 17:03 [PATCH 5.15 000/132] 5.15.42-rc1 review Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 001/132] usb: gadget: fix race when gadget driver register via ioctl Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 002/132] io_uring: arm poll for non-nowait files Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 003/132] floppy: use a statically allocated error counter Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 004/132] kernel/resource: Introduce request_mem_region_muxed() Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 005/132] i2c: piix4: Replace hardcoded memory map size with a #define Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 006/132] i2c: piix4: Move port I/O region request/release code into functions Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 007/132] i2c: piix4: Move SMBus controller base address detect into function Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 008/132] i2c: piix4: Move SMBus port selection " Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 009/132] i2c: piix4: Add EFCH MMIO support to region request and release Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 010/132] i2c: piix4: Add EFCH MMIO support to SMBus base address detect Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 011/132] i2c: piix4: Add EFCH MMIO support for SMBus port select Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 012/132] i2c: piix4: Enable EFCH MMIO for Family 17h+ Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 013/132] Watchdog: sp5100_tco: Move timer initialization into function Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 014/132] Watchdog: sp5100_tco: Refactor MMIO base address initialization Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 015/132] Watchdog: sp5100_tco: Add initialization using EFCH MMIO Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 016/132] Watchdog: sp5100_tco: Enable Family 17h+ CPUs Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 017/132] mm/kfence: reset PG_slab and memcg_data before freeing __kfence_pool Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 018/132] Revert "drm/i915/opregion: check port number bounds for SWSCI display power state" Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 019/132] rtc: fix use-after-free on device removal Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 020/132] rtc: pcf2127: fix bug when reading alarm registers Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 021/132] um: Cleanup syscall_handler_t definition/cast, fix warning Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 022/132] Input: add bounds checking to input_set_capability() Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 023/132] Input: stmfts - fix reference leak in stmfts_input_open Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 024/132] nvme-pci: add quirks for Samsung X5 SSDs Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 025/132] gfs2: Disable page faults during lockless buffered reads Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 026/132] rtc: sun6i: Fix time overflow handling Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 027/132] crypto: stm32 - fix reference leak in stm32_crc_remove Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 028/132] crypto: x86/chacha20 - Avoid spurious jumps to other functions Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 029/132] ALSA: hda/realtek: Enable headset mic on Lenovo P360 Greg Kroah-Hartman
2022-05-23 17:03 ` [PATCH 5.15 030/132] s390/traps: improve panic message for translation-specification exception Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 031/132] s390/pci: improve zpci_dev reference counting Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 032/132] vhost_vdpa: dont setup irq offloading when irq_num < 0 Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 033/132] tools/virtio: compile with -pthread Greg Kroah-Hartman
2022-05-23 17:04 ` Greg Kroah-Hartman [this message]
2022-05-23 17:04 ` [PATCH 5.15 035/132] nvme-multipath: fix hang when disk goes live over reconnect Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 036/132] rtc: mc146818-lib: Fix the AltCentury for AMD platforms Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 037/132] fs: fix an infinite loop in iomap_fiemap Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 038/132] MIPS: lantiq: check the return value of kzalloc() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 039/132] drbd: remove usage of list iterator variable after loop Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 040/132] platform/chrome: cros_ec_debugfs: detach log reader wq from devm Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 041/132] ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 042/132] nilfs2: fix lockdep warnings in page operations for btree nodes Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 043/132] nilfs2: fix lockdep warnings during disk space reclamation Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 044/132] ALSA: usb-audio: Restore Rane SL-1 quirk Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 045/132] ALSA: wavefront: Proper check of get_user() error Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 046/132] ALSA: hda/realtek: Add quirk for TongFang devices with pop noise Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 047/132] perf: Fix sys_perf_event_open() race against self Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 048/132] selinux: fix bad cleanup on error in hashtab_duplicate() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 049/132] Fix double fget() in vhost_net_set_backend() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 050/132] PCI/PM: Avoid putting Elo i2 PCIe Ports in D3cold Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 051/132] Revert "can: m_can: pci: use custom bit timings for Elkhart Lake" Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 052/132] KVM: x86/mmu: Update number of zapped pages even if page list is stable Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 053/132] arm64: paravirt: Use RCU read locks to guard stolen_time Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 054/132] arm64: mte: Ensure the cleared tags are visible before setting the PTE Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 055/132] crypto: qcom-rng - fix infinite loop on requests not multiple of WORD_SZ Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 056/132] libceph: fix potential use-after-free on linger ping and resends Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 057/132] drm/amd: Dont reset dGPUs if the system is going to s2idle Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 058/132] drm/i915/dmc: Add MMIO range restrictions Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 059/132] drm/dp/mst: fix a possible memory leak in fetch_monitor_name() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 060/132] dma-buf: fix use of DMA_BUF_SET_NAME_{A,B} in userspace Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 061/132] dma-buf: ensure unique directory name for dmabuf stats Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 062/132] ARM: dts: aspeed-g6: remove FWQSPID group in pinctrl dtsi Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 063/132] pinctrl: pinctrl-aspeed-g6: remove FWQSPID group in pinctrl Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 064/132] ARM: dts: aspeed-g6: fix SPI1/SPI2 quad pin group Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 065/132] ARM: dts: aspeed: Add ADC for AST2600 and enable for Rainier and Everest Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 066/132] ARM: dts: aspeed: Add secure boot controller node Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 067/132] ARM: dts: aspeed: Add video engine to g6 Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 068/132] pinctrl: mediatek: mt8365: fix IES control pins Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 069/132] ALSA: hda - fix unused Realtek function when PM is not enabled Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 070/132] net: ipa: record proper RX transaction count Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 071/132] net: macb: Increment rx bd head after allocating skb and buffer Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 072/132] xfrm: rework default policy structure Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 073/132] xfrm: fix "disable_policy" flag use when arriving from different devices Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 074/132] net/sched: act_pedit: sanitize shift argument before usage Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 075/132] netfilter: flowtable: fix excessive hw offload attempts after failure Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 076/132] netfilter: nft_flow_offload: skip dst neigh lookup for ppp devices Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 077/132] net: fix dev_fill_forward_path with pppoe + bridge Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 078/132] netfilter: nft_flow_offload: fix offload with pppoe + vlan Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 079/132] Revert "PCI: aardvark: Rewrite IRQ code to chained IRQ handler" Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 080/132] net: systemport: Fix an error handling path in bcm_sysport_probe() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 081/132] net: vmxnet3: fix possible use-after-free bugs in vmxnet3_rq_alloc_rx_buf() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 082/132] net: vmxnet3: fix possible NULL pointer dereference in vmxnet3_rq_cleanup() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 083/132] ice: fix crash when writing timestamp on RX rings Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 084/132] ice: fix possible under reporting of ethtool Tx and Rx statistics Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 085/132] ice: move ice_container_type onto ice_ring_container Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 086/132] ice: Fix interrupt moderation settings getting cleared Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 087/132] clk: at91: generated: consider range when calculating best rate Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 088/132] net/qla3xxx: Fix a test in ql_reset_work() Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 089/132] NFC: nci: fix sleep in atomic context bugs caused by nci_skb_alloc Greg Kroah-Hartman
2022-05-23 17:04 ` [PATCH 5.15 090/132] net/mlx5: DR, Fix missing flow_source when creating multi-destination FW table Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 091/132] net/mlx5e: Properly block LRO when XDP is enabled Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 092/132] net: af_key: add check for pfkey_broadcast in function pfkey_process Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 093/132] ARM: 9196/1: spectre-bhb: enable for Cortex-A15 Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 094/132] ARM: 9197/1: spectre-bhb: fix loop8 sequence for Thumb2 Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 095/132] mptcp: change the parameter of __mptcp_make_csum Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 096/132] mptcp: reuse __mptcp_make_csum in validate_data_csum Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 097/132] mptcp: fix checksum byte order Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 098/132] mptcp: strict local address ID selection Greg Kroah-Hartman
2022-05-24  3:56   ` Mat Martineau
2022-05-23 17:05 ` [PATCH 5.15 099/132] mptcp: Do TCP fallback on early DSS checksum failure Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 100/132] igb: skip phy status check where unavailable Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 101/132] netfilter: flowtable: fix TCP flow teardown Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 102/132] netfilter: flowtable: pass flowtable to nf_flow_table_iterate() Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 103/132] netfilter: flowtable: move dst_check to packet path Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 104/132] net: bridge: Clear offload_fwd_mark when passing frame up bridge interface Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 105/132] riscv: dts: sifive: fu540-c000: align dma node name with dtschema Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 106/132] scsi: ufs: core: Fix referencing invalid rsp field Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 107/132] perf build: Fix check for btf__load_from_kernel_by_id() in libbpf Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 108/132] gpio: gpio-vf610: do not touch other bits when set the target bit Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 109/132] gpio: mvebu/pwm: Refuse requests with inverted polarity Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 110/132] perf regs x86: Fix arch__intr_reg_mask() for the hybrid platform Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 111/132] perf bench numa: Address compiler error on s390 Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 112/132] scsi: scsi_dh_alua: Properly handle the ALUA transitioning state Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 113/132] scsi: qla2xxx: Fix missed DMA unmap for aborted commands Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 114/132] mac80211: fix rx reordering with non explicit / psmp ack policy Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 115/132] nl80211: validate S1G channel width Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 116/132] selftests: add ping test with ping_group_range tuned Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 117/132] Revert "fbdev: Make fb_release() return -ENODEV if fbdev was unregistered" Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 118/132] fbdev: Prevent possible use-after-free in fb_release() Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 119/132] net: fix wrong network header length Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 120/132] nl80211: fix locking in nl80211_set_tx_bitrate_mask() Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 121/132] ethernet: tulip: fix missing pci_disable_device() on error in tulip_init_one() Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 122/132] net: stmmac: fix missing pci_disable_device() on error in stmmac_pci_probe() Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 123/132] net: atlantic: fix "frag[0] not initialized" Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 124/132] net: atlantic: reduce scope of is_rsc_complete Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 125/132] net: atlantic: add check for MAX_SKB_FRAGS Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 126/132] net: atlantic: verify hw_head_ lies within TX buffer ring Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 127/132] arm64: Enable repeat tlbi workaround on KRYO4XX gold CPUs Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 128/132] Input: ili210x - fix reset timing Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 129/132] dt-bindings: pinctrl: aspeed-g6: remove FWQSPID group Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 130/132] mt76: mt7921e: fix possible probe failure after reboot Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 131/132] i2c: mt7621: fix missing clk_disable_unprepare() on error in mtk_i2c_probe() Greg Kroah-Hartman
2022-05-23 17:05 ` [PATCH 5.15 132/132] afs: Fix afs_getattr() to refetch file status if callback break occurred Greg Kroah-Hartman
2022-05-23 18:42 ` [PATCH 5.15 000/132] 5.15.42-rc1 review Florian Fainelli
2022-05-23 22:56 ` Shuah Khan
2022-05-24  2:05 ` Naresh Kamboju
2022-05-24  6:53 ` Fox Chen
2022-05-24 14:54 ` Sudip Mukherjee
2022-05-24 15:11 ` Ron Economos
2022-05-24 20:04 ` Guenter Roeck
2022-05-25  0:23 ` Khalid Masum

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=20220523165829.132547750@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=hch@lst.de \
    --cc=kch@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    --cc=sagi@grimberg.me \
    --cc=sashal@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