public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Maher Sanalla <msanalla@nvidia.com>,
	Leon Romanovsky <leon@kernel.org>,
	Sasha Levin <sashal@kernel.org>,
	brauner@kernel.org, viro@zeniv.linux.org.uk,
	dan.carpenter@linaro.org, agoldberger@nvidia.com,
	cmeiohas@nvidia.com, linux-rdma@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 045/153] RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject()
Date: Mon,  5 May 2025 19:11:32 -0400	[thread overview]
Message-ID: <20250505231320.2695319-45-sashal@kernel.org> (raw)
In-Reply-To: <20250505231320.2695319-1-sashal@kernel.org>

From: Maher Sanalla <msanalla@nvidia.com>

[ Upstream commit 81f8f7454ad9e0bf95efdec6542afdc9a6ab1e24 ]

Currently, the IB uverbs API calls uobj_get_uobj_read(), which in turn
uses the rdma_lookup_get_uobject() helper to retrieve user objects.
In case of failure, uobj_get_uobj_read() returns NULL, overriding the
error code from rdma_lookup_get_uobject(). The IB uverbs API then
translates this NULL to -EINVAL, masking the actual error and
complicating debugging. For example, applications calling ibv_modify_qp
that fails with EBUSY when retrieving the QP uobject will see the
overridden error code EINVAL instead, masking the actual error.

Furthermore, based on rdma-core commit:
"2a22f1ced5f3 ("Merge pull request #1568 from jakemoroni/master")"
Kernel's IB uverbs return values are either ignored and passed on as is
to application or overridden with other errnos in a few cases.

Thus, to improve error reporting and debuggability, propagate the
original error from rdma_lookup_get_uobject() instead of replacing it
with EINVAL.

Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
Link: https://patch.msgid.link/64f9d3711b183984e939962c2f83383904f97dfb.1740577869.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/infiniband/core/uverbs_cmd.c | 144 ++++++++++++++-------------
 include/rdma/uverbs_std_types.h      |   2 +-
 2 files changed, 77 insertions(+), 69 deletions(-)

diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 7797f0e4dabad..de631a6abe48d 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -718,8 +718,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
 		goto err_free;
 
 	pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs);
-	if (!pd) {
-		ret = -EINVAL;
+	if (IS_ERR(pd)) {
+		ret = PTR_ERR(pd);
 		goto err_free;
 	}
 
@@ -809,8 +809,8 @@ static int ib_uverbs_rereg_mr(struct uverbs_attr_bundle *attrs)
 	if (cmd.flags & IB_MR_REREG_PD) {
 		new_pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle,
 					   attrs);
-		if (!new_pd) {
-			ret = -EINVAL;
+		if (IS_ERR(new_pd)) {
+			ret = PTR_ERR(new_pd);
 			goto put_uobjs;
 		}
 	} else {
@@ -919,8 +919,8 @@ static int ib_uverbs_alloc_mw(struct uverbs_attr_bundle *attrs)
 		return PTR_ERR(uobj);
 
 	pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs);
-	if (!pd) {
-		ret = -EINVAL;
+	if (IS_ERR(pd)) {
+		ret = PTR_ERR(pd);
 		goto err_free;
 	}
 
@@ -1127,8 +1127,8 @@ static int ib_uverbs_resize_cq(struct uverbs_attr_bundle *attrs)
 		return ret;
 
 	cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs);
-	if (!cq)
-		return -EINVAL;
+	if (IS_ERR(cq))
+		return PTR_ERR(cq);
 
 	ret = cq->device->ops.resize_cq(cq, cmd.cqe, &attrs->driver_udata);
 	if (ret)
@@ -1189,8 +1189,8 @@ static int ib_uverbs_poll_cq(struct uverbs_attr_bundle *attrs)
 		return ret;
 
 	cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs);
-	if (!cq)
-		return -EINVAL;
+	if (IS_ERR(cq))
+		return PTR_ERR(cq);
 
 	/* we copy a struct ib_uverbs_poll_cq_resp to user space */
 	header_ptr = attrs->ucore.outbuf;
@@ -1238,8 +1238,8 @@ static int ib_uverbs_req_notify_cq(struct uverbs_attr_bundle *attrs)
 		return ret;
 
 	cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs);
