From nobody Tue Oct 06 07:51:13 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 4hzT362NXdz6cWL8 for ; Tue, 06 Oct 2026 07:51:14 +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 4hzT355LMSz4GnP for ; Tue, 06 Oct 2026 07:51:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273073; 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=DAfSxX9hD7Q8VsYVQ7rj+Gmfe6MRscloGRywoelg7jc=; b=faq00cOXE4KMVrKLgAT79C+duJfnNuRLyxPnL6DDwW4h0irbfbRXX2s6WVCozHt392G4z2 dnmeC4yetl9fibVduAFwKrEUyzPDk1aI1T48yY6qYqzSRPy1cbqb6iBEmLETkfsVnRl5Q4 n34yiXsOXpD7ijX6qQ7LjAkvoJ4/1zqJA/10UuaFT/tWLeud+eZlwkGSFlhBaond4zC6Mn 9L7fzcD3cDC3HHQuOu1C9xYiMjz4iqWxCS8t0GN1Jdaj0nlYt20yKqwcM8p9M0KbLO6Gv8 XlF05n43q7/tJJ8hb3Qc1UHT1qQVInyAgkDSuy+Y+U+7B3HfmacwLSqghmTtog== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273073; b=m4esqUoxfDwMH3PtXJ2JZTJmb2PZP8/++M72WH3JW1eHeJ2Qj3rfX8pI3f0ZkXfXJGI2Lk ksr8K/slKjlDZEcATzPxsCwyCMlKhC/X1tO3w+US1DUngayftRfFs9DlrUGkiB2CH+5ab+ sgjEiUUjjW8dBpNXSsRmCazaM6Iqgv6t4+8ILh+aE7JL+XCII+PlegM0YjsB8Xm3sYHz4H jHuKuky9pm+h3iMgYhKpB29D4w62GQW5Whi/QzAzj6YwTCWh+/R91WmwDiQWgo2crj53rQ uqZHHZypSMN6gBvvo4LZiT9ukR6VVSKetH2iPRFJoO8gcjVV3NacOA6Z9pWB/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273073; 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=DAfSxX9hD7Q8VsYVQ7rj+Gmfe6MRscloGRywoelg7jc=; b=V2+eIzM6z9IZ68NgN4lSyhn16nw5cg6rBvIeNabn+XAXQNNBqVR3WxPWub3+wBPVxJgqYb gtfpmlzig0ToC9Q/XZqqwXF1YnI06cLfIkTDrsfoieivR9Ik8kkzKUYTgPLijCl13GhIDm iLy58J1wMtQ+ItQE3be1dRT+/9fsdDdCdqD5otWUz/F/WrobSwEp7ZLnEVS+x0IX44izE8 4L4I7a272leuxfBG/vntuCG5qoDzIpkeR4nosa/45ir2ooA+f9umqm8vva9YTrf/UCY4m5 HT8psUaI+rdILqFfgTYUk7TI4fjYudj/Sd26YTn1O5fUxgHfG1//JLOGJo018w== 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 4hzT353rcxzxZG for ; Tue, 06 Oct 2026 07:51:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 18e06 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 06 Oct 2026 07:51:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jaeyoon Choi Subject: git: 2e2f523ae699 - stable/15 - ufshci: byte-swap big-endian UPIU fields 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: 2e2f523ae6999d39e07dfebffd06f942fe8a13b8 Auto-Submitted: auto-generated Date: Tue, 06 Oct 2026 07:51:13 +0000 Message-Id: <6ac4a871.18e06.51ce0f19@gitrepo.freebsd.org> The branch stable/15 has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=2e2f523ae6999d39e07dfebffd06f942fe8a13b8 commit 2e2f523ae6999d39e07dfebffd06f942fe8a13b8 Author: Jaeyoon Choi AuthorDate: 2026-08-10 01:46:50 +0000 Commit: Jaeyoon Choi CommitDate: 2026-10-06 06:27:59 +0000 ufshci: byte-swap big-endian UPIU fields The UPIU wire fields are big-endian. The task management and query builders wrote host-order values into them. The completion paths also read the results back without conversion. On a little-endian host an ABORT_TASK carried a swapped task tag and LUN, a query carried a swapped length, and attribute reads returned swapped values. Tolerant devices masked most of the damage. Convert with htobe*/be*toh at the wire boundary, as ufshci_sim.c already does for its fields. Sponsored by: Samsung Electronics Reviewed by: imp (mentor) Differential Revision: https://reviews.freebsd.org/D58664 (cherry picked from commit 50a00f10d830119ed54f5bce1b34533f3a09325e) --- sys/dev/ufshci/ufshci_ctrlr_cmd.c | 10 +++++----- sys/dev/ufshci/ufshci_dev.c | 2 +- sys/dev/ufshci/ufshci_req_queue.c | 13 +++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/sys/dev/ufshci/ufshci_ctrlr_cmd.c b/sys/dev/ufshci/ufshci_ctrlr_cmd.c index 2e85cfa4b5b0..faeb6f98c942 100644 --- a/sys/dev/ufshci/ufshci_ctrlr_cmd.c +++ b/sys/dev/ufshci/ufshci_ctrlr_cmd.c @@ -29,9 +29,9 @@ ufshci_ctrlr_cmd_send_task_mgmt_request(struct ufshci_controller *ctrlr, UFSHCI_UPIU_TRANSACTION_CODE_TASK_MANAGEMENT_REQUEST; upiu->header.lun = lun; upiu->header.ext_iid_or_function = function; - upiu->input_param1 = lun; - upiu->input_param2 = task_tag; - upiu->input_param3 = iid; + upiu->input_param1 = htobe32(lun); + upiu->input_param2 = htobe32(task_tag); + upiu->input_param3 = htobe32(iid); error = ufshci_ctrlr_submit_task_mgmt_request(ctrlr, req); if (error) @@ -87,8 +87,8 @@ ufshci_ctrlr_cmd_send_query_request(struct ufshci_controller *ctrlr, upiu->idn = param.type; upiu->index = param.index; upiu->selector = param.selector; - upiu->value_64 = param.value; - upiu->length = param.desc_size; + upiu->value_64 = htobe64(param.value); + upiu->length = htobe16(param.desc_size); error = ufshci_ctrlr_submit_transfer_request(ctrlr, req); if (error) diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c index db7a8c564a29..454572f966d5 100644 --- a/sys/dev/ufshci/ufshci_dev.c +++ b/sys/dev/ufshci/ufshci_dev.c @@ -192,7 +192,7 @@ ufshci_dev_read_attribute(struct ufshci_controller *ctrlr, return (ENXIO); } - *value = status.cpl.response_upiu.query_response_upiu.value_64; + *value = be64toh(status.cpl.response_upiu.query_response_upiu.value_64); return (0); } diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c index d8d86070c18c..db96d13fad24 100644 --- a/sys/dev/ufshci/ufshci_req_queue.c +++ b/sys/dev/ufshci/ufshci_req_queue.c @@ -484,6 +484,7 @@ ufshci_abort_complete(void *arg, const struct ufshci_completion *status, bool error) { struct ufshci_tracker *tr = arg; + uint32_t output_param1; /* * We still need to check the active tracker array, to cover race where @@ -508,12 +509,12 @@ ufshci_abort_complete(void *arg, const struct ufshci_completion *status, ufshci_req_queue_manual_complete_tracker(tr, UFSHCI_DESC_ABORTED, UFSHCI_RESPONSE_CODE_GENERAL_FAILURE); - if ((status->response_upiu.task_mgmt_response_upiu - .output_param1 == - UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_COMPLETE) || - (status->response_upiu.task_mgmt_response_upiu - .output_param1 == - UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_SUCCEEDED)) { + output_param1 = be32toh( + status->response_upiu.task_mgmt_response_upiu.output_param1); + if (output_param1 == + UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_COMPLETE || + output_param1 == + UFSHCI_TASK_MGMT_SERVICE_RESPONSE_FUNCTION_SUCCEEDED) { ufshci_printf(tr->hwq->ctrlr, "Warning: the abort task request completed \ successfully, but the original task is still incomplete.");