Skip to content

Commit a75a16c

Browse files
danielmentzgooglemartinkpetersen
authored andcommitted
scsi: ufs: core: Leave space for '\0' in utf8 desc string
utf16s_to_utf8s does not NULL terminate the output string. For us to be able to add a NULL character when utf16s_to_utf8s returns, we need to make sure that there is space for such NULL character at the end of the output buffer. We can achieve this by passing an output buffer size to utf16s_to_utf8s that is one character less than what we allocated. Other call sites of utf16s_to_utf8s appear to be using the same technique where they artificially reduce the buffer size by one to leave space for a NULL character or line feed character. Fixes: 4b828fe ("scsi: ufs: revamp string descriptor reading") Reviewed-by: Mars Cheng <marscheng@google.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Yen-lin Lai <yenlinlai@google.com> Signed-off-by: Daniel Mentz <danielmentz@google.com> Link: https://lore.kernel.org/r/20231017182026.2141163-1-danielmentz@google.com Reviewed-by: Avri Altman <avri.altman@wdc.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 6997283 commit a75a16c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/ufs/core/ufshcd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3728,7 +3728,7 @@ int ufshcd_read_string_desc(struct ufs_hba *hba, u8 desc_index,
37283728
*/
37293729
ret = utf16s_to_utf8s(uc_str->uc,
37303730
uc_str->len - QUERY_DESC_HDR_SIZE,
3731-
UTF16_BIG_ENDIAN, str, ascii_len);
3731+
UTF16_BIG_ENDIAN, str, ascii_len - 1);
37323732

37333733
/* replace non-printable or non-ASCII characters with spaces */
37343734
for (i = 0; i < ret; i++)

0 commit comments

Comments
 (0)