From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 915BE369D7B for ; Mon, 17 Aug 2026 05:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786944388; cv=none; b=hGZW2LNPzA38A0BXTJSUIwstRRxf5tMAV8m5n8CAIbMEOFqC8HHqz3Qngcd+lEZNxfDCGncFHsTbMvsqoAw0ne9bOFszIrz0NNKF53qctz/iFWooPZqDwGM9uX5f+PVuGQHb8oUAGYMVzKpzEe/1TAl3zyMix7QSm1Y4ezeSBqk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786944388; c=relaxed/simple; bh=wR8uOxHfGhU0ZK50sDbdEW318fKiig+GLeA0R8rLAwQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=momXHujRoCPYOGe4uGZ3KO+jt0h/LC8YRnnMGGywNZZK7X258+5lyRKCFYCIiv7dCWZd2bYoERhgfYJJ+TGgNfyt6M6FUJO6isO2FfhQmiZBX0gyVZ96Jbjsiy/oari3WhtofB9FHQJFa93p4MLSx4c0qAJbbfJzPJnzdV+QVx0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CAmavm6a; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CAmavm6a" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-84e507b079dso1833952b3a.0 for ; Sun, 16 Aug 2026 22:26:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786944387; x=1787549187; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=LCJ96hhAbvo1BoO4jzLY1jRPvpVlGUhbMQS2tTGtXPE=; b=CAmavm6aHMomlYXuEOWJiS1ua6TKBZARHYyJNphXP3DASSmrAaxXhqpr+6G90wVTmx GAgiiI2ONjjwPQnL5liQ15HK5DVQSCs4qhi2UeaBZmsJTGowkoGm01v6TvO1DxWqlcKJ yFHEs3M6IasapE5k9C67jgzm27WGl1XNa7kU2ohBOT6tAOmflNDGTVyCYc117Vf1cByk Dw0e+XJr0xKb5BDoh8hpYFNwy7Sp8hYzPUQAR3jYEI5EVJqLzMUW00QsBjTDnmRQdQz3 o5NeI2JiA0HMlKE452RfAFf0yQrQkIo0+poD4V4Vg4BxPRN5Ymum075IZtu7F8M7GIAo PDtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786944387; x=1787549187; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=LCJ96hhAbvo1BoO4jzLY1jRPvpVlGUhbMQS2tTGtXPE=; b=j/FMebzes4FlmWamjnv/5AQoBTKfFt1h8X2nRSO8O60PdcrF2vWyVHzGGEFkXL1B2z 7p3y9KlnsnN2nOGyHVvAT918fa8zbXcyd+FenUKCk2+Wrb8tBgUZGswy5vp5mBvSPiO5 kebZTLpjHfvn56X3UkXXyuHNfsHbtpSHASEz61983rcNX3xxm5CLOZ1Dso4NqwR1wXGy kp9TvolfIvovJY7VoLs2jRLSY16nSaUwz8EFhAjQkVZ3ltSHvhBQaHLo8aNjmRAofnWa ax1qpcv0/nkyCmifvVamv2+KNhnXyzi+WsfiVzDuxD3pjeEjPq2wtmBkNRZTDjRabcub wQHg== X-Forwarded-Encrypted: i=1; AHgh+Rro/dSjSCV2yGFTaKp80bUeb3YKEyJs+UWucWpJzBeC4Qzr14jkQ/RaV6GeUKn56O109YkWMLxL+gWCSnQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzJot3OCC5MZ79mG1q52u0NtzjUo8puATplmBxlnQnOF12BpZr2 saJ8E4PPmLgpk6EHfcAAkMv4e+7lQu70cGVLOUk5jBgyWvn80IQ3kEDMRt+3AKPcRiCI X-Gm-Gg: AR+sD101/y6ML7+E43OiOdtE5ckbBUwleiHX7FBY06B6+vhiO8rVwFH0ENbpmyCdNES n74sCkpRavJ2rcX1BJdBk4ZXclNG814YESdc9f6NfiNL4eWpOikX6QBNJ7aAHViIdU0y7+jfj7T JuN9jO/D4In6j3gt/StVuv4KGeNWctfNDbLfdVsLvVLGUZ+hCUBE1ado7yzeKZxI6z1k9AlFKff bExy2+ujxw0G1+LHZTo3m6w6aMOU+uj/rfFLdPmxK2N5Eb6qAdOHcIoomo0QZCfENFhIdaSy956 A9UJCzH7fzdXoXiQwPbHZUZpkAYo7sBUStban/CVFtBP9Rvm937+D4vEPq5dFm9eMA27qtzCqqp qU63X1fRYUn5IsLJL+cnCaNEWGLS6ItFKuJnME3VVPRd28smR3ZpUb66NzgRhvmHm8dBh/6F/tr sFeG0mhTcjKGa+S6iB0WTsmUnVc+he1meXGa5MgTEV1XcBa/UW60JH5/mpV8o= X-Received: by 2002:a05:6a00:2d12:b0:848:425a:4e31 with SMTP id d2e1a72fcca58-84fde38e8e4mr19894107b3a.24.1786944386764; Sun, 16 Aug 2026 22:26:26 -0700 (PDT) Received: from DL2XHKPB4.dl.net ([103.63.104.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8517d249b4fsm2115129b3a.46.2026.08.16.22.26.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2026 22:26:25 -0700 (PDT) From: Triet Hoang To: sathya.prakash@broadcom.com Cc: kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, sreekanth.reddy@broadcom.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, mpi3mr-linuxdrv.pdl@broadcom.com, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Triet Hoang Subject: [PATCH] scsi: mpi3mr: Handle SAS port and rphy allocation failures Date: Mon, 17 Aug 2026 12:26:19 +0700 Message-ID: <20260817052619.810762-1-triet.hoang.dev@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Check the return value of sas_port_alloc_num() and handle failures before attempting to add the port. Free the SAS port if sas_port_add() fails. Also handle failures from sas_end_device_alloc() and sas_expander_alloc() by removing the PHYs from the port, deleting the SAS port, and returning failure. This prevents NULL pointer dereferences and ensures resources allocated during SAS port creation are properly cleaned up on error paths. Signed-off-by: Triet Hoang --- drivers/scsi/mpi3mr/mpi3mr_transport.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/scsi/mpi3mr/mpi3mr_transport.c b/drivers/scsi/mpi3mr/mpi3mr_transport.c index 240f67a8e2e3..2fbfd178c539 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_transport.c +++ b/drivers/scsi/mpi3mr/mpi3mr_transport.c @@ -1428,9 +1428,17 @@ static struct mpi3mr_sas_port *mpi3mr_sas_port_add(struct mpi3mr_ioc *mrioc, } port = sas_port_alloc_num(mr_sas_node->parent_dev); + if (!port) { + ioc_err(mrioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + goto out_fail; + } + if ((sas_port_add(port))) { ioc_err(mrioc, "failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); + sas_port_free(port); + port = NULL; goto out_fail; } @@ -1455,6 +1463,19 @@ static struct mpi3mr_sas_port *mpi3mr_sas_port_add(struct mpi3mr_ioc *mrioc, rphy = sas_expander_alloc(port, mr_sas_port->remote_identify.device_type); } + + if (!rphy) { + ioc_err(mrioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + list_for_each_entry(mr_sas_phy, &mr_sas_port->phy_list, port_siblings) { + mr_sas_phy->phy_belongs_to_port = 0; + mr_sas_phy->hba_port = NULL; + sas_port_delete_phy(port, mr_sas_phy->phy); + } + sas_port_delete(port); + goto out_fail; + } + rphy->identify = mr_sas_port->remote_identify; if (mrioc->current_event) -- 2.53.0