Re: [PATCH v3 1/5] ufs: decode string descriptors as UTF-16 big-endian

Jorge Ramirez via U-Boot <[email protected]>
Newsgroups gmane.comp.boot-loaders.u-boot.general,gmane.comp.boot-loaders.u-boot
Message-ID <anXVubtxKxqE5p08@trex>
On 29/07/26 16:51:54, David Lechner wrote:
> On 7/23/26 9:38 AM, Jorge Ramirez-Ortiz wrote:
> > UFS string descriptors are UTF-16 big-endian (JESD220), but
> > ufshcd_read_string_desc() fed the raw bytes to utf16_to_utf8(), which reads
> > host-endian code units, leaving dev_desc->model blank. Byte-swap to host
> > order before decoding, matching the kernel.
> > 
> > Signed-off-by: Jorge Ramirez-Ortiz <[email protected]>
> > ---
> >  drivers/ufs/ufs-uclass.c | 15 +++++++++++++++
> >  1 file changed, 15 insertions(+)
> > 
> > diff --git a/drivers/ufs/ufs-uclass.c b/drivers/ufs/ufs-uclass.c
> > index 6a51f337e47..8f120fbbee8 100644
> > --- a/drivers/ufs/ufs-uclass.c
> > +++ b/drivers/ufs/ufs-uclass.c
> > @@ -1533,6 +1533,19 @@ static inline void ufshcd_remove_non_printable(uint8_t *val)
> >  		*val = ' ';
> >  }
> >  
> > +static inline void ufshcd_str_desc_to_cpu(u8 *desc, u32 size)
> > +{
> > +	u16 *p = (u16 *)&desc[QUERY_DESC_HDR_SIZE];
> > +	u32 len = desc[QUERY_DESC_LENGTH_OFFSET];
> > +	u32 i;
> > +
> > +	if (len > size)
> > +		len = size;
> > +
> > +	for (i = QUERY_DESC_HDR_SIZE; i + 1 < len; i += 2, p++)
> > +		*p = be16_to_cpu(*p);
> 
> I'm not a huge fan of modifying data in place like this. What do people
> think about adding an endian parameter to utf16_to_utf8() instead?

um, ok a bit of a change but will do on the next set
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.