patches.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Minh Hoang <mh2022@meta.com>,
	Sagi Grimberg <sagi@grimberg.me>, Keith Busch <kbusch@kernel.org>,
	Hannes Reinecke <hare@suse.de>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.6 054/150] nvme: ensure reset state check ordering
Date: Thu, 18 Jan 2024 11:47:56 +0100	[thread overview]
Message-ID: <20240118104322.483877812@linuxfoundation.org> (raw)
In-Reply-To: <20240118104320.029537060@linuxfoundation.org>

6.6-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Keith Busch <kbusch@kernel.org>

[ Upstream commit e6e7f7ac03e40795346f1b2994a05f507ad8d345 ]

A different CPU may be setting the ctrl->state value, so ensure proper
barriers to prevent optimizing to a stale state. Normally it isn't a
problem to observe the wrong state as it is merely advisory to take a
quicker path during initialization and error recovery, but seeing an old
state can report unexpected ENETRESET errors when a reset request was in
fact successful.

Reported-by: Minh Hoang <mh2022@meta.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/nvme/host/core.c | 42 +++++++++++++++++++++-------------------
 drivers/nvme/host/fc.c   |  6 +++---
 drivers/nvme/host/pci.c  | 14 +++++++-------
 drivers/nvme/host/rdma.c | 23 +++++++++++++---------
 drivers/nvme/host/tcp.c  | 27 ++++++++++++++++----------
 5 files changed, 63 insertions(+), 49 deletions(-)

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index ae234f34ac9b..c38e234723ec 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -131,7 +131,7 @@ void nvme_queue_scan(struct nvme_ctrl *ctrl)
 	/*
 	 * Only new queue scan work when admin and IO queues are both alive
 	 */
-	if (ctrl->state == NVME_CTRL_LIVE && ctrl->tagset)
+	if (nvme_ctrl_state(ctrl) == NVME_CTRL_LIVE && ctrl->tagset)
 		queue_work(nvme_wq, &ctrl->scan_work);
 }
 
