diff mbox series

net: rds: Fix possible NULL-pointer dereference

Message ID 20230918135623.630654-1-artem.chernyshev@red-soft.ru (mailing list archive)
State Not Applicable
Headers show
Series net: rds: Fix possible NULL-pointer dereference | expand

Commit Message

Artem Chernyshev Sept. 18, 2023, 1:56 p.m. UTC
In rds_rdma_cm_event_handler_cmn() check, if conn pointer exists 
before dereferencing it as rdma_set_service_type() argument

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: fd261ce6a30e ("rds: rdma: update rdma transport for tos")
Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
---
 net/rds/rdma_transport.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Sept. 20, 2023, 7:50 a.m. UTC | #1
Hello:

This patch was applied to netdev/net.git (main)
by David S. Miller <davem@davemloft.net>:

On Mon, 18 Sep 2023 16:56:23 +0300 you wrote:
> In rds_rdma_cm_event_handler_cmn() check, if conn pointer exists
> before dereferencing it as rdma_set_service_type() argument
> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Fixes: fd261ce6a30e ("rds: rdma: update rdma transport for tos")
> Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
> 
> [...]

Here is the summary with links:
  - net: rds: Fix possible NULL-pointer dereference
    https://git.kernel.org/netdev/net/c/f1d95df0f310

You are awesome, thank you!
diff mbox series

Patch

diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c
index d36f3f6b4351..b506d9bd215c 100644
--- a/net/rds/rdma_transport.c
+++ b/net/rds/rdma_transport.c
@@ -86,11 +86,13 @@  static int rds_rdma_cm_event_handler_cmn(struct rdma_cm_id *cm_id,
 		break;
 
 	case RDMA_CM_EVENT_ADDR_RESOLVED:
-		rdma_set_service_type(cm_id, conn->c_tos);
-		rdma_set_min_rnr_timer(cm_id, IB_RNR_TIMER_000_32);
-		/* XXX do we need to clean up if this fails? */
-		ret = rdma_resolve_route(cm_id,
-					 RDS_RDMA_RESOLVE_TIMEOUT_MS);
+		if (conn) {
+			rdma_set_service_type(cm_id, conn->c_tos);
+			rdma_set_min_rnr_timer(cm_id, IB_RNR_TIMER_000_32);
+			/* XXX do we need to clean up if this fails? */
+			ret = rdma_resolve_route(cm_id,
+						 RDS_RDMA_RESOLVE_TIMEOUT_MS);
+		}
 		break;
 
 	case RDMA_CM_EVENT_ROUTE_RESOLVED: