| From 931460e236e828d8eeb7fd4d4ec7b3cd46667442 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 18 Sep 2023 16:56:23 +0300 |
| Subject: net: rds: Fix possible NULL-pointer dereference |
| |
| From: Artem Chernyshev <artem.chernyshev@red-soft.ru> |
| |
| [ Upstream commit f1d95df0f31048f1c59092648997686e3f7d9478 ] |
| |
| 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> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/rds/rdma_transport.c | 12 +++++++----- |
| 1 file changed, 7 insertions(+), 5 deletions(-) |
| |
| diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c |
| index a9e4ff948a7d6..f71f073fd27ac 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: |
| -- |
| 2.40.1 |
| |