diff options
| author | Jaeyoon Choi <jaeyoon@FreeBSD.org> | 2026-08-10 01:47:38 +0000 |
|---|---|---|
| committer | Jaeyoon Choi <jaeyoon@FreeBSD.org> | 2026-08-10 02:28:52 +0000 |
| commit | af00e00f23a1d427d96fecbb39e276fc2d7dfde1 (patch) | |
| tree | 872ce8eebf54ddf9b9e53a1a661c4903872271f1 | |
| parent | 50a00f10d830119ed54f5bce1b34533f3a09325e (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.c | 5 |
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, |
