On Mon, 18 Nov 2002, Oliver Neukum wrote: > OK, here we go. > > case CPAD_CGID: > > - Race condition. You must drop the lock only after the last put_user
fixed. > > /* see if we are already in the middle of a write */ > if (dev->write_urb->status == -EINPROGRESS) { > dbg (__FUNCTION__ " - already writing"); > goto exit; > } > > - Bad. Wait for completion in that case, or, if you are opened non blocking, > return the right error code ok, need to look through more example code to work out wait for completion, but have put in better error codes. > for (i=bytes_written,wcount=2;i>1 && wcount<CPAD_BUFMAX;) > ((char *) dev->write_urb->transfer_buffer)[wcount++] = tmpbuf[--i]; > > - You might better copy into the buffer in first place instead of another copy agreed, however at this step bytes from 2 onward are reversed so that the user API looks like the LCD controller datasheet says and the bits/bytes of the bitmap lies increment correctly as it goes out to the display (don't know why these bytes are reversed, didn't build it :-) > unsigned char mdata[8]; /* cpad mouse input buffer */ > > - You must not do that. You violate DMA requirements on some architectures. > Allocate the buffer sperately with kmalloc. thank you, fixed. cheers, rob. ------------------------------------------------------- This sf.net email is sponsored by: To learn the basics of securing your web site with SSL, click here to get a FREE TRIAL of a Thawte Server Certificate: http://www.gothawte.com/rd524.html _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel