--- zzzz-none-000/linux-2.6.19.2/drivers/usb/class/usblp.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5504/linux-2.6.19.2/drivers/usb/class/usblp.c 2007-01-11 07:38:19.000000000 +0000 @@ -722,7 +722,6 @@ usblp->wcomplete = 0; err = usb_submit_urb(usblp->writeurb, GFP_KERNEL); if (err) { - usblp->wcomplete = 1; if (err != -ENOMEM) count = -EIO; else @@ -1203,6 +1202,8 @@ down (&usblp->sem); /* we take no more IO */ usblp->sleeping = 1; + /* we wait for anything printing */ + wait_event (usblp->wait, usblp->wcomplete || !usblp->present); usblp_unlink_urbs(usblp); up (&usblp->sem); mutex_unlock (&usblp_mutex);