> From: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > Sent: Tuesday, May 29, 2018 14:21 > On Thu, May 24, 2018 at 12:12 AM, Dexuan Cui <decui@xxxxxxxxxxxxx> > wrote: > > > > Before the guest finishes the device initialization, the device can be > > removed anytime by the host, and after that the host won't respond to > > the guest's request, so the guest should be prepared to handle this > > case. > > > + while (true) { > > + if (hdev->channel->rescind) { > > + dev_warn_once(&hdev->device, "The device is > gone.\n"); > > + return -ENODEV; > > + } > > + > > + if (wait_for_completion_timeout(comp, HZ / 10)) > > + break; > > + } > > Infinite loops are usually a red flags. > > What's wrong with simple: > > do { > ... > } while (wait_...(...) == 0); > > ? Thanks for the suggestion, Andy! The coding style you suggested looks better to me. :-) > > + if (!ret) > > + ret = wait_for_response(hdev, &comp); > > Better to use well established patterns, i.e. > > if (ret) > return ret; Agreed. > > > + if (!ret) > > + ret = wait_for_response(hdev, > &comp_pkt.host_event); > > Here it looks okay on the first glance, but better to think about it > again and refactor. > With Best Regards, > Andy Shevchenko I'll try to send out a patch to improve the coding style, after I address Michael Kelley's concern of a race. Thanks, -- Dexuan _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel