From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net-next] net: tap: fix POLLOUT condition in tap_poll() Date: Sat, 16 Dec 2017 23:03:21 -0500 (EST) Message-ID: <20171216.230321.468890097045981694.davem@davemloft.net> References: <1513261336-5209-1-git-send-email-cugyly@163.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, Linyu.Yuan@alcatel-sbell.com.cn To: cugyly@163.com Return-path: Received: from shards.monkeyblade.net ([184.105.139.130]:46780 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756984AbdLQEDZ (ORCPT ); Sat, 16 Dec 2017 23:03:25 -0500 In-Reply-To: <1513261336-5209-1-git-send-email-cugyly@163.com> Sender: netdev-owner@vger.kernel.org List-ID: From: yuan linyu Date: Thu, 14 Dec 2017 22:22:16 +0800 > From: yuan linyu > > from logical view, if sock_writeable(&q->sk) return false, > original second condition will return false too, > change it and make second condition can return true. > > Signed-off-by: yuan linyu ... > @@ -587,8 +587,7 @@ static unsigned int tap_poll(struct file *file, poll_table *wait) > mask |= POLLIN | POLLRDNORM; > > if (sock_writeable(&q->sk) || > - (!test_and_set_bit(SOCKWQ_ASYNC_NOSPACE, &q->sock.flags) && > - sock_writeable(&q->sk))) > + !test_and_set_bit(SOCKWQ_ASYNC_NOSPACE, &q->sock.flags)) > mask |= POLLOUT | POLLWRNORM; > > out: > -- > 2.7.4 Hmmm, this same exact test also exists in tun_chr_poll(). The second condition probably never trigger, because of the reasons you have listed. The only side effect is that it will set the ASYNC_NOSPACE bit in the socket flags. Logically, it seems we can remove the second condition altogether. But I wonder what might break if we stop trying to set that socket flags bit in this situation. Overall, I'm not sure this change is safe at all.