Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp6812748yba; Tue, 14 May 2019 14:14:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqxB+TFXajPSSiRTKluohwLX3fk2kpAZTUGz3pw3KkJ2r9DXKpq9Iwy/MG0dqvhMpDCt1kaC X-Received: by 2002:a17:902:a988:: with SMTP id bh8mr39677863plb.243.1557868462875; Tue, 14 May 2019 14:14:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557868462; cv=none; d=google.com; s=arc-20160816; b=DM9V7D+sQNcKXldo+bmcbCYNbTlQDJdYwyWCCmz6bOyt7COZHWMJOc5uS14qqlyXKa KUgADrB+TLM2TGZfJeaOp2swqdW0LGH5jFi+6trTPitAa1hpGfPZobd+I+StMmQNskFo Hp/HKaibyzqnnEa1My99WG+i/G5ioAdEKGwxvjlOW1TeaZg/nJnCw67+9nG3GRimg1iL KrCQ07mDAQPye1fGTkb4mmdje1n9FqvDu+ym+56WxLS30sU/FpXK6owXoIMHgo7wLZcF wdK+xndZ5M1iRgxh+aAT8icl7rV2THlxfOVHmXWaY+chpvUe62Z6aS4pOPKkPFDERP7O 9K+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=5HK6LtklZKGH421gmcApL4yH8ev/jh7IW3djR5lopgw=; b=W4DCZAP5flo3QFw2VHJtwLiekh2VTfMrb22BvaJLMXVIQTsgIK256QL98Vw1UEnT15 br2m/D/OnZWSNfUkvAcZpKfJqwmfjHHRJaHANwcpEuzPSr7+4zNo4a76Y/6Dfb7joZI6 +Qc6QGRxAavdHANd4OtZCaIMqWaaWoDTtfnmgDx/SKaDeheJRnmIJDKWZQd61SOFJ5v1 atEFRCfqFJRiiwKG6EDeeeHLUfS4wC/gSoeTYPsI+CzRXpct/pw7avMld6lOutiwstd+ OVh9pzRJ389ASLEbw7j5o49uY+/JNz+rezXx+ky0DWIijhF7aaqMBm3Qca0N3tScZJmf aZ7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dKwbqJc6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g34si2743276pld.402.2019.05.14.14.14.07; Tue, 14 May 2019 14:14:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dKwbqJc6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726574AbfENVMK (ORCPT + 99 others); Tue, 14 May 2019 17:12:10 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:38422 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726562AbfENVMK (ORCPT ); Tue, 14 May 2019 17:12:10 -0400 Received: by mail-lj1-f195.google.com with SMTP id 14so560136ljj.5; Tue, 14 May 2019 14:12:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=5HK6LtklZKGH421gmcApL4yH8ev/jh7IW3djR5lopgw=; b=dKwbqJc6C6lhuaCVZTUW26OKn8zL9FapIRRRZ98ruAxPUzpFY65+LkXuSqYRAO/rMR wofjKbtpNBpZipTh5qnJ/eH+pZ47J+IyZF4t1oyjXEY95Jm6o1ldXtWmWM0c8wSvHi0E 6b0O3DeL5GSFYUUSfs8Kb1142It4qw8DwUNvGhfouTYHQOfdBdVUbNV8e41+lV6yeSLn OQSSpRAQC8T1wh1LTw7puOP2vpAcIGu0B5KBMn6omhgAK/DnaXQcKgRYOewMvSZZRGsh p+CJj+UAshO4080ixCjUq9PkhcSi8xeUDT5IWyHASMRwyHx6ZXajyZeSqdtcqzc+iAUd gwNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=5HK6LtklZKGH421gmcApL4yH8ev/jh7IW3djR5lopgw=; b=TrBeDyYAXYaQBgz2JBoT+vxUnrIDk/wKo+NasqJqegu/VJKCNAOTVaspqOOfIUpLD4 tukDwM5cFN6OQLwjmQYKFuwWWgF6sLsBFSYwUGbRX/Nd6pfla+0+jz4v8qUWvHuP4FJl vNKNBYoJs410ZRpXUaNtgXvhVas+1+hET0cOMnTyPemxkplqYeLdAKM+AdzeUYrx6ZkQ XxlS0X8zlGVBPZFoW0UszKKa4VqR2Y/vLoBQ11bQqQYOP8vSUTYJ5LlnVKiXANGV56Kl 3jtFpHrGt9SE4FkNsm83ygQvLq0Q/dydMTY6U7RZNfVBibf4gaDGfeWJzQ4DhLkE93eW cZqA== X-Gm-Message-State: APjAAAWjnCtEH6aHFjICJDi9mDD5ndmKVm94EWkBZ8gJXewuDz+R6cTq wDQxx69oihxEXlsqC44gmyKklf8x/1m7lLg+CA== X-Received: by 2002:a2e:96da:: with SMTP id d26mr8743538ljj.9.1557868327733; Tue, 14 May 2019 14:12:07 -0700 (PDT) MIME-Version: 1.0 References: <1557806489-11272-1-git-send-email-longli@linuxonhyperv.com> In-Reply-To: <1557806489-11272-1-git-send-email-longli@linuxonhyperv.com> From: Pavel Shilovsky Date: Tue, 14 May 2019 14:11:56 -0700 Message-ID: Subject: Re: [PATCH 1/2] cifs:smbd When reconnecting to server, call smbd_destroy() after all MIDs have been called To: Long Li Cc: Steve French , linux-cifs , samba-technical , Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org =D0=BF=D0=BD, 13 =D0=BC=D0=B0=D1=8F 2019 =D0=B3. =D0=B2 21:02, : > > From: Long Li > > commit 214bab448476 ("cifs: Call MID callback before destroying transport= ") > assumes that the MID callback should not take srv_mutex, this may not alw= ays > be true. SMB Direct requires the MID callback completed before calling > transport so all pending memory registration can be freed. So restore the > orignal calling sequence so TCP transport will use the same code, but mov= ing > smbd_destroy() after all MID has been called. > > fixes: 214bab448476 ("cifs: Call MID callback before destroying transport= ") > Signed-off-by: Long Li > --- > fs/cifs/connect.c | 37 ++++++++++++++++++++----------------- > 1 file changed, 20 insertions(+), 17 deletions(-) > > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c > index 084756cfdaee..0b3ac8b76d18 100644 > --- a/fs/cifs/connect.c > +++ b/fs/cifs/connect.c > @@ -528,6 +528,21 @@ cifs_reconnect(struct TCP_Server_Info *server) > /* do not want to be sending data on a socket we are freeing */ > cifs_dbg(FYI, "%s: tearing down socket\n", __func__); > mutex_lock(&server->srv_mutex); > + if (server->ssocket) { > + cifs_dbg(FYI, "State: 0x%x Flags: 0x%lx\n", > + server->ssocket->state, server->ssocket->flags); > + kernel_sock_shutdown(server->ssocket, SHUT_WR); > + cifs_dbg(FYI, "Post shutdown state: 0x%x Flags: 0x%lx\n", > + server->ssocket->state, server->ssocket->flags); > + sock_release(server->ssocket); > + server->ssocket =3D NULL; > + } > + server->sequence_number =3D 0; > + server->session_estab =3D false; > + kfree(server->session_key.response); > + server->session_key.response =3D NULL; > + server->session_key.len =3D 0; > + server->lstrp =3D jiffies; > > /* mark submitted MIDs for retry and issue callback */ > INIT_LIST_HEAD(&retry_list); > @@ -540,6 +555,7 @@ cifs_reconnect(struct TCP_Server_Info *server) > list_move(&mid_entry->qhead, &retry_list); > } > spin_unlock(&GlobalMid_Lock); > + mutex_unlock(&server->srv_mutex); > > cifs_dbg(FYI, "%s: issuing mid callbacks\n", __func__); > list_for_each_safe(tmp, tmp2, &retry_list) { > @@ -548,24 +564,11 @@ cifs_reconnect(struct TCP_Server_Info *server) > mid_entry->callback(mid_entry); > } > > - if (server->ssocket) { > - cifs_dbg(FYI, "State: 0x%x Flags: 0x%lx\n", > - server->ssocket->state, server->ssocket->flags); > - kernel_sock_shutdown(server->ssocket, SHUT_WR); > - cifs_dbg(FYI, "Post shutdown state: 0x%x Flags: 0x%lx\n", > - server->ssocket->state, server->ssocket->flags); > - sock_release(server->ssocket); > - server->ssocket =3D NULL; > - } else if (cifs_rdma_enabled(server)) > + if (cifs_rdma_enabled(server)) { > + mutex_lock(&server->srv_mutex); > smbd_destroy(server); > - server->sequence_number =3D 0; > - server->session_estab =3D false; > - kfree(server->session_key.response); > - server->session_key.response =3D NULL; > - server->session_key.len =3D 0; > - server->lstrp =3D jiffies; > - > - mutex_unlock(&server->srv_mutex); > + mutex_unlock(&server->srv_mutex); > + } > > do { > try_to_freeze(); > -- > 2.17.1 > Thanks for quickly fixing it! Reviewed-by: Pavel Shilovsky -- Best regards, Pavel Shilovsky