]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: ufs: core: fix incorrect buffer duplication in ufshcd_read_string_desc()
authorBean Huo <beanhuo@micron.com>
Fri, 7 Nov 2025 23:05:17 +0000 (00:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 13:02:55 +0000 (14:02 +0100)
[ Upstream commit d794b499f948801f54d67ddbc34a6eac5a6d150a ]

The function ufshcd_read_string_desc() was duplicating memory starting
from the beginning of struct uc_string_id, which included the length and
type fields. As a result, the allocated buffer contained unwanted
metadata in addition to the string itself.

The correct behavior is to duplicate only the Unicode character array in
the structure. Update the code so that only the actual string content is
copied into the new buffer.

Fixes: 5f57704dbcfe ("scsi: ufs: Use kmemdup in ufshcd_read_string_desc()")
Reviewed-by: Avri Altman <avri.altman@sandisk.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Bean Huo <beanhuo@micron.com>
Link: https://patch.msgid.link/20251107230518.4060231-3-beanhuo@iokpp.de
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/ufs/core/ufshcd.c

index d6a060a7246186b838171e68435cce49bc0e1a44..12f5a7a9731280e464e9a7aa63a0ebba4c2887b2 100644 (file)
@@ -3837,7 +3837,7 @@ int ufshcd_read_string_desc(struct ufs_hba *hba, u8 desc_index,
                str[ret++] = '\0';
 
        } else {
-               str = kmemdup(uc_str, uc_str->len, GFP_KERNEL);
+               str = kmemdup(uc_str->uc, uc_str->len, GFP_KERNEL);
                if (!str) {
                        ret = -ENOMEM;
                        goto out;