X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fmon%2Fmon_main.c;h=6ecc273022117351f9d155e3d16ab6d3a8a7ab34;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=275a66f8305878b2f435506e675a851454b586af;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/usb/mon/mon_main.c b/drivers/usb/mon/mon_main.c index 275a66f83..6ecc27302 100644 --- a/drivers/usb/mon/mon_main.c +++ b/drivers/usb/mon/mon_main.c @@ -97,7 +97,6 @@ static void mon_submit(struct usb_bus *ubus, struct urb *urb) if (mbus->nreaders == 0) goto out_locked; - mbus->cnt_events++; list_for_each (pos, &mbus->r_list) { r = list_entry(pos, struct mon_reader, r_link); r->rnf_submit(r->r_data, urb); @@ -114,32 +113,20 @@ out_unlocked: /* */ -static void mon_submit_error(struct usb_bus *ubus, struct urb *urb, int error) +static void mon_submit_error(struct usb_bus *ubus, struct urb *urb, int err) { struct mon_bus *mbus; - unsigned long flags; - struct list_head *pos; - struct mon_reader *r; mbus = ubus->mon_bus; if (mbus == NULL) goto out_unlocked; - spin_lock_irqsave(&mbus->lock, flags); - if (mbus->nreaders == 0) - goto out_locked; - - mbus->cnt_events++; - list_for_each (pos, &mbus->r_list) { - r = list_entry(pos, struct mon_reader, r_link); - r->rnf_error(r->r_data, urb, error); - } + /* + * XXX Capture the error code and the 'E' event. + */ - spin_unlock_irqrestore(&mbus->lock, flags); return; -out_locked: - spin_unlock_irqrestore(&mbus->lock, flags); out_unlocked: return; } @@ -165,7 +152,6 @@ static void mon_complete(struct usb_bus *ubus, struct urb *urb) } spin_lock_irqsave(&mbus->lock, flags); - mbus->cnt_events++; list_for_each (pos, &mbus->r_list) { r = list_entry(pos, struct mon_reader, r_link); r->rnf_complete(r->r_data, urb); @@ -177,6 +163,7 @@ static void mon_complete(struct usb_bus *ubus, struct urb *urb) /* * Stop monitoring. + * Obviously this must be well locked, so no need to play with mb's. */ static void mon_stop(struct mon_bus *mbus) {