diff options
Diffstat (limited to 'openvz-sources/022.072/5223_diff-usb-kbddetach-20060216.patch')
-rw-r--r-- | openvz-sources/022.072/5223_diff-usb-kbddetach-20060216.patch | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/openvz-sources/022.072/5223_diff-usb-kbddetach-20060216.patch b/openvz-sources/022.072/5223_diff-usb-kbddetach-20060216.patch deleted file mode 100644 index 6d644d9..0000000 --- a/openvz-sources/022.072/5223_diff-usb-kbddetach-20060216.patch +++ /dev/null @@ -1,91 +0,0 @@ -# This is a BitKeeper generated diff -Nru style patch. -# -# ChangeSet -# 2005/01/13 13:32:43+01:00 vojtech@suse.cz -# input: Handle -EILSEQ return code in the HID driver completion -# handlers as unplug. -# Flush request queue on unplug, too. -# -# Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> -# -# drivers/usb/input/hid-core.c -# 2005/01/13 13:32:33+01:00 vojtech@suse.cz +18 -5 -# input: Handle -EILSEQ return code in the HID driver completion -# handlers as unplug. -# Flush request queue on unplug, too. -# -# Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> -# ---- ./drivers/usb/input/hid-core.c.ukbdt 2006-02-16 14:10:14.000000000 +0300 -+++ ./drivers/usb/input/hid-core.c 2006-02-16 15:18:35.000000000 +0300 -@@ -924,7 +924,8 @@ static void hid_irq_in(struct urb *urb, - break; - case -ECONNRESET: /* unlink */ - case -ENOENT: -- case -ESHUTDOWN: -+ case -ESHUTDOWN: /* unplug */ -+ case -EILSEQ: /* unplug timeout on uhci */ - return; - default: /* error */ - warn("input irq status %d received", urb->status); -@@ -1132,12 +1133,15 @@ static void hid_irq_out(struct urb *urb, - { - struct hid_device *hid = urb->context; - unsigned long flags; -+ int unplug = 0; - - switch (urb->status) { - case 0: /* success */ -+ case -ESHUTDOWN: /* unplug */ -+ case -EILSEQ: /* unplug timeout on uhci */ -+ unplug = 1; - case -ECONNRESET: /* unlink */ - case -ENOENT: -- case -ESHUTDOWN: - break; - default: /* error */ - warn("output irq status %d received", urb->status); -@@ -1145,7 +1149,10 @@ static void hid_irq_out(struct urb *urb, - - spin_lock_irqsave(&hid->outlock, flags); - -- hid->outtail = (hid->outtail + 1) & (HID_OUTPUT_FIFO_SIZE - 1); -+ if (unplug) -+ hid->outtail = hid->outhead; -+ else -+ hid->outtail = (hid->outtail + 1) & (HID_OUTPUT_FIFO_SIZE - 1); - - if (hid->outhead != hid->outtail) { - if (hid_submit_out(hid)) { -@@ -1169,6 +1176,7 @@ static void hid_ctrl(struct urb *urb, st - { - struct hid_device *hid = urb->context; - unsigned long flags; -+ int unplug = 0; - - spin_lock_irqsave(&hid->ctrllock, flags); - -@@ -1176,16 +1184,21 @@ static void hid_ctrl(struct urb *urb, st - case 0: /* success */ - if (hid->ctrl[hid->ctrltail].dir == USB_DIR_IN) - hid_input_report(hid->ctrl[hid->ctrltail].report->type, urb, regs); -+ case -ESHUTDOWN: /* unplug */ -+ case -EILSEQ: /* unplug timectrl on uhci */ -+ unplug = 1; - case -ECONNRESET: /* unlink */ - case -ENOENT: -- case -ESHUTDOWN: - case -EPIPE: /* report not available */ - break; - default: /* error */ - warn("ctrl urb status %d received", urb->status); - } - -- hid->ctrltail = (hid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1); -+ if (unplug) -+ hid->ctrltail = hid->ctrlhead; -+ else -+ hid->ctrltail = (hid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1); - - if (hid->ctrlhead != hid->ctrltail) { - if (hid_submit_ctrl(hid)) { |