@@ -143,7 +143,7 @@ void nvme_queue_scan(struct nvme_ctrl *ctrl)
  */
 int nvme_try_sched_reset(struct nvme_ctrl *ctrl)
 {
-	if (ctrl->state != NVME_CTRL_RESETTING)
+	if (nvme_ctrl_state(ctrl) != NVME_CTRL_RESETTING)
 		return -EBUSY;
 	if (!queue_work(nvme_reset_wq, &ctrl->reset_work))
 		return -EBUSY;
@@ -156,7 +156,7 @@ static void nvme_failfast_work(struct work_struct *work)
 	struct nvme_ctrl *ctrl = container_of(to_delayed_work(work),
 			struct nvme_ctrl, failfast_work);
 
-	if (ctrl->state != NVME_CTRL_CONNECTING)
+	if (nvme_ctrl_state(ctrl) != NVME_CTRL_CONNECTING)
 		return;
 
 	set_bit(NVME_CTRL_FAILFAST_EXPIRED, &ctrl->flags);
@@ -200,7 +200,7 @@ int nvme_reset_ctrl_sync(struct nvme_ctrl *ctrl)
 	ret = nvme_reset_ctrl(ctrl);
 	if (!ret) {
 		flush_work(&ctrl->reset_work);
-		if (ctrl->state != NVME_CTRL_LIVE)
+		if (nvme_ctrl_state(ctrl) != NVME_CTRL_LIVE)
 			ret = -ENETRESET;
 	}
 
@@ -499,7 +499,7 @@ bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl,
 
 	spin_lock_irqsave(&ctrl->lock, flags);
 
-	old_state = ctrl->state;
+	old_state = nvme_ctrl_state(ctrl);
 	switch (new_state) {
 	case NVME_CTRL_LIVE:
 		switch (old_state) {
@@ -567,7 +567,7 @@ bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl,
 	}
 
 	if (changed) {
-		ctrl->state = new_state;
+		WRITE_ONCE(ctrl->state, new_state);
 		wake_up_all(&ctrl->state_wq);
 	}
 
@@ -575,11 +575,11 @@ bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl,
 	if (!changed)
 		return false;
 
-	if (ctrl->state == NVME_CTRL_LIVE) {
+	if (new_state == NVME_CTRL_LIVE) {
 		if (old_state == NVME_CTRL_CONNECTING)
 			nvme_stop_failfast_work(ctrl);
 		nvme_kick_requeue_lists(ctrl);
-	} else if (ctrl->state == NVME_CTRL_CONNECTING &&
+	} else if (new_state == NVME_CTRL_CONNECTING &&
 		old_state == NVME_CTRL_RESETTING) {
 		nvme_start_failfast_work(ctrl);
 	}
@@ -592,7 +592,7 @@ EXPORT_SYMBOL_GPL(nvme_change_ctrl_state);
  */
 static bool nvme_state_terminal(struct nvme_ctrl *ctrl)
 {
-	switch (ctrl->state) {
+	switch (nvme_ctrl_state(ctrl)) {
 	case NVME_CTRL_NEW:
 	case NVME_CTRL_LIVE:
 	case NVME_CTRL_RESETTING:
@@ -617,7 +617,7 @@ bool nvme_wait_reset(struct nvme_ctrl *ctrl)
 	wait_event(ctrl->state_wq,
 		   nvme_change_ctrl_state(ctrl, NVME_CTRL_RESETTING) ||
 		   nvme_state_terminal(ctrl));
-	return ctrl->state == NVME_CTRL_RESETTING;
+	return nvme_ctrl_state(ctrl) == NVME_CTRL_RESETTING;
 }
 EXPORT_SYMBOL_GPL(nvme_wait_reset);
 
@@ -704,9 +704,11 @@ EXPORT_SYMBOL_GPL(nvme_init_request);
 blk_status_t nvme_fail_nonready_command(struct nvme_ctrl *ctrl,
 		struct request *rq)
 {
-	if (ctrl->state != NVME_CTRL_DELETING_NOIO &&
-	    ctrl->state != NVME_CTRL_DELETING &&
-	    ctrl->state != NVME_CTRL_DEAD &&
+	enum nvme_ctrl_state state = nvme_ctrl_state(ctrl);
+
+	if (state != NVME_CTRL_DELETING_NOIO &&
+	    state != NVME_CTRL_DELETING &&
+	    state != NVME_CTRL_DEAD &&
 	    !test_bit(NVME_CTRL_FAILFAST_EXPIRED, &ctrl->flags) &&
 	    !blk_noretry_request(rq) && !(rq->cmd_flags & REQ_NVME_MPATH))
 		return BLK_STS_RESOURCE;
@@ -736,7 +738,7 @@ bool __nvme_check_ready(struct nvme_ctrl *ctrl, struct request *rq,
 		 * command, which is require to set the queue live in the
 		 * appropinquate states.
 		 */
-		switch (ctrl->state) {
+		switch (nvme_ctrl_state(ctrl)) {
 		case NVME_CTRL_CONNECTING:
 			if (blk_rq_is_passthrough(rq) && nvme_is_fabrics(req->cmd) &&
 			    (req->cmd->fabrics.fctype == nvme_fabrics_type_connect ||
@@ -2542,7 +2544,7 @@ static void nvme_set_latency_tolerance(struct device *dev, s32 val)
 
 	if (ctrl->ps_max_latency_us != latency) {
 		ctrl->ps_max_latency_us = latency;
-		if (ctrl->state == NVME_CTRL_LIVE)
+		if (nvme_ctrl_state(ctrl) == NVME_CTRL_LIVE)
 			nvme_configure_apst(ctrl);
 	}
 }
@@ -3228,7 +3230,7 @@ static int nvme_dev_open(struct inode *inode, struct file *file)
 	struct nvme_ctrl *ctrl =
 		container_of(inode->i_cdev, struct nvme_ctrl, cdev);
 
-	switch (ctrl->state) {
+	switch (nvme_ctrl_state(ctrl)) {
 	case NVME_CTRL_LIVE:
 		break;
 	default:
@@ -3914,7 +3916,7 @@ static void nvme_scan_work(struct work_struct *work)
 	int ret;
 
 	/* No tagset on a live ctrl means IO queues could not created */
-	if (ctrl->state != NVME_CTRL_LIVE || !ctrl->tagset)
+	if (nvme_ctrl_state(ctrl) != NVME_CTRL_LIVE || !ctrl->tagset)
 		return;
 
 	/*
@@ -3984,7 +3986,7 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl)
 	 * removing the namespaces' disks; fail all the queues now to avoid
 	 * potentially having to clean up the failed sync later.
 	 */
-	if (ctrl->state == NVME_CTRL_DEAD)
+	if (nvme_ctrl_state(ctrl) == NVME_CTRL_DEAD)
 		nvme_mark_namespaces_dead(ctrl);
 
 	/* this is a no-op when called from the controller reset handler */
@@ -4066,7 +4068,7 @@ static void nvme_async_event_work(struct work_struct *work)
 	 * flushing ctrl async_event_work after changing the controller state
 	 * from LIVE and before freeing the admin queue.
 	*/
-	if (ctrl->state == NVME_CTRL_LIVE)
+	if (nvme_ctrl_state(ctrl) == NVME_CTRL_LIVE)
 		ctrl->ops->submit_async_event(ctrl);
 }
 
@@ -4451,7 +4453,7 @@ int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,
 {
 	int ret;
 
-	ctrl->state = NVME_CTRL_NEW;
+	WRITE_ONCE(ctrl->state, NVME_CTRL_NEW);
 	clear_bit(NVME_CTRL_FAILFAST_EXPIRED, &ctrl->flags);
 	spin_lock_init(&ctrl->lock);
 	mutex_init(&ctrl->scan_lock);
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index 206f1b4e5eb1..46cce0ec35e9 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -557,7 +557,7 @@ nvme_fc_rport_get(struct nvme_fc_rport *rport)
 static void
 nvme_fc_resume_controller(struct nvme_fc_ctrl *ctrl)
 {
-	switch (ctrl->ctrl.state) {
+	switch (nvme_ctrl_state(&ctrl->ctrl)) {
 	case NVME_CTRL_NEW:
 	case NVME_CTRL_CONNECTING:
 		/*
@@ -793,7 +793,7 @@ nvme_fc_ctrl_connectivity_loss(struct nvme_fc_ctrl *ctrl)
 		"NVME-FC{%d}: controller connectivity lost. Awaiting "
 		"Reconnect", ctrl->cnum);
 
-	switch (ctrl->ctrl.state) {
+	switch (nvme_ctrl_state(&ctrl->ctrl)) {
 	case NVME_CTRL_NEW:
 	case NVME_CTRL_LIVE:
 		/*
@@ -3305,7 +3305,7 @@ nvme_fc_reconnect_or_delete(struct nvme_fc_ctrl *ctrl, int status)
 	unsigned long recon_delay = ctrl->ctrl.opts->reconnect_delay * HZ;
 	bool recon = true;
 
-	if (ctrl->ctrl.state != NVME_CTRL_CONNECTING)
+	if (nvme_ctrl_state(&ctrl->ctrl) != NVME_CTRL_CONNECTING)
 		return;
 
 	if (portptr->port_state == FC_OBJSTATE_ONLINE) {
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 5c2a3af26d4d..f8e92404a659 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1234,7 +1234,7 @@ static bool nvme_should_reset(struct nvme_dev *dev, u32 csts)
 	bool nssro = dev->subsystem && (csts & NVME_CSTS_NSSRO);
 
 	/* If there is a reset/reinit ongoing, we shouldn't reset again. */
-	switch (dev->ctrl.state) {
+	switch (nvme_ctrl_state(&dev->ctrl)) {
 	case NVME_CTRL_RESETTING:
 	case NVME_CTRL_CONNECTING:
 		return false;
@@ -1322,7 +1322,7 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req)
 	 * cancellation error. All outstanding requests are completed on
 	 * shutdown, so we return BLK_EH_DONE.
 	 */
-	switch (dev->ctrl.state) {
+	switch (nvme_ctrl_state(&dev->ctrl)) {
 	case NVME_CTRL_CONNECTING:
 		nvme_change_ctrl_state(&dev->ctrl, NVME_CTRL_DELETING);
 		fallthrough;
@@ -1594,7 +1594,7 @@ static int nvme_setup_io_queues_trylock(struct nvme_dev *dev)
 	/*
 	 * Controller is in wrong state, fail early.
 	 */
-	if (dev->ctrl.state != NVME_CTRL_CONNECTING) {
+	if (nvme_ctrl_state(&dev->ctrl) != NVME_CTRL_CONNECTING) {
 		mutex_unlock(&dev->shutdown_lock);
 		return -ENODEV;
 	}
@@ -2574,13 +2574,13 @@ static bool nvme_pci_ctrl_is_dead(struct nvme_dev *dev)
 
 static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
 {
+	enum nvme_ctrl_state state = nvme_ctrl_state(&dev->ctrl);
 	struct pci_dev *pdev = to_pci_dev(dev->dev);
 	bool dead;
 
 	mutex_lock(&dev->shutdown_lock);
 	dead = nvme_pci_ctrl_is_dead(dev);
-	if (dev->ctrl.state == NVME_CTRL_LIVE ||
-	    dev->ctrl.state == NVME_CTRL_RESETTING) {
+	if (state == NVME_CTRL_LIVE || state == NVME_CTRL_RESETTING) {
 		if (pci_is_enabled(pdev))
 			nvme_start_freeze(&dev->ctrl);
 		/*
@@ -2691,7 +2691,7 @@ static void nvme_reset_work(struct work_struct *work)
 	bool was_suspend = !!(dev->ctrl.ctrl_config & NVME_CC_SHN_NORMAL);
 	int result;
 
-	if (dev->ctrl.state != NVME_CTRL_RESETTING) {
+	if (nvme_ctrl_state(&dev->ctrl) != NVME_CTRL_RESETTING) {
 		dev_warn(dev->ctrl.device, "ctrl state %d is not RESETTING\n",
 			 dev->ctrl.state);
 		result = -ENODEV;
@@ -3207,7 +3207,7 @@ static int nvme_suspend(struct device *dev)
 	nvme_wait_freeze(ctrl);
 	nvme_sync_queues(ctrl);
 
-	if (ctrl->state != NVME_CTRL_LIVE)
+	if (nvme_ctrl_state(ctrl) != NVME_CTRL_LIVE)
 		goto unfreeze;
 
 	/*
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index a7fea4cbacd7..c04317a966b3 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -984,10 +984,11 @@ static void nvme_rdma_free_ctrl(struct nvme_ctrl *nctrl)
 
 static void nvme_rdma_reconnect_or_remove(struct nvme_rdma_ctrl *ctrl)
 {
+	enum nvme_ctrl_state state = nvme_ctrl_state(&ctrl->ctrl);
+
 	/* If we are resetting/deleting then do nothing */
-	if (ctrl->ctrl.state != NVME_CTRL_CONNECTING) {
-		WARN_ON_ONCE(ctrl->ctrl.state == NVME_CTRL_NEW ||
-			ctrl->ctrl.state == NVME_CTRL_LIVE);
+	if (state != NVME_CTRL_CONNECTING) {
+		WARN_ON_ONCE(state == NVME_CTRL_NEW || state == NVME_CTRL_LIVE);
 		return;
 	}
 
@@ -1059,8 +1060,10 @@ static int nvme_rdma_setup_ctrl(struct nvme_rdma_ctrl *ctrl, bool new)
 		 * unless we're during creation of a new controller to
 		 * avoid races with teardown flow.
 		 */
-		WARN_ON_ONCE(ctrl->ctrl.state != NVME_CTRL_DELETING &&
-			     ctrl->ctrl.state != NVME_CTRL_DELETING_NOIO);
+		enum nvme_ctrl_state state = nvme_ctrl_state(&ctrl->ctrl);
+
+		WARN_ON_ONCE(state != NVME_CTRL_DELETING &&
+			     state != NVME_CTRL_DELETING_NOIO);
 		WARN_ON_ONCE(new);
 		ret = -EINVAL;
 		goto destroy_io;
@@ -1128,8 +1131,10 @@ static void nvme_rdma_error_recovery_work(struct work_struct *work)
 
 	if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING)) {
 		/* state change failure is ok if we started ctrl delete */
-		WARN_ON_ONCE(ctrl->ctrl.state != NVME_CTRL_DELETING &&
-			     ctrl->ctrl.state != NVME_CTRL_DELETING_NOIO);
+		enum nvme_ctrl_state state = nvme_ctrl_state(&ctrl->ctrl);
+
+		WARN_ON_ONCE(state != NVME_CTRL_DELETING &&
+			     state != NVME_CTRL_DELETING_NOIO);
 		return;
 	}
 
@@ -1161,7 +1166,7 @@ static void nvme_rdma_wr_error(struct ib_cq *cq, struct ib_wc *wc,
 	struct nvme_rdma_queue *queue = wc->qp->qp_context;
 	struct nvme_rdma_ctrl *ctrl = queue->ctrl;
 
-	if (ctrl->ctrl.state == NVME_CTRL_LIVE)
+	if (nvme_ctrl_state(&ctrl->ctrl) == NVME_CTRL_LIVE)
 		dev_info(ctrl->ctrl.device,
 			     "%s for CQE 0x%p failed with status %s (%d)\n",
 			     op, wc->wr_cqe,
@@ -1944,7 +1949,7 @@ static enum blk_eh_timer_return nvme_rdma_timeout(struct request *rq)
 	dev_warn(ctrl->ctrl.device, "I/O %d QID %d timeout\n",
 		 rq->tag, nvme_rdma_queue_idx(queue));
 
-	if (ctrl->ctrl.state != NVME_CTRL_LIVE) {
+	if (nvme_ctrl_state(&ctrl->ctrl) != NVME_CTRL_LIVE) {
 		/*
 		 * If we are resetting, connecting or deleting we should
 		 * complete immediately because we may block controller
diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
index 5b332d9f87fc..f1d62d74426f 100644
--- a/drivers/nvme/host/tcp.c
+++ b/drivers/nvme/host/tcp.c
@@ -1993,10 +1993,11 @@ static void nvme_tcp_teardown_io_queues(struct nvme_ctrl *ctrl,
 
 static void nvme_tcp_reconnect_or_remove(struct nvme_ctrl *ctrl)
 {
+	enum nvme_ctrl_state state = nvme_ctrl_state(ctrl);
+
 	/* If we are resetting/deleting then do nothing */
-	if (ctrl->state != NVME_CTRL_CONNECTING) {
-		WARN_ON_ONCE(ctrl->state == NVME_CTRL_NEW ||
-			ctrl->state == NVME_CTRL_LIVE);
+	if (state != NVME_CTRL_CONNECTING) {
+		WARN_ON_ONCE(state == NVME_CTRL_NEW || state == NVME_CTRL_LIVE);
 		return;
 	}
 
@@ -2056,8 +2057,10 @@ static int nvme_tcp_setup_ctrl(struct nvme_ctrl *ctrl, bool new)
 		 * unless we're during creation of a new controller to
 		 * avoid races with teardown flow.
 		 */
-		WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING &&
-			     ctrl->state != NVME_CTRL_DELETING_NOIO);
+		enum nvme_ctrl_state state = nvme_ctrl_state(ctrl);
+
+		WARN_ON_ONCE(state != NVME_CTRL_DELETING &&
+			     state != NVME_CTRL_DELETING_NOIO);
 		WARN_ON_ONCE(new);
 		ret = -EINVAL;
 		goto destroy_io;
@@ -2124,8 +2127,10 @@ static void nvme_tcp_error_recovery_work(struct work_struct *work)
 
 	if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_CONNECTING)) {
 		/* state change failure is ok if we started ctrl delete */
-		WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING &&
-			     ctrl->state != NVME_CTRL_DELETING_NOIO);
+		enum nvme_ctrl_state state = nvme_ctrl_state(ctrl);
+
+		WARN_ON_ONCE(state != NVME_CTRL_DELETING &&
+			     state != NVME_CTRL_DELETING_NOIO);
 		return;
 	}
 
@@ -2155,8 +2160,10 @@ static void nvme_reset_ctrl_work(struct work_struct *work)
 
 	if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_CONNECTING)) {
 		/* state change failure is ok if we started ctrl delete */
-		WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING &&
-			     ctrl->state != NVME_CTRL_DELETING_NOIO);
+		enum nvme_ctrl_state state = nvme_ctrl_state(ctrl);
+
+		WARN_ON_ONCE(state != NVME_CTRL_DELETING &&
+			     state != NVME_CTRL_DELETING_NOIO);
 		return;
 	}
 
@@ -2274,7 +2281,7 @@ static enum blk_eh_timer_return nvme_tcp_timeout(struct request *rq)
 		nvme_tcp_queue_id(req->queue), nvme_cid(rq), pdu->hdr.type,
 		opc, nvme_opcode_str(qid, opc, fctype));
 
-	if (ctrl->state != NVME_CTRL_LIVE) {
+	if (nvme_ctrl_state(ctrl) != NVME_CTRL_LIVE) {
 		/*
 		 * If we are resetting, connecting or deleting we should
 		 * complete immediately because we may block controller
-- 
2.43.0




  parent reply	other threads:[~2024-01-18 10:53 UTC|newest]

Thread overview: 167+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-18 10:47 [PATCH 6.6 000/150] 6.6.13-rc1 review Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 001/150] f2fs: explicitly null-terminate the xattr list Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 002/150] pinctrl: s32cc: Avoid possible string truncation Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 003/150] kunit: Warn if tests are slow Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 004/150] kunit: Reset suite counter right before running tests Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 005/150] pinctrl: lochnagar: Dont build on MIPS Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 006/150] ALSA: hda - Fix speaker and headset mic pin config for CHUWI CoreBook XPro Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 007/150] mptcp: fix uninit-value in mptcp_incoming_options Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 008/150] wifi: cfg80211: lock wiphy mutex for rfkill poll Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 009/150] wifi: avoid offset calculation on NULL pointer Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 010/150] wifi: mac80211: handle 320 MHz in ieee80211_ht_cap_ie_to_sta_ht_cap Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 011/150] debugfs: fix automount d_fsdata usage Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 012/150] ALSA: hda: intel-nhlt: Ignore vbps when looking for DMIC 32 bps format Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 013/150] nvme-core: fix a memory leak in nvme_ns_info_from_identify() Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 014/150] io_uring: use fget/fput consistently Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 015/150] block: warn once for each partition in bio_check_ro() Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 016/150] drm/amdgpu: Do not issue gpu reset from nbio v7_9 bif interrupt Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 017/150] drm/amdkfd: Use common function for IP version check Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 018/150] drm/amd/display: update dcn315 lpddr pstate latency Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 019/150] drm/amdgpu: Fix cat debugfs amdgpu_regs_didt causes kernel null pointer Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 020/150] drm/amdkfd: Free gang_ctx_bo and wptr_bo in pqm_uninit Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 021/150] drm/amdgpu: Use another offset for GC 9.4.3 remap Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 022/150] smb: client, common: fix fortify warnings Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 023/150] Revert "drm/prime: Unexport helpers for fd/handle conversion" Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 024/150] blk-mq: dont count completed flush data request as inflight in case of quiesce Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 025/150] nvme-core: check for too small lba shift Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 026/150] hwtracing: hisi_ptt: Handle the interrupt in hardirq context Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 027/150] hwtracing: hisi_ptt: Dont try to attach a task Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 028/150] ASoC: amd: yc: Add HP 255 G10 into quirk table Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 029/150] ASoC: wm8974: Correct boost mixer inputs Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 030/150] arm64: dts: rockchip: fix rk356x pcie msg interrupt name Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 031/150] ASoC: Intel: Skylake: Fix mem leak in few functions Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 032/150] ASoC: nau8822: Fix incorrect type in assignment and cast to restricted __be16 Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 033/150] ASoC: SOF: topology: Fix mem leak in sof_dai_load() Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 034/150] ASoC: Intel: Skylake: mem leak in skl register function Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 035/150] ASoC: cs43130: Fix the position of const qualifier Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 036/150] ASoC: cs43130: Fix incorrect frame delay configuration Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 037/150] ASoC: fsl_xcvr: Enable 2 * TX bit clock for spdif only case Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 038/150] ASoC: rt5650: add mutex to avoid the jack detection failure Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 039/150] ASoC: fsl_xcvr: refine the requested phy clock frequency Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 040/150] ASoC: Intel: skl_hda_dsp_generic: Drop HDMI routes when HDMI is not available Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 041/150] ASoC: SOF: ipc4-topology: Add core_mask in struct snd_sof_pipeline Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 042/150] ASoC: SOF: sof-audio: Modify logic for enabling/disabling topology cores Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 043/150] nouveau/tu102: flush all pdbs on vmm flush Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 044/150] ASoC: amd: yc: Add DMI entry to support System76 Pangolin 13 Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 045/150] ASoC: hdac_hda: Conditionally register dais for HDMI and Analog Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 046/150] ASoC: SOF: ipc4-topology: Correct data structures for the SRC module Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 047/150] ASoC: SOF: ipc4-topology: Correct data structures for the GAIN module Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 048/150] pds_vdpa: fix up format-truncation complaint Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 049/150] pds_vdpa: clear config callback when status goes to 0 Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 050/150] pds_vdpa: set features order Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 051/150] net/tg3: fix race condition in tg3_reset_task() Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 052/150] ASoC: da7219: Support low DC impedance headset Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 053/150] nvme: introduce helper function to get ctrl state Greg Kroah-Hartman
2024-01-18 10:47 ` Greg Kroah-Hartman [this message]
2024-01-18 10:47 ` [PATCH 6.6 055/150] nvme-ioctl: move capable() admin check to the end Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 056/150] nvme: prevent potential spectre v1 gadget Greg Kroah-Hartman
2024-01-18 10:47 ` [PATCH 6.6 057/150] nvme: fix deadlock between reset and scan Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 058/150] arm64: dts: rockchip: Fix PCI node addresses on rk3399-gru Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 059/150] mips/smp: Call rcutree_report_cpu_starting() earlier Greg Kroah-Hartman
2024-01-18 11:14   ` 陈华才
2024-01-18 11:50     ` Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 060/150] drm/amd/display: Add monitor patch for specific eDP Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 061/150] drm/amdgpu: Add NULL checks for function pointers Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 062/150] drm/exynos: fix a potential error pointer dereference Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 063/150] drm/exynos: fix a wrong error checking Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 064/150] ALSA: pcmtest: stop timer before buffer is released Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 065/150] hwmon: (corsair-psu) Fix probe when built-in Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 066/150] LoongArch: Apply dynamic relocations for LLD Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 067/150] LoongArch: Set unwind stack type to unknown rather than set error flag Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 068/150] LoongArch: Preserve syscall nr across execve() Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 069/150] clk: rockchip: rk3568: Add PLL rate for 292.5MHz Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 070/150] clk: rockchip: rk3128: Fix HCLK_OTG gate register Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 071/150] soundwire: intel_ace2x: fix AC timing setting for ACE2.x Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 072/150] jbd2: correct the printing of write_flags in jbd2_write_superblock() Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 073/150] jbd2: increase the journal IOs priority Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 074/150] drm/crtc: Fix uninit-value bug in drm_mode_setcrtc Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 075/150] neighbour: Dont let neigh_forced_gc() disable preemption for long Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 076/150] platform/x86: intel-vbtn: Fix missing tablet-mode-switch events Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 077/150] efi/loongarch: Use load address to calculate kernel entry address Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 078/150] jbd2: fix soft lockup in journal_finish_inode_data_buffers() Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 079/150] tracing: Have large events show up as [LINE TOO BIG] instead of nothing Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 080/150] tracing: Add size check when printing trace_marker output Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 081/150] stmmac: dwmac-loongson: drop useless check for compatible fallback Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 082/150] MIPS: dts: loongson: drop incorrect dwmac fallback compatible Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 083/150] tracing: Fix uaf issue when open the hist or hist_debug file Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 084/150] ring-buffer: Do not record in NMI if the arch does not support cmpxchg in NMI Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 085/150] Input: psmouse - enable Synaptics InterTouch for ThinkPad L14 G1 Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 086/150] reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 087/150] Input: atkbd - skip ATKBD_CMD_GETID in translated mode Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 088/150] Input: i8042 - add nomux quirk for Acer P459-G2-M Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 089/150] pinctrl: amd: Mask non-wake source pins with interrupt enabled at suspend Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 090/150] ASoC: cs35l45: Use modern pm_ops Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 091/150] ASoC: cs35l45: Prevent IRQ handling when suspending/resuming Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 092/150] ASoC: cs35l45: Prevents spinning during runtime suspend Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 093/150] s390/scm: fix virtual vs physical address confusion Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 094/150] ARC: fix spare error Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 095/150] ARC: fix smatch warning Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 096/150] wifi: iwlwifi: pcie: avoid a NULL pointer dereference Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 097/150] Input: xpad - add Razer Wolverine V2 support Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 098/150] driver core: Add a guard() definition for the device_lock() Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 099/150] kselftest: alsa: fixed a print formatting warning Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 100/150] HID: nintendo: fix initializer element is not constant error Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 101/150] platform/x86: thinkpad_acpi: fix for incorrect fan reporting on some ThinkPad systems Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 102/150] platform/x86/amd/pmc: Move platform defines to header Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 103/150] platform/x86/amd/pmc: Only run IRQ1 firmware version check on Cezanne Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 104/150] platform/x86/amd/pmc: Move keyboard wakeup disablement detection to pmc-quirks Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 105/150] platform/x86/amd/pmc: Disable keyboard wakeup on AMD Framework 13 Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 106/150] ASoC: Intel: bytcr_rt5640: Add quirk for the Medion Lifetab S10346 Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 107/150] ASoC: Intel: bytcr_rt5640: Add new swapped-speakers quirk Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 108/150] ALSA: hda/realtek: Add quirks for ASUS Zenbook 2022 Models Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 109/150] dm audit: fix Kconfig so DM_AUDIT depends on BLK_DEV_DM Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 110/150] HID: nintendo: Prevent divide-by-zero on code Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 111/150] smb: client: fix potential OOB in smb2_dump_detail() Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 112/150] i2c: rk3x: fix potential spinlock recursion on poll Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 113/150] drm/amdkfd: svm range always mapped flag not working on APU Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 114/150] drm/amd/display: Add case for dcn35 to support usb4 dmub hpd event Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 115/150] drm/amd/display: get dprefclk ss info from integration info table Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 116/150] pinctrl: cy8c95x0: Fix typo Greg Kroah-Hartman
2024-01-18 10:48 ` [PATCH 6.6 117/150] pinctrl: cy8c95x0: Fix regression Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 118/150] pinctrl: cy8c95x0: Fix get_pincfg Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 119/150] posix-timers: Get rid of [COMPAT_]SYS_NI() uses Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 120/150] ida: Fix crash in ida_free when the bitmap is empty Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 121/150] virtio_blk: fix snprintf truncation compiler warning Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 122/150] nfc: Do not send datagram if socket state isnt LLCP_BOUND Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 123/150] net: qrtr: ns: Return 0 if server port is not present Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 124/150] connector: Fix proc_event_num_listeners count not cleared Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 125/150] ARM: sun9i: smp: fix return code check of of_property_match_string Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 126/150] x86/csum: Remove unnecessary odd handling Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 127/150] x86/csum: clean up `csum_partial further Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 128/150] drm/crtc: fix uninitialized variable use Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 129/150] x86/microcode: do not cache microcode if it will not be used Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 130/150] ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP Envy X360 13-ay0xxx Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 131/150] ACPI: resource: Add another DMI match for the TongFang GMxXGxx Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 132/150] bus: moxtet: Mark the irq as shared Greg Kroah-Hartman
2024-01-25  8:24   ` Sjoerd Simons
2024-01-25 17:27     ` Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 133/150] bus: moxtet: Add spi device table Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 134/150] ASoC: SOF: Intel: hda-codec: Delay the codec device registration Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 135/150] drm/amd/display: Pass pwrseq inst for backlight and ABM Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 136/150] ksmbd: dont allow O_TRUNC open on read-only share Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 137/150] ksmbd: free ppace array on error in parse_dacl Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 138/150] Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d" Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 139/150] binder: use EPOLLERR from eventpoll.h Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 140/150] binder: fix use-after-free in shinkers callback Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 141/150] binder: fix trivial typo of binder_free_buf_locked() Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 142/150] binder: fix comment on binder_alloc_new_buf() return value Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 143/150] uio: Fix use-after-free in uio_open Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 144/150] parport: parport_serial: Add Brainboxes BAR details Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 145/150] parport: parport_serial: Add Brainboxes device IDs and geometry Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 146/150] leds: ledtrig-tty: Free allocated ttyname buffer on deactivate Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 147/150] PCI: Add ACS quirk for more Zhaoxin Root Ports Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 148/150] coresight: etm4x: Fix width of CCITMIN field Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 149/150] scripts/decode_stacktrace.sh: optionally use LLVM utilities Greg Kroah-Hartman
2024-01-18 10:49 ` [PATCH 6.6 150/150] mm/memory_hotplug: fix memmap_on_memory sysfs value retrieval Greg Kroah-Hartman
2024-01-18 17:12 ` [PATCH 6.6 000/150] 6.6.13-rc1 review Allen
2024-01-18 18:36 ` SeongJae Park
2024-01-18 19:22 ` Florian Fainelli
2024-01-19  3:59   ` Naresh Kamboju
2024-01-19  5:40   ` Greg Kroah-Hartman
2024-01-19  0:43 ` Shuah Khan
2024-01-19  6:38 ` Bagas Sanjaya
2024-01-19 11:04 ` Takeshi Ogasawara
2024-01-19 14:11 ` Jon Hunter
2024-01-19 15:23 ` Ron Economos
2024-01-19 18:42 ` Harshit Mogalapalli
2024-01-20  3:31 ` Justin Forbes

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=20240118104322.483877812@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=hare@suse.de \
    --cc=kbusch@kernel.org \
    --cc=mh2022@meta.com \
    --cc=patches@lists.linux.dev \
    --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;
as well as URLs for NNTP newsgroup(s).