From nobody Tue Oct 06 07:51:04 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2x1nzxz6cWH4 for ; Tue, 06 Oct 2026 07:51:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2w5Pldz4GPC for ; Tue, 06 Oct 2026 07:51:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H7fRe3tp7DraUXB1BGGSQlqMsde8ThtYl1OmuiD6cs4=; b=q5MxL2hXW5TAtWIXPjGyEQC2VVjgAmYf/jXs43n/jNGhUvMNLh71yyCxUFvl8/SJmh/Em+ 8HZ4xPiPwQ4fkk9g4EeBYjZUwrz/pRV2cWlAtQsf7nYq3S3d+UQ4Yb6JaKTTV6DWuFNaW9 32aEwvPjxc8VqlVHi5+Yu9WewzvD7UGJ/hPUrcGSklFDkjNhfloATy1HBI0nNcqB+wpNTh AhG8x41/sjE2+GAqH0A0URB16CFOOTvRKfTdSk7WwW1H9vZu4lx4YgB1pS/fOeD3xQw17i hNH1tH1lHRkDMyZWjIyP/8p7Y3ZqHfPvUOv1K7ogcC7HKh5sO/eGv+6WGF+x1Q== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273064; b=W6rabYWFO4Mg4WvqgVrbmejdF88Q6nTXz5j4JD8Q6spAbfPYGD6SA4jJkh4XHo0pVGrTPh 48ySHgJ74PElI/edxAfVzCKH2yzg2nDJjOiyTprXnE9APy394CA5n9xLg18tYYwHkVBIUs 1XL6X+WWk++5zLQE+U0P1TnjQHLJLfjTzNBHUgpg0Jfw4IoNZF4HvW/fT7j4CErc9m5BsD Xsv61/imsBvv+8bzMNh4w3D8S57uaEkaGc4lQfYR9Q6STXLgmz/mnTQcsxwZ/C9fxwvY/p iHiqzXaW5JS0ppztdnwKD+2Scn3ZdesnAGdeez84CJX6Mut0NEclR5+CpJVedQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=H7fRe3tp7DraUXB1BGGSQlqMsde8ThtYl1OmuiD6cs4=; b=x+ysYIV7kwjP9keXFWephLb8kU+71ng8MhR0MLt9gy+yJ+P/xe4QduKcNh2VI4tOOrhko3 FQo47GzA4t0CQoqJ6r/Lxx7sCeyjq96inaB6jV+PGYnu8zR2jZOhdDZCnZJZohc1NpmV6x XuhJxZmhHQW3n93qgG7CfWv8zt0Y0sr2Vgy4p3NL4nLeeLAv3bl+zx0UQuidB7CK85OV1K I9NFgS5c00LRYkCxsg/7nz6Cm0rDx0Wp7ZhkH/jVwSD9ob4ml+j2bdTrNkRV8PFW3T5zqb Zk+dPZ/e9bPVi3hkti716f0lRSbm8wUCQ9DEXLwpQN9+z+MGQRQYuA2DmzW24A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2w4Tytzxsx for ; Tue, 06 Oct 2026 07:51:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 47b62 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 06 Oct 2026 07:51:04 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jaeyoon Choi Subject: git: 49c63957ab9b - stable/15 - ufshci: fix SCSI I/O request failure cleanup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jaeyoon X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 49c63957ab9b2c41d9de6629371f96a5827ff982 Auto-Submitted: auto-generated Date: Tue, 06 Oct 2026 07:51:04 +0000 Message-Id: <6ac4a868.47b62.20f5a71b@gitrepo.freebsd.org> The branch stable/15 has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=49c63957ab9b2c41d9de6629371f96a5827ff982 commit 49c63957ab9b2c41d9de6629371f96a5827ff982 Author: Jaeyoon Choi AuthorDate: 2026-08-10 01:35:45 +0000 Commit: Jaeyoon Choi CommitDate: 2026-10-06 06:27:55 +0000 ufshci: fix SCSI I/O request failure cleanup ufshchi_sim_scsiio() did not check the M_NOWAIT request allocation for NULL. The CDB validation and submit failure paths also returned without freeing the request. Fail the CCB when the allocation returns NULL. Free the request on every failure path. Mark the CCB as queued right before the submit, so the failure paths above do not need to touch that flag. Sponsored by: Samsung Electronics Reviewed by: imp (mentor) Differential Revision: https://reviews.freebsd.org/D58656 (cherry picked from commit 360b7c1635ea772d41275f8d1061cef4e131e328) --- sys/dev/ufshci/ufshci_sim.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c index 404f3e99d1e2..234ee3bf7dfa 100644 --- a/sys/dev/ufshci/ufshci_sim.c +++ b/sys/dev/ufshci/ufshci_sim.c @@ -150,6 +150,11 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb) else req = ufshci_allocate_request_vaddr(payload, payload_len, M_NOWAIT, ufshci_sim_scsiio_done, ccb); + if (req == NULL) { + ccb->ccb_h.status = CAM_RESRC_UNAVAIL; + xpt_done(ccb); + return; + } req->request_size = sizeof(struct ufshci_cmd_command_upiu); req->response_size = sizeof(struct ufshci_cmd_response_upiu); @@ -178,8 +183,6 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb) upiu->expected_data_transfer_length = htobe32(payload_len); - ccb->ccb_h.status |= CAM_SIM_QUEUED; - if (csio->ccb_h.flags & CAM_CDB_POINTER) cdb = csio->cdb_io.cdb_ptr; else @@ -187,18 +190,22 @@ ufshchi_sim_scsiio(struct cam_sim *sim, union ccb *ccb) if (cdb == NULL || csio->cdb_len > sizeof(upiu->cdb)) { ccb->ccb_h.status = CAM_REQ_INVALID; + ufshci_free_request(req); xpt_done(ccb); return; } memcpy(upiu->cdb, cdb, csio->cdb_len); + ccb->ccb_h.status |= CAM_SIM_QUEUED; error = ufshci_ctrlr_submit_transfer_request(ctrlr, req); if (error == EBUSY) { ccb->ccb_h.status = CAM_SCSI_BUSY; + ufshci_free_request(req); xpt_done(ccb); return; } else if (error) { ccb->ccb_h.status = CAM_REQ_INVALID; + ufshci_free_request(req); xpt_done(ccb); return; }