The following code, in the function send_cmd, looks too concise: do { actual_len = kinect_read(udev, ibuf, 0x200); } while (actual_len == 0); PDEBUG(D_USBO, "Control reply: %d", res); if (actual_len < sizeof(*rhdr)) { pr_err("send_cmd: Input control transfer failed (%d)\n", res); return res; } It seems that actual_len might be less than sizeof(*rhdr) either because an error code is returned by the call to kinect_read or because a shorter length is returned than the desired one. In the error code case, I would guess that one would want to return the error code, but I don't know what on would want to return in the other case. In any case, res is not defined by this code, so what is returned is whatever the result of the previous call to kinect_write happened to be. How should the code be changed? thanks, julia -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html