OK, here's the "working" version, printer-0521.patch. It makes unplugging printers mid-job behave sanely; no oopsing or looping. It's the same as the printer-0519 patch, updated to force uniprocessors to schedule() after dropping the semaphore on write-path errors, so that khubd can acquire it through usblp_disconnect() route. If nobody turns up other problems with this, it should go to Linus. - Dave