summaryrefslogtreecommitdiffstats
path: root/drivers/net/macvtap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/macvtap.c')
-rw-r--r--drivers/net/macvtap.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
index 5e485e307424..8949631c080c 100644
--- a/drivers/net/macvtap.c
+++ b/drivers/net/macvtap.c
@@ -845,7 +845,9 @@ static ssize_t macvtap_do_read(struct macvtap_queue *q, struct kiocb *iocb,
845 ssize_t ret = 0; 845 ssize_t ret = 0;
846 846
847 while (len) { 847 while (len) {
848 prepare_to_wait(sk_sleep(&q->sk), &wait, TASK_INTERRUPTIBLE); 848 if (!noblock)
849 prepare_to_wait(sk_sleep(&q->sk), &wait,
850 TASK_INTERRUPTIBLE);
849 851
850 /* Read frames from the queue */ 852 /* Read frames from the queue */
851 skb = skb_dequeue(&q->sk.sk_receive_queue); 853 skb = skb_dequeue(&q->sk.sk_receive_queue);
@@ -867,7 +869,8 @@ static ssize_t macvtap_do_read(struct macvtap_queue *q, struct kiocb *iocb,
867 break; 869 break;
868 } 870 }
869 871
870 finish_wait(sk_sleep(&q->sk), &wait); 872 if (!noblock)
873 finish_wait(sk_sleep(&q->sk), &wait);
871 return ret; 874 return ret;
872} 875}
873 876