aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaeyoon Choi <jaeyoon@FreeBSD.org>2026-08-10 01:47:38 +0000
committerJaeyoon Choi <jaeyoon@FreeBSD.org>2026-08-10 02:28:52 +0000
commitaf00e00f23a1d427d96fecbb39e276fc2d7dfde1 (patch)
tree872ce8eebf54ddf9b9e53a1a661c4903872271f1
parent50a00f10d830119ed54f5bce1b34533f3a09325e (diff)
ufshci: initialize desc_size for non-descriptor query requests
The flag and attribute query builders left param.desc_size uninitialized, so stack garbage was sent as the query UPIU length field. Devices generally ignore the length for these opcodes, which hid the bug. Zero it explicitly. Sponsored by: Samsung Electronics Reviewed by: imp (mentor) Differential Revision: https://reviews.freebsd.org/D58665
-rw-r--r--sys/dev/ufshci/ufshci_dev.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/dev/ufshci/ufshci_dev.c b/sys/dev/ufshci/ufshci_dev.c
index 454572f966d5..18546d7120c0 100644
--- a/sys/dev/ufshci/ufshci_dev.c
+++ b/sys/dev/ufshci/ufshci_dev.c
@@ -86,6 +86,7 @@ ufshci_dev_read_flag(struct ufshci_controller *ctrlr,
param.index = 0;
param.selector = 0;
param.value = 0;
+ param.desc_size = 0;
status.done = 0;
error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -118,6 +119,7 @@ ufshci_dev_set_flag(struct ufshci_controller *ctrlr,
param.index = 0;
param.selector = 0;
param.value = 0;
+ param.desc_size = 0;
status.done = 0;
error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -148,6 +150,7 @@ ufshci_dev_clear_flag(struct ufshci_controller *ctrlr,
param.index = 0;
param.selector = 0;
param.value = 0;
+ param.desc_size = 0;
status.done = 0;
error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -179,6 +182,7 @@ ufshci_dev_read_attribute(struct ufshci_controller *ctrlr,
param.index = index;
param.selector = selector;
param.value = 0;
+ param.desc_size = 0;
status.done = 0;
error = ufshci_ctrlr_cmd_send_query_request(ctrlr,
@@ -212,6 +216,7 @@ ufshci_dev_write_attribute(struct ufshci_controller *ctrlr,
param.index = index;
param.selector = selector;
param.value = value;
+ param.desc_size = 0;
status.done = 0;
error = ufshci_ctrlr_cmd_send_query_request(ctrlr,