From nobody Mon Aug 10 02:31:16 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 4hJJfD3knxz6pV95 for ; Mon, 10 Aug 2026 02:31:16 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hJJfD33MHz3ytg for ; Mon, 10 Aug 2026 02:31:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786329076; 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=pLjrSjYRh6s6crL51pWEGvLJeavJYuCHvEe+z1Xu1u0=; b=E/5UdiY7wSCSBkboNenwsZ9ure8AymI1aaaQvJYy+r80NC6Pby3XdnjAYWkvOTK5vZlR5b jHhJ6mI1gUKB2TWA3dAN0xuK7wtDR9/2q9hdxojqjaQNRpLoVfXHO2itIhdwYVt9E5WbSF nx3lD4I8Lto1xQ293KrAaFGzwVPUdUpzyjoktWHOcsJZohD2YX3efhdDDfIaZ0zRZkMcQT F3eXGdxhkZda1kkNXFwVK7VLH318v//kAdDLqpS4lCqFUKzsF+/zQxQNE6pcel3bmp6kKZ YGk9vuSXdiAusR/1UmY5uByJSaHlABBTKKL9DlRXNTL6bPobQY+V0f2q7o+RIw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786329076; a=rsa-sha256; cv=none; b=gDwy7QJICoE/nCF4xiHRcN/qdQcAfUPKvjyJe35nEL4GfxW9gLZNgn3TzqlvwKF8onB27k KnQsx+ehv2NS3ILIFoiIz+6pymQcO9WN2dIxApkb75RrqdzDJn0e2QVSa0UTER0wGsMS+d zbWPtrLCORGC/o0FK8cscmA/jwLaWbTWMtLxeBi5gzy3LJya4icBftlopkwR3d0l2Qd+Tc ewGMKdHeETRjFH202DgyoCFrD0yoRkrt96WpH56OwTnNUyXAHxqQIivF/DgG/nhTma2E1x x4O9D/XAhMEKmvnN9GsSDvdQozb7qKN/dOUF7OCxDtJH3MviR+W9Eo9L5UqIQw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786329076; 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=pLjrSjYRh6s6crL51pWEGvLJeavJYuCHvEe+z1Xu1u0=; b=Y+8nhK0P9bnMOK+znmw3tIQBOVTlVzUVeHQa7JDCv6bFLS89iAGskPCgvZSz8KkS4rxfCE BGrqDvPKEDN8KmBOA5ZeRUs8yr19QDvBCWiPISTKiFgD9LoaS34wCGRd2KSOjgXQmyzCLQ oS4cLXSjKNDEX1jLtnDD/VjWzCNEo662vPaypTQ7xktzdOei2h77rViW+GBHJ55DJJSQb1 WEgfZurWjgdXO/4UFUrs9jEDfZhvylxOeCPDdhOHZIsq4Q+IXdRFwRTPuuMgJyRDXigmYw MgySjf9NqfnbIqnS4MaqctjewmcsjHAgEaYwGegnvdvwy7YohmqVQkqJAL2+7w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hJJfD1QvSzqng for ; Mon, 10 Aug 2026 02:31:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e7cb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 10 Aug 2026 02:31:16 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jaeyoon Choi Subject: git: 5f3a2b364ea5 - main - ufshci: abort submission when payload DMA mapping fails 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/main X-Git-Reftype: branch X-Git-Commit: 5f3a2b364ea51ea05daa4399693bda2021e39434 Auto-Submitted: auto-generated Date: Mon, 10 Aug 2026 02:31:16 +0000 Message-Id: <6a7937f4.1e7cb.5be124b9@gitrepo.freebsd.org> The branch main has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=5f3a2b364ea51ea05daa4399693bda2021e39434 commit 5f3a2b364ea51ea05daa4399693bda2021e39434 Author: Jaeyoon Choi AuthorDate: 2026-08-10 01:31:43 +0000 Commit: Jaeyoon Choi CommitDate: 2026-08-10 02:28:46 +0000 ufshci: abort submission when payload DMA mapping fails When bus_dmamap_load_mem() failed, ufshci_req_queue_prepare_prdt() manually completed and released the tracker, but its caller kept going: it built the UTRD, set the slot back to SCHEDULED, and rang the doorbell for a tracker whose request had already been freed. Return the mapping error and stop the submission so the released tracker is not resurrected. Sponsored by: Samsung Electronics Reviewed by: imp (mentor) Differential Revision: https://reviews.freebsd.org/D58653 --- sys/dev/ufshci/ufshci_req_queue.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c index 4c82b79d0e26..395801274f0e 100644 --- a/sys/dev/ufshci/ufshci_req_queue.c +++ b/sys/dev/ufshci/ufshci_req_queue.c @@ -371,7 +371,7 @@ ufshci_payload_map(void *arg, bus_dma_segment_t *seg, int nseg, int error) BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); } -static void +static int ufshci_req_queue_prepare_prdt(struct ufshci_tracker *tr) { struct ufshci_request *req = tr->req; @@ -403,6 +403,8 @@ ufshci_req_queue_prepare_prdt(struct ufshci_tracker *tr) UFSHCI_RESPONSE_CODE_GENERAL_FAILURE); mtx_lock(&tr->hwq->qlock); } + + return (error); } static void @@ -716,9 +718,15 @@ ufshci_req_queue_submit_tracker(struct ufshci_req_queue *req_queue, memcpy(tr->ucd, &req->request_upiu, request_len); memset((uint8_t *)tr->ucd + response_off, 0, response_len); - /* Prepare PRDT */ - if (req->payload_valid) - ufshci_req_queue_prepare_prdt(tr); + /* + * Prepare PRDT. If the payload could not be mapped, the + * tracker has already been completed and released by the + * manual completion path, so the descriptor must not be + * built and the doorbell must not be rung. + */ + if (req->payload_valid && + ufshci_req_queue_prepare_prdt(tr) != 0) + return; /* Prepare UTP Transfer Request Descriptor. */ ucd_paddr = tr->ucd_bus_addr;