From cc686b27bbea52dbdd40dd5ca6455b49dc950283 Mon Sep 17 00:00:00 2001 From: Amos Kong Date: Thu, 9 Jun 2011 00:27:10 -0700 Subject: [PATCH] --- yaml --- r: 255475 b: refs/heads/master c: 61a5ff15ebdab87887861a6b128b108404e4706d h: refs/heads/master i: 255473: 8d8356424393cf7e61d43aa70b9d79735400388d 255471: e57fd8b972f6576f7c273ccf4a1ed070e5926f92 v: v3 --- [refs] | 2 +- trunk/drivers/net/tun.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a281fdfc89ab..6035a0954ac7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6f7c156c08d5eaa9fff2bd062f0a2b9d09a1e7a9 +refs/heads/master: 61a5ff15ebdab87887861a6b128b108404e4706d diff --git a/trunk/drivers/net/tun.c b/trunk/drivers/net/tun.c index 2829badbae38..ef68e13c042d 100644 --- a/trunk/drivers/net/tun.c +++ b/trunk/drivers/net/tun.c @@ -817,7 +817,8 @@ static ssize_t tun_do_read(struct tun_struct *tun, tun_debug(KERN_INFO, tun, "tun_chr_read\n"); - add_wait_queue(&tun->wq.wait, &wait); + if (unlikely(!noblock)) + add_wait_queue(&tun->wq.wait, &wait); while (len) { current->state = TASK_INTERRUPTIBLE; @@ -848,7 +849,8 @@ static ssize_t tun_do_read(struct tun_struct *tun, } current->state = TASK_RUNNING; - remove_wait_queue(&tun->wq.wait, &wait); + if (unlikely(!noblock)) + remove_wait_queue(&tun->wq.wait, &wait); return ret; }