On 2018/12/3 17:25, Andy Shevchenko wrote: > On Mon, Dec 3, 2018 at 5:47 AM Yu Chen <chenyu56@xxxxxxxxxx> wrote: >> >> Currently the "match_existing_only" of usb_gadget_driver in configfs is >> set to one which is not flexible. >> Dwc3 udc will be removed when usb core switch to host mode. This causes >> failure of writing name of dwc3 udc to configfs's UDC attribuite. >> To fix this we need to add a way to change the config of >> "match_existing_only". >> This patch adds a configfs attribuite for controling match_existing_only >> which allow user to config "match_existing_only". > >> +static ssize_t gadget_driver_match_existing_only_store(struct config_item *item, >> + const char *page, size_t len) >> +{ > >> + struct usb_gadget_driver *gadget_driver = >> + &(to_gadget_info(item)->composite.gadget_driver); > > It would be easier for reader to see two lines with two variables > instead of this. OK. > >> + bool match_existing_only; >> + int ret; >> + >> + ret = kstrtobool(page, &match_existing_only); >> + if (ret) >> + return ret; >> + > >> + if (match_existing_only) >> + gadget_driver->match_existing_only = 1; >> + else >> + gadget_driver->match_existing_only = 0; > > gadget_driver->match_existing_only = match_existing_only; > But the question rather why is it not direct parameter to kstrtobool? > I wrote the code in this way to avoid type conversion. >> + >> + return len; >> +} > >> + struct usb_gadget_driver *gadget_driver = >> + &(to_gadget_info(item)->composite.gadget_driver); > > Make it neat. > OK.