From nobody Tue Oct 06 07:51:01 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 4hzT2s5pPlz6cW6X for ; Tue, 06 Oct 2026 07:51:01 +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 4hzT2s3ThHz4G7g for ; Tue, 06 Oct 2026 07:51:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273061; 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=PRx48xgkiUeYUbngnLv5A56Qpad000frTv3VYmjvRi0=; b=vPyF67PYmLaHd+LuhB/nud0qsk/jrWn5LX1OKAMQZqy/FUEo9GaPW5lPNzCbauLuRj64Zz qDHzOqUPHBo7J0vO2VblrqU+S9BHsavQTGbWzZK7TzhqDKzbBKzwpIluQS7Y9TJxiY1i6K bUPrA4gJV+sTvPppwyLBXCFP90UXcAhy5JFS0uyByTGMIJSlANx1z+dSoN84QA0ed3jhek eGIf2Qvg3GDTXS7k7m5BKmZlnwjhkqSdPrBT8I3ZO5dokMnfCrfNzQy8ZCc36CZ5p415th Fh+stOYsSy2e5QgSXEuJ1gZ5Dlp8DJZzHbXaZjBsmikZVLAAJSyN1r9Yqs1KSA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273061; b=OPhVlvmPOoPtx4nLXCMcXbMcB7RbsyEG2YeajKR5gnLFic+NGu7e3CQnSfBIO2XUvwa0t1 eyg2azbJil/0uZvZsC8OiTvD5ypS2H/WgEbsDCG7jK5KvzyoZPgmDhQ+DLt6gUMG/TZ52j J8CIw3xYIvV3KVfSO6evjIFCJ5ztox8neR6+G/k7Q5RFS2Cy2K7IHhpy1CYVZP8dTRaHt+ qEXiqK30kR5TPEmfD8tGVAee76sLon7VRT0ZadtY0Vt4V2BLTmm08Xpfch6AMwYpHTwxhs +UV/YDgRSEGhRmGpKfoj5IbUAuId2lWLgO9q8IaLj2ZsAojFCC0rWSG4PMraGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273061; 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=PRx48xgkiUeYUbngnLv5A56Qpad000frTv3VYmjvRi0=; b=weNcdZgRpgcs2NiMolqBbMhwP1m3bOF6J3iioPCJBokzZ/kyR1iU0XaDDrCm4JHB5oHDnU TpXa3/jn8037bdGWld01vqs2g773483rWDlxAj6suWX7Kz4WbewjoF3kpbnGHy6nZD3ujo Sr4TlueeTwo3EePZEWHG5Z5gvxky6AyqpQBKLBbs4VX/nDVLR52WNT31I039zAVYlYB7Ww eYPCJOL5+7figiJWpxqjV9bsloJOp6CThuNwSV00K1Wk3rjmD0W9BR3HEBVaLiXlQKQ/e1 HlRqPK+9rwsXe6xI8E5ZYwqAaa6aGI7NKdk8yrkV4ya4UKbuTsGvmpHDTkfg/A== 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 4hzT2s2DHYzxsw for ; Tue, 06 Oct 2026 07:51:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19048 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 06 Oct 2026 07:51:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jaeyoon Choi Subject: git: 3c812d0f02e3 - stable/15 - 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 3c812d0f02e35ccc3b2a5087819b1acb052851b8 Auto-Submitted: auto-generated Date: Tue, 06 Oct 2026 07:51:01 +0000 Message-Id: <6ac4a865.19048.14642aa@gitrepo.freebsd.org> The branch stable/15 has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=3c812d0f02e35ccc3b2a5087819b1acb052851b8 commit 3c812d0f02e35ccc3b2a5087819b1acb052851b8 Author: Jaeyoon Choi AuthorDate: 2026-08-10 01:31:43 +0000 Commit: Jaeyoon Choi CommitDate: 2026-10-06 06:27:53 +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 (cherry picked from commit 5f3a2b364ea51ea05daa4399693bda2021e39434) --- 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;