On Wed, Feb 10, 2021 at 07:35:25PM -0800, Bart Van Assche wrote: > On 2/10/21 2:53 AM, Arthur Simchaev wrote: > > +static bool is_ascii_output = true; > > [ ... ] > > > static const char *ufschd_uic_link_state_to_string( > > enum uic_link_state state) > > { > > @@ -693,7 +695,15 @@ static ssize_t _name##_show(struct device *dev, \ > > SD_ASCII_STD); \ > > if (ret < 0) \ > > goto out; \ > > - ret = sysfs_emit(buf, "%s\n", desc_buf); \ > > + if (is_ascii_output) { \ > > + ret = sysfs_emit(buf, "%s\n", desc_buf); \ > > + } else { \ > > + int i; \ > > + \ > > + for (i = 0; i < desc_buf[0]; i++) \ > > + hex_byte_pack(buf + i * 2, desc_buf[i]); \ > > + ret = sysfs_emit(buf, "%s\n", buf); \ > > + } \ > > out: \ > > pm_runtime_put_sync(hba->dev); \ > > kfree(desc_buf); \ > > Please do not introduce a mode variable but instead introduce a new > attribute such that there is one attribute for the unicode output and > one attribute for the ASCII output. Mode variables are troublesome when > e.g. two scripts try to set the mode attribute concurrently. Agreed, just make a new sysfs file, please never change the output of an existing sysfs file, that way will guarantee confusion in userspace. thanks, greg k-h