From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ursula Braun Subject: Re: [GIT] Networking Date: Tue, 3 Jul 2018 15:52:02 +0200 Message-ID: <5b5509f1-9713-f1bc-cb33-18ebdb1cb8c5@linux.ibm.com> References: <20180702.220348.527254946062449999.davem@davemloft.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: Andrew Morton , Network Development , Linux Kernel Mailing List To: Linus Torvalds , David Miller Return-path: In-Reply-To: Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On 07/02/2018 08:29 PM, Linus Torvalds wrote: > On Mon, Jul 2, 2018 at 6:03 AM David Miller wrote: >> >> are available in the Git repository at: >> >> gitolite@ra.kernel.org:/pub/scm/linux/kernel/git/davem/net.git > > So the af_smc poll fixes clashed with the revert of the commit that > caused those fixed to be done in the first place. > > See the changes to net/smc/af_smc.c in my commit > > a11e1d432b51 ("Revert changes to convert to ->poll_mask() and aio > IOCB_CMD_POLL") > > vs Ursula's > > 24ac3a08e658 ("net/smc: rebuild nonblocking connect") > > I (briefly) considered just dropping Ursula's changes entirely, but > they looked like a nice cleanup on their own, so what I did instead > was to try to fix up my revert instead. > > That involved removing the release_sock/lock_sock pair around the > ->poll() call, and removing the special "sock_poll_wait()" that got > re-introduced by my revert, but that Ursula's changes seem to obviate. > > However, while I can look at the code and say "my merge makes sense to > me", (a) I can't test it, (b) I don't actually know the rules for SMC > sockets in the first place, and (c) I may be just incompetent. > > So Ursula - mind checking and testing the end result? I _think_ it's > fine and the merge looked pretty obvious, but maybe af_smc got broken > again. > Thanks Linus for your revert. I run a test, and found it is almost fine. Just these 2 lines are missing: --- net/smc/af_smc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index e017b6a4452b..e7d7ff87499e 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c @@ -1345,6 +1345,8 @@ static __poll_t smc_poll(struct file *file, struct socket *sock, if (sk->sk_err) mask |= EPOLLERR; } else { + if (sk->sk_state != SMC_CLOSED) + sock_poll_wait(file, sk_sleep(sk), wait); if (sk->sk_err) mask |= EPOLLERR; if ((sk->sk_shutdown == SHUTDOWN_MASK) || -- > [ It's still going through by basic build tests, so I haven't pushed > out my merge yet, but it should be in the usual places in a short > while ] > > Thanks, > > Linus > Regards, Ursula