-	if (!cq)
-		return -EINVAL;
+	if (IS_ERR(cq))
+		return PTR_ERR(cq);
 
 	ib_req_notify_cq(cq, cmd.solicited_only ?
 			 IB_CQ_SOLICITED : IB_CQ_NEXT_COMP);
@@ -1321,8 +1321,8 @@ static int create_qp(struct uverbs_attr_bundle *attrs,
 		ind_tbl = uobj_get_obj_read(rwq_ind_table,
 					    UVERBS_OBJECT_RWQ_IND_TBL,
 					    cmd->rwq_ind_tbl_handle, attrs);
-		if (!ind_tbl) {
-			ret = -EINVAL;
+		if (IS_ERR(ind_tbl)) {
+			ret = PTR_ERR(ind_tbl);
 			goto err_put;
 		}
 
@@ -1360,8 +1360,10 @@ static int create_qp(struct uverbs_attr_bundle *attrs,
 			if (cmd->is_srq) {
 				srq = uobj_get_obj_read(srq, UVERBS_OBJECT_SRQ,
 							cmd->srq_handle, attrs);
-				if (!srq || srq->srq_type == IB_SRQT_XRC) {
-					ret = -EINVAL;
+				if (IS_ERR(srq) ||
+				    srq->srq_type == IB_SRQT_XRC) {
+					ret = IS_ERR(srq) ? PTR_ERR(srq) :
+								  -EINVAL;
 					goto err_put;
 				}
 			}
@@ -1371,23 +1373,29 @@ static int create_qp(struct uverbs_attr_bundle *attrs,
 					rcq = uobj_get_obj_read(
 						cq, UVERBS_OBJECT_CQ,
 						cmd->recv_cq_handle, attrs);
-					if (!rcq) {
-						ret = -EINVAL;
+					if (IS_ERR(rcq)) {
+						ret = PTR_ERR(rcq);
 						goto err_put;
 					}
 				}
 			}
 		}
 
-		if (has_sq)
+		if (has_sq) {
 			scq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ,
 						cmd->send_cq_handle, attrs);
+			if (IS_ERR(scq)) {
+				ret = PTR_ERR(scq);
+				goto err_put;
+			}
+		}
+
 		if (!ind_tbl && cmd->qp_type != IB_QPT_XRC_INI)
 			rcq = rcq ?: scq;
 		pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd->pd_handle,
 				       attrs);
-		if (!pd || (!scq && has_sq)) {
-			ret = -EINVAL;
+		if (IS_ERR(pd)) {
+			ret = PTR_ERR(pd);
 			goto err_put;
 		}
 
@@ -1483,18 +1491,18 @@ static int create_qp(struct uverbs_attr_bundle *attrs,
 err_put:
 	if (!IS_ERR(xrcd_uobj))
 		uobj_put_read(xrcd_uobj);
-	if (pd)
+	if (!IS_ERR_OR_NULL(pd))
 		uobj_put_obj_read(pd);
-	if (scq)
+	if (!IS_ERR_OR_NULL(scq))
 		rdma_lookup_put_uobject(&scq->uobject->uevent.uobject,
 					UVERBS_LOOKUP_READ);
-	if (rcq && rcq != scq)
+	if (!IS_ERR_OR_NULL(rcq) && rcq != scq)
 		rdma_lookup_put_uobject(&rcq->uobject->uevent.uobject,
 					UVERBS_LOOKUP_READ);
-	if (srq)
+	if (!IS_ERR_OR_NULL(srq))
 		rdma_lookup_put_uobject(&srq->uobject->uevent.uobject,
 					UVERBS_LOOKUP_READ);
-	if (ind_tbl)
+	if (!IS_ERR_OR_NULL(ind_tbl))
 		uobj_put_obj_read(ind_tbl);
 
 	uobj_alloc_abort(&obj->uevent.uobject, attrs);
@@ -1656,8 +1664,8 @@ static int ib_uverbs_query_qp(struct uverbs_attr_bundle *attrs)
 	}
 
 	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
-	if (!qp) {
-		ret = -EINVAL;
+	if (IS_ERR(qp)) {
+		ret = PTR_ERR(qp);
 		goto out;
 	}
 
@@ -1762,8 +1770,8 @@ static int modify_qp(struct uverbs_attr_bundle *attrs,
 
 	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd->base.qp_handle,
 			       attrs);
-	if (!qp) {
-		ret = -EINVAL;
+	if (IS_ERR(qp)) {
+		ret = PTR_ERR(qp);
 		goto out;
 	}
 
@@ -2028,8 +2036,8 @@ static int ib_uverbs_post_send(struct uverbs_attr_bundle *attrs)
 		return -ENOMEM;
 
 	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
-	if (!qp) {
-		ret = -EINVAL;
+	if (IS_ERR(qp)) {
+		ret = PTR_ERR(qp);
 		goto out;
 	}
 
@@ -2066,9 +2074,9 @@ static int ib_uverbs_post_send(struct uverbs_attr_bundle *attrs)
 
 			ud->ah = uobj_get_obj_read(ah, UVERBS_OBJECT_AH,
 						   user_wr->wr.ud.ah, attrs);
-			if (!ud->ah) {
+			if (IS_ERR(ud->ah)) {
+				ret = PTR_ERR(ud->ah);
 				kfree(ud);
-				ret = -EINVAL;
 				goto out_put;
 			}
 			ud->remote_qpn = user_wr->wr.ud.remote_qpn;
@@ -2305,8 +2313,8 @@ static int ib_uverbs_post_recv(struct uverbs_attr_bundle *attrs)
 		return PTR_ERR(wr);
 
 	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
-	if (!qp) {
-		ret = -EINVAL;
+	if (IS_ERR(qp)) {
+		ret = PTR_ERR(qp);
 		goto out;
 	}
 
@@ -2356,8 +2364,8 @@ static int ib_uverbs_post_srq_recv(struct uverbs_attr_bundle *attrs)
 		return PTR_ERR(wr);
 
 	srq = uobj_get_obj_read(srq, UVERBS_OBJECT_SRQ, cmd.srq_handle, attrs);
-	if (!srq) {
-		ret = -EINVAL;
+	if (IS_ERR(srq)) {
+		ret = PTR_ERR(srq);
 		goto out;
 	}
 
@@ -2413,8 +2421,8 @@ static int ib_uverbs_create_ah(struct uverbs_attr_bundle *attrs)
 	}
 
 	pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs);
-	if (!pd) {
-		ret = -EINVAL;
+	if (IS_ERR(pd)) {
+		ret = PTR_ERR(pd);
 		goto err;
 	}
 
@@ -2483,8 +2491,8 @@ static int ib_uverbs_attach_mcast(struct uverbs_attr_bundle *attrs)
 		return ret;
 
 	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
-	if (!qp)
-		return -EINVAL;
+	if (IS_ERR(qp))
+		return PTR_ERR(qp);
 
 	obj = qp->uobject;
 
@@ -2533,8 +2541,8 @@ static int ib_uverbs_detach_mcast(struct uverbs_attr_bundle *attrs)
 		return ret;
 
 	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
-	if (!qp)
-		return -EINVAL;
+	if (IS_ERR(qp))
+		return PTR_ERR(qp);
 
 	obj = qp->uobject;
 	mutex_lock(&obj->mcast_lock);
@@ -2668,8 +2676,8 @@ static int kern_spec_to_ib_spec_action(struct uverbs_attr_bundle *attrs,
 							UVERBS_OBJECT_FLOW_ACTION,
 							kern_spec->action.handle,
 							attrs);
-		if (!ib_spec->action.act)
-			return -EINVAL;
+		if (IS_ERR(ib_spec->action.act))
+			return PTR_ERR(ib_spec->action.act);
 		ib_spec->action.size =
 			sizeof(struct ib_flow_spec_action_handle);
 		flow_resources_add(uflow_res,
@@ -2686,8 +2694,8 @@ static int kern_spec_to_ib_spec_action(struct uverbs_attr_bundle *attrs,
 					  UVERBS_OBJECT_COUNTERS,
 					  kern_spec->flow_count.handle,
 					  attrs);
-		if (!ib_spec->flow_count.counters)
-			return -EINVAL;
+		if (IS_ERR(ib_spec->flow_count.counters))
+			return PTR_ERR(ib_spec->flow_count.counters);
 		ib_spec->flow_count.size =
 				sizeof(struct ib_flow_spec_action_count);
 		flow_resources_add(uflow_res,
@@ -2905,14 +2913,14 @@ static int ib_uverbs_ex_create_wq(struct uverbs_attr_bundle *attrs)
 		return PTR_ERR(obj);
 
 	pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs);
-	if (!pd) {
-		err = -EINVAL;
+	if (IS_ERR(pd)) {
+		err = PTR_ERR(pd);
 		goto err_uobj;
 	}
 
 	cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs);
-	if (!cq) {
-		err = -EINVAL;
+	if (IS_ERR(cq)) {
+		err = PTR_ERR(cq);
 		goto err_put_pd;
 	}
 
@@ -3013,8 +3021,8 @@ static int ib_uverbs_ex_modify_wq(struct uverbs_attr_bundle *attrs)
 		return -EINVAL;
 
 	wq = uobj_get_obj_read(wq, UVERBS_OBJECT_WQ, cmd.wq_handle, attrs);
-	if (!wq)
-		return -EINVAL;
+	if (IS_ERR(wq))
+		return PTR_ERR(wq);
 
 	if (cmd.attr_mask & IB_WQ_FLAGS) {
 		wq_attr.flags = cmd.flags;
@@ -3097,8 +3105,8 @@ static int ib_uverbs_ex_create_rwq_ind_table(struct uverbs_attr_bundle *attrs)
 			num_read_wqs++) {
 		wq = uobj_get_obj_read(wq, UVERBS_OBJECT_WQ,
 				       wqs_handles[num_read_wqs], attrs);
-		if (!wq) {
-			err = -EINVAL;
+		if (IS_ERR(wq)) {
+			err = PTR_ERR(wq);
 			goto put_wqs;
 		}
 
@@ -3253,8 +3261,8 @@ static int ib_uverbs_ex_create_flow(struct uverbs_attr_bundle *attrs)
 	}
 
 	qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
-	if (!qp) {
-		err = -EINVAL;
+	if (IS_ERR(qp)) {
+		err = PTR_ERR(qp);
 		goto err_uobj;
 	}
 
@@ -3400,15 +3408,15 @@ static int __uverbs_create_xsrq(struct uverbs_attr_bundle *attrs,
 	if (ib_srq_has_cq(cmd->srq_type)) {
 		attr.ext.cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ,
 						cmd->cq_handle, attrs);
-		if (!attr.ext.cq) {
-			ret = -EINVAL;
+		if (IS_ERR(attr.ext.cq)) {
+			ret = PTR_ERR(attr.ext.cq);
 			goto err_put_xrcd;
 		}
 	}
 
 	pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd->pd_handle, attrs);
-	if (!pd) {
-		ret = -EINVAL;
+	if (IS_ERR(pd)) {
+		ret = PTR_ERR(pd);
 		goto err_put_cq;
 	}
 
@@ -3515,8 +3523,8 @@ static int ib_uverbs_modify_srq(struct uverbs_attr_bundle *attrs)
 		return ret;
 
 	srq = uobj_get_obj_read(srq, UVERBS_OBJECT_SRQ, cmd.srq_handle, attrs);
-	if (!srq)
-		return -EINVAL;
+	if (IS_ERR(srq))
+		return PTR_ERR(srq);
 
 	attr.max_wr    = cmd.max_wr;
 	attr.srq_limit = cmd.srq_limit;
@@ -3543,8 +3551,8 @@ static int ib_uverbs_query_srq(struct uverbs_attr_bundle *attrs)
 		return ret;
 
 	srq = uobj_get_obj_read(srq, UVERBS_OBJECT_SRQ, cmd.srq_handle, attrs);
-	if (!srq)
-		return -EINVAL;
+	if (IS_ERR(srq))
+		return PTR_ERR(srq);
 
 	ret = ib_query_srq(srq, &attr);
 
@@ -3669,8 +3677,8 @@ static int ib_uverbs_ex_modify_cq(struct uverbs_attr_bundle *attrs)
 		return -EOPNOTSUPP;
 
 	cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs);
-	if (!cq)
-		return -EINVAL;
+	if (IS_ERR(cq))
+		return PTR_ERR(cq);
 
 	ret = rdma_set_cq_moderation(cq, cmd.attr.cq_count, cmd.attr.cq_period);
 
diff --git a/include/rdma/uverbs_std_types.h b/include/rdma/uverbs_std_types.h
index fe05121169589..555ea3d142a46 100644
--- a/include/rdma/uverbs_std_types.h
+++ b/include/rdma/uverbs_std_types.h
@@ -34,7 +34,7 @@
 static inline void *_uobj_get_obj_read(struct ib_uobject *uobj)
 {
 	if (IS_ERR(uobj))
-		return NULL;
+		return ERR_CAST(uobj);
 	return uobj->object;
 }
 #define uobj_get_obj_read(_object, _type, _id, _attrs)                         \
-- 
2.39.5


  parent reply	other threads:[~2025-05-05 23:14 UTC|newest]

Thread overview: 155+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-05 23:10 [PATCH AUTOSEL 5.15 001/153] kconfig: merge_config: use an empty file as initfile Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 002/153] NFSv4: Check for delegation validity in nfs_start_delegation_return_locked() Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 003/153] tracing: Mark binary printing functions with __printf() attribute Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 004/153] mailbox: use error ret code of of_parse_phandle_with_args() Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 005/153] fbdev: fsl-diu-fb: add missing device_remove_file() Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 006/153] fbcon: Use correct erase colour for clearing in fbcon Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 007/153] fbdev: core: tileblit: Implement missing margin clearing for tileblit Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 008/153] NFSv4: Treat ENETUNREACH errors as fatal for state recovery Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 009/153] SUNRPC: rpc_clnt_set_transport() must not change the autobind setting Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 010/153] SUNRPC: rpcbind should never reset the port to the value '0' Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 011/153] thermal/drivers/qoriq: Power down TMU on system suspend Sasha Levin
2025-05-05 23:10 ` [PATCH AUTOSEL 5.15 012/153] exit: fix the usage of delay_group_leader->exit_code in do_notify_parent() and pidfs_exit() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 013/153] dql: Fix dql->limit value when reset Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 014/153] lockdep: Fix wait context check on softirq for PREEMPT_RT Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 015/153] PCI: dwc: ep: Ensure proper iteration over outbound map windows Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 016/153] tools/build: Don't pass test log files to linker Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 017/153] pNFS/flexfiles: Report ENETDOWN as a connection error Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 018/153] PCI: vmd: Disable MSI remapping bypass under Xen Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 019/153] libnvdimm/labels: Fix divide error in nd_label_data_init() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 020/153] mmc: host: Wait for Vdd to settle on card power off Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 021/153] wifi: mt76: only mark tx-status-failed frames as ACKed on mt76x0/2 Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 022/153] i2c: qup: Vote for interconnect bandwidth to DRAM Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 023/153] i2c: pxa: fix call balance of i2c->clk handling routines Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 024/153] btrfs: make btrfs_discard_workfn() block_group ref explicit Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 025/153] btrfs: avoid linker error in btrfs_find_create_tree_block() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 026/153] btrfs: get zone unusable bytes while holding lock at btrfs_reclaim_bgs_work() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 027/153] btrfs: send: return -ENAMETOOLONG when attempting a path that is too long Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 028/153] i3c: master: svc: Fix missing STOP for master request Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 029/153] dlm: make tcp still work in multi-link env Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 030/153] clocksource/drivers/timer-riscv: Stop stimecmp when cpu hotplug Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 031/153] um: Store full CSGSFS and SS register from mcontext Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 032/153] um: Update min_low_pfn to match changes in uml_reserved Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 033/153] ext4: reorder capability check last Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 034/153] scsi: st: Tighten the page format heuristics with MODE SELECT Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 035/153] scsi: st: ERASE does not change tape location Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 036/153] vfio/pci: Handle INTx IRQ_NOTCONNECTED Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 037/153] tcp: reorganize tcp_in_ack_event() and tcp_count_delivered() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 038/153] rtc: rv3032: fix EERD location Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 039/153] ASoC: mediatek: mt6359: Add stub for mt6359_accdet_enable_jack_detect Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 040/153] kbuild: fix argument parsing in scripts/config Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 041/153] crypto: octeontx2 - suppress auth failure screaming due to negative tests Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 042/153] dm: restrict dm device size to 2^63-512 bytes Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 043/153] xen: Add support for XenServer 6.1 platform device Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 044/153] f2fs: defer readonly check vs norecovery Sasha Levin
2025-05-05 23:11 ` Sasha Levin [this message]
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 046/153] posix-timers: Add cond_resched() to posix_timer_add() search loop Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 047/153] timer_list: Don't use %pK through printk() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 048/153] netfilter: conntrack: Bound nf_conntrack sysctl writes Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 049/153] arm64/mm: Check PUD_TYPE_TABLE in pud_bad() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 050/153] mmc: sdhci: Disable SD card clock before changing parameters Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 051/153] ipv6: save dontfrag in cork Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 052/153] auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common" Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 053/153] ASoC: qcom: sm8250: explicitly set format in sm8250_be_hw_params_fixup() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 054/153] cpufreq: tegra186: Share policy per cluster Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 055/153] crypto: lzo - Fix compression buffer overrun Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 056/153] arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 057/153] powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7 Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 058/153] tcp: bring back NUMA dispersion in inet_ehash_locks_alloc() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 059/153] rtc: ds1307: stop disabling alarms on probe Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 060/153] ieee802154: ca8210: Use proper setters and getters for bitwise types Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 061/153] ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114 Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 062/153] media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 063/153] dm cache: prevent BUG_ON by blocking retries on failed device resumes Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 064/153] orangefs: Do not truncate file size Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 065/153] remoteproc: qcom_wcnss: Handle platforms with only single power domain Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 066/153] drm/amdgpu: Do not program AGP BAR regs under SRIOV in gfxhub_v1_0.c Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 067/153] media: cx231xx: set device_caps for 417 Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 068/153] pinctrl: bcm281xx: Use "unsigned int" instead of bare "unsigned" Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 069/153] net: ethernet: ti: cpsw_new: populate netdev of_node Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 070/153] net: pktgen: fix mpls maximum labels list parsing Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 071/153] ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config() Sasha Levin
2025-05-05 23:11 ` [PATCH AUTOSEL 5.15 072/153] media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 073/153] clk: imx8mp: inform CCF of maximum frequency of clocks Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 074/153] x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2 Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 075/153] hwmon: (gpio-fan) Add missing mutex locks Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 076/153] ARM: at91: pm: fix at91_suspend_finish for ZQ calibration Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 077/153] drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 078/153] fpga: altera-cvp: Increase credit timeout Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 079/153] PCI: brcmstb: Expand inbound window size up to 64GB Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 080/153] PCI: brcmstb: Add a softdep to MIP MSI-X driver Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 081/153] firmware: arm_ffa: Set dma_mask for ffa devices Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 082/153] net/mlx5: Avoid report two health errors on same syndrome Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 083/153] selftests/net: have `gro.sh -t` return a correct exit code Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 084/153] drm/amdkfd: KFD release_work possible circular locking Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 085/153] net: xgene-v2: remove incorrect ACPI_PTR annotation Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 086/153] bonding: report duplicate MAC address in all situations Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 087/153] soc: ti: k3-socinfo: Do not use syscon helper to build regmap Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 088/153] x86/build: Fix broken copy command in genimage.sh when making isoimage Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 089/153] drm/amd/display: handle max_downscale_src_width fail check Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 090/153] drm/amd/display: fix dcn4x init failed Sasha Levin
2025-05-06 15:00   ` Alex Deucher
2025-05-20 14:06     ` Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 091/153] x86/nmi: Add an emergency handler in nmi_desc & use it in nmi_shootdown_cpus() Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 092/153] cpuidle: menu: Avoid discarding useful information Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 093/153] libbpf: Fix out-of-bound read Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 094/153] x86/kaslr: Reduce KASLR entropy on most x86 systems Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 095/153] MIPS: Use arch specific syscall name match function Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 096/153] MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 097/153] clocksource: mips-gic-timer: Enable counter when CPUs start Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 098/153] scsi: mpt3sas: Send a diag reset if target reset fails Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 099/153] wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 100/153] wifi: rtw88: Fix rtw_init_ht_cap() " Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 101/153] wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31 Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 102/153] net: pktgen: fix access outside of user given buffer in pktgen_thread_write() Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 103/153] EDAC/ie31200: work around false positive build warning Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 104/153] bpf: Prevent unsafe access to the sock fields in the BPF timestamping callback Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 105/153] RDMA/core: Fix best page size finding when it can cross SG entries Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 106/153] can: c_can: Use of_property_present() to test existence of DT property Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 107/153] eth: mlx4: don't try to complete XDP frames in netpoll Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 108/153] PCI: Fix old_size lower bound in calculate_iosize() too Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 109/153] ACPI: HED: Always initialize before evged Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 110/153] net/mlx5: Modify LSB bitmask in temperature event to include only the first bit Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 111/153] net/mlx5: Apply rate-limiting to high temperature warning Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 112/153] ASoC: ops: Enforce platform maximum on initial value Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 113/153] ASoC: tas2764: Power up/down amp on mute ops Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 114/153] ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot() Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 115/153] pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 116/153] smack: recognize ipv4 CIPSO w/o categories Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 117/153] media: v4l: Memset argument to 0 before calling get_mbus_config pad op Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 118/153] libbpf: fix LDX/STX/ST CO-RE relocation size adjustment logic Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 119/153] net/mlx4_core: Avoid impossible mlx4_db_alloc() order value Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 120/153] phy: core: don't require set_mode() callback for phy_get_mode() to work Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 121/153] drm/amdgpu: reset psp->cmd to NULL after releasing the buffer Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 122/153] drm/amd/display: Initial psr_version with correct setting Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 123/153] net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 124/153] net/mlx5e: set the tx_queue_len for pfifo_fast Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 125/153] net/mlx5e: reduce rep rxq depth to 256 for ECPF Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 126/153] wifi: mac80211: don't unconditionally call drv_mgd_complete_tx() Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 127/153] wifi: mac80211: remove misplaced drv_mgd_complete_tx() call Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 128/153] arch/powerpc/perf: Check the instruction type before creating sample with perf_mem_data_src Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 129/153] ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure() Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 130/153] r8152: add vendor/device ID pair for Dell Alienware AW1022z Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 131/153] wifi: rtw88: Fix download_firmware_validate() for RTL8814AU Sasha Levin
2025-05-05 23:12 ` [PATCH AUTOSEL 5.15 132/153] clk: qcom: camcc-sm8250: Use clk_rcg2_shared_ops for some RCGs Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 133/153] exit: change the release_task() paths to call flush_sigqueue() lockless Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 134/153] hwmon: (xgene-hwmon) use appropriate type for the latency value Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 135/153] media: qcom: camss: csid: Only add TPG v4l2 ctrl if TPG hardware is available Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 136/153] vxlan: Annotate FDB data races Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 137/153] r8169: don't scan PHY addresses > 0 Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 138/153] net-sysfs: prevent uncleared queues from being re-added Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 139/153] rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 140/153] rcu: fix header guard for rcu_all_qs() Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 141/153] net/mana: fix warning in the writer of client oob Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 142/153] scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 143/153] scsi: st: Restore some drive settings after reset Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 144/153] HID: usbkbd: Fix the bit shift number for LED_KANA Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 145/153] drm/ast: Find VBIOS mode from regular display size Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 146/153] bpftool: Fix readlink usage in get_fd_type Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 147/153] perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 148/153] wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 149/153] spi: zynqmp-gqspi: Always acknowledge interrupts Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 150/153] regulator: ad5398: Add device tree support Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 151/153] wifi: ath9k: return by of_get_mac_address Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 152/153] drm/atomic: clarify the rules around drm_atomic_state->allow_modeset Sasha Levin
2025-05-05 23:13 ` [PATCH AUTOSEL 5.15 153/153] drm: Add valid clones check Sasha Levin

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20250505231320.2695319-45-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=agoldberger@nvidia.com \
    --cc=brauner@kernel.org \
    --cc=cmeiohas@nvidia.com \
    --cc=dan.carpenter@linaro.org \
    --cc=leon@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=msanalla@nvidia.com \
    --cc=stable@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /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