public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Stefan Agner <stefan@agner.ch>
To: Felipe Balbi <balbi@kernel.org>
Cc: Greg KH <gregkh@linuxfoundation.org>,
	andrzej.p@samsung.com, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] fs: configfs: make qw_sign attribute symmetric
Date: Fri, 10 Feb 2017 12:29:53 -0800	[thread overview]
Message-ID: <7ca2aab805111faca014b0faea0965df@agner.ch> (raw)
In-Reply-To: <87h942qldi.fsf@linux.intel.com>

On 2017-02-10 04:30, Felipe Balbi wrote:
> Hi,
> 
> Greg KH <gregkh@linuxfoundation.org> writes:
>> On Thu, Feb 09, 2017 at 10:04:43AM -0800, Stefan Agner wrote:
>>> On 2017-02-01 08:59, Stefan Agner wrote:
>>> > On 2017-02-01 00:06, Greg KH wrote:
>>> >> On Tue, Jan 31, 2017 at 06:19:16PM -0800, Stefan Agner wrote:
>>> >>> Currently qw_sign requires UTF-8 character to set, but returns UTF-16
>>> >>> when read. This isn't obvious when simply using cat since the null
>>> >>> characters are not visible, but hexdump unveils the true string:
>>> >>>
>>> >>>   # echo MSFT100 > os_desc/qw_sign
>>> >>>   # hexdump -C os_desc/qw_sign
>>> >>>   00000000  4d 00 53 00 46 00 54 00  31 00 30 00 30 00        |M.S.F.T.1.0.0.|
>>> >>>
>>> >>> Make qw_sign symmetric by returning an UTF-8 string too. Also follow
>>> >>> common convention and add a new line at the end.
>>> >>
>>> >> Doesn't USB require that strings be in UTF-16?  So why have the kernel
>>> >> convert them?
>>> >
>>> > That is a discussion we should have had when the write side of this has
>>> > been added:
>>> >
>>> > static ssize_t os_desc_qw_sign_store(struct config_item *item, const
>>> > char *page,
>>> > 				     size_t len)
>>> > {
>>> > 	struct gadget_info *gi = os_desc_item_to_gadget_info(item);
>>> > 	int res, l;
>>> >
>>> > 	l = min((int)len, OS_STRING_QW_SIGN_LEN >> 1);
>>> > 	if (page[l - 1] == '\n')
>>> > 		--l;
>>> >
>>> > 	mutex_lock(&gi->lock);
>>> > 	res = utf8s_to_utf16s(page, l,
>>> > 			      UTF16_LITTLE_ENDIAN, (wchar_t *) gi->qw_sign,
>>> > 			      OS_STRING_QW_SIGN_LEN);
>>> > 	if (res > 0)
>>> > 		res = len;
>>> > 	mutex_unlock(&gi->lock);
>>> >
>>> > 	return res;
>>> > }
>>> >
>>> >
>>> > The store function is definitely already in use today, e.g. this script
>>> > used for ev3dev:
>>> > https://github.com/ev3dev/ev3-systemd/blob/ev3dev-jessie/scripts/ev3-usb.sh
>>> >
>>> > Changing it to UTF-16 would break that script... So changing the store
>>> > part is the lesser of two evils.
>>> >
>>> > Regarding new line: Just following what other attributes are doing by
>>> > using the GS_STRINGS_R macro.
>>>
>>> Any comment on this? In my opinion especially this first patch really
>>> fixes a bug and should get applied... I can remove the newline if
>>> preferred.
>>
>> It's up to Felipe, give him a chance to catch up on patches...
> 
> I really don't know what to do here :-) Either way have the potential of
> breaking userspace. Maybe returning UTF8 as in write is the lesser of
> two evils.

So far libusbg and libusbgx do not have support for OS Descriptors.

I came across the issue while writing support for libusbgx (not upstream
yet). And it is rather ugly to have to do it on the read side and not to
do on the write side. It would also extend the dependencies of the
library (I implemented a prototype using iconv).

Also reading the old interface with UTF-8 does not crash the library, it
just return only the first character (since the second character is
\0...).

--
Stefan

  reply	other threads:[~2017-02-10 20:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-01  2:19 [PATCH 1/2] fs: configfs: make qw_sign attribute symmetric Stefan Agner
2017-02-01  2:19 ` [PATCH 2/2] fs: configfs: use hexadecimal values and new line Stefan Agner
2017-02-01  8:07   ` Greg KH
2017-02-01  9:02     ` Felipe Balbi
2017-02-01 16:51       ` Stefan Agner
2017-02-01  8:06 ` [PATCH 1/2] fs: configfs: make qw_sign attribute symmetric Greg KH
2017-02-01 16:59   ` Stefan Agner
2017-02-09 18:04     ` Stefan Agner
2017-02-10 11:19       ` Greg KH
2017-02-10 12:30         ` Felipe Balbi
2017-02-10 20:29           ` Stefan Agner [this message]
2017-02-13 10:46             ` Felipe Balbi
2017-02-01  8:07 ` Greg KH
     [not found] <CGME20170415013337epcas3p4871e4a671b352fed711acaf38803095f@epcas3p4.samsung.com>
2017-04-15  1:35 ` Stefan Agner
2017-04-19  8:53   ` Krzysztof Opasiak
2017-05-25  8:33     ` Stefan Agner
2017-06-02  8:25       ` Felipe Balbi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7ca2aab805111faca014b0faea0965df@agner.ch \
    --to=stefan@agner.ch \
    --cc=andrzej.p@samsung.com \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox