Re: [PATCH v2 1/6] hid: new driver for PicoLCD device
From: Jiri Kosina <hidden>
Date: 2010-03-22 08:54:21
Also in:
linux-input, lkml
From: Jiri Kosina <hidden>
Date: 2010-03-22 08:54:21
Also in:
linux-input, lkml
On Sun, 21 Mar 2010, Bruno Prémont wrote:
quoted
quoted
+ } + data->status |= PICOLCD_BUSY; + data->pending = work; + for (i = k = 0; i < report->maxfield; i++) + for (j = 0; j < report->field[i]->report_count; j++) { + hid_set_field(report->field[i], j, k < size ? raw_data[k] : 0); + k++; + } + usbhid_submit_report(data->hdev, report, USB_DIR_OUT); + complete_all(&data->ready); + INIT_COMPLETION(data->ready);Umm, what does this do, exactly?It wakes up anyone waiting on the completion and then resets the completion as otherwise any future attempt to wait on it would succeed immediately. The complete_all() instead of just complete() comes from the reset() function. I can probably reduce it here. Will check this combined with your mutex suggestion above.
I am afraid this code is racy as is. You can't be sure that whoever has been waiting on the completion has been notified already between complete_all() and INIT_COMPLETION(), can you? Thanks for the driver! -- Jiri Kosina SUSE Labs, Novell Inc.