diff -r 87aa6048e718 linux/drivers/media/video/pwc/pwc-v4l.c --- a/linux/drivers/media/video/pwc/pwc-v4l.c Wed Jul 02 08:59:38 2008 -0300 +++ b/linux/drivers/media/video/pwc/pwc-v4l.c Sat Jul 05 14:14:03 2008 +0100 @@ -1134,6 +1134,13 @@ frameq is safe now. */ add_wait_queue(&pdev->frameq, &wait); + + if ((pdev->full_frames == NULL) && (file->f_flags & O_NONBLOCK)) { + remove_wait_queue(&pdev->frameq, &wait); + set_current_state(TASK_RUNNING); + return -EAGAIN; + } + while (pdev->full_frames == NULL) { if (pdev->error_status) { remove_wait_queue(&pdev->frameq, &wait);