* [cifs:tmp-mchan-branch 14/21] fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
@ 2022-01-17 19:56 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-01-17 19:56 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10254 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-cifs(a)vger.kernel.org
CC: samba-technical(a)lists.samba.org
TO: Shyam Prasad N <sprasad@microsoft.com>
CC: Steve French <stfrench@microsoft.com>
tree: git://git.samba.org/sfrench/cifs-2.6.git tmp-mchan-branch
head: 5dcedd487447680668c095add4b24432a06b2644
commit: 81b88cd97eb7df45d283a92b56603f6e433a69b5 [14/21] cifs: check reconnects for channels of active tcons too
:::::: branch date: 13 hours ago
:::::: commit date: 18 hours ago
config: x86_64-randconfig-c022-20220117 (https://download.01.org/0day-ci/archive/20220118/202201180340.vQkWT5nw-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
cocci warnings: (new ones prefixed by >>)
>> fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
vim +3869 fs/cifs/smb2pdu.c
9094fad1ed90ca Pavel Shilovsky 2012-07-12 3784
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3785 void smb2_reconnect_server(struct work_struct *work)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3786 {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3787 struct TCP_Server_Info *server = container_of(work,
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3788 struct TCP_Server_Info, reconnect.work);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3789 struct TCP_Server_Info *pserver;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3790 struct cifs_ses *ses, *ses2;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3791 struct cifs_tcon *tcon, *tcon2;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3792 struct list_head tmp_list, tmp_ses_list;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3793 bool tcon_exist = false, ses_exist = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3794 bool tcon_selected = false, ses_selected = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3795 int rc;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3796 bool resched = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3797
81b88cd97eb7df Shyam Prasad N 2021-10-30 3798 /* If server is a channel, select the primary channel */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3799 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3800
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3801 /* Prevent simultaneous reconnects that can corrupt tcon->rlist list */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3802 mutex_lock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3803
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3804 INIT_LIST_HEAD(&tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3805 INIT_LIST_HEAD(&tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3806 cifs_dbg(FYI, "Reconnecting tcons and channels\n");
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3807
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3808 spin_lock(&cifs_tcp_ses_lock);
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3809 list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3810
81b88cd97eb7df Shyam Prasad N 2021-10-30 3811 tcon_selected = ses_selected = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3812
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3813 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
96a988ffeb90db Pavel Shilovsky 2016-11-29 3814 if (tcon->need_reconnect || tcon->need_reopen_files) {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3815 tcon->tc_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3816 list_add_tail(&tcon->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3817 tcon_selected = tcon_exist = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3818 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3819 }
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3820 /*
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3821 * IPC has the same lifetime as its session and uses its
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3822 * refcount.
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3823 */
b327a717e50698 Aurelien Aptel 2018-01-24 3824 if (ses->tcon_ipc && ses->tcon_ipc->need_reconnect) {
b327a717e50698 Aurelien Aptel 2018-01-24 3825 list_add_tail(&ses->tcon_ipc->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3826 tcon_selected = tcon_exist = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3827 ses->ses_count++;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3828 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3829 /*
81b88cd97eb7df Shyam Prasad N 2021-10-30 3830 * handle the case where channel needs to reconnect
81b88cd97eb7df Shyam Prasad N 2021-10-30 3831 * binding session, but tcon is healthy (some other channel
81b88cd97eb7df Shyam Prasad N 2021-10-30 3832 * is active)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3833 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3834 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3835 list_add_tail(&ses->rlist, &tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3836 ses_selected = ses_exist = true;
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3837 ses->ses_count++;
b327a717e50698 Aurelien Aptel 2018-01-24 3838 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3839 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3840 /*
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3841 * Get the reference to server struct to be sure that the last call of
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3842 * cifs_put_tcon() in the loop below won't release the server pointer.
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3843 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3844 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3845 server->srv_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3846
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3847 spin_unlock(&cifs_tcp_ses_lock);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3848
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3849 list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) {
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3850 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
18ea43113f5b74 Germano Percossi 2017-04-07 3851 if (!rc)
96a988ffeb90db Pavel Shilovsky 2016-11-29 3852 cifs_reopen_persistent_handles(tcon);
18ea43113f5b74 Germano Percossi 2017-04-07 3853 else
18ea43113f5b74 Germano Percossi 2017-04-07 3854 resched = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3855 list_del_init(&tcon->rlist);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3856 if (tcon->ipc)
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3857 cifs_put_smb_ses(tcon->ses);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3858 else
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3859 cifs_put_tcon(tcon);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3860 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3861
81b88cd97eb7df Shyam Prasad N 2021-10-30 3862 if (!ses_exist)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3863 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3864
81b88cd97eb7df Shyam Prasad N 2021-10-30 3865 /* allocate a dummy tcon struct used for reconnect */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3866 tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3867 if (!tcon) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3868 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3869 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3870 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3871 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3872 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3873
81b88cd97eb7df Shyam Prasad N 2021-10-30 3874 tcon->tidStatus = CifsGood;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3875 tcon->retry = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3876 tcon->need_reconnect = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3877
81b88cd97eb7df Shyam Prasad N 2021-10-30 3878 /* now reconnect sessions for necessary channels */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3879 list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3880 tcon->ses = ses;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3881 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3882 if (rc)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3883 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3884 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3885 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3886 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3887 kfree(tcon);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3888
81b88cd97eb7df Shyam Prasad N 2021-10-30 3889 done:
81b88cd97eb7df Shyam Prasad N 2021-10-30 3890 cifs_dbg(FYI, "Reconnecting tcons and channels finished\n");
18ea43113f5b74 Germano Percossi 2017-04-07 3891 if (resched)
18ea43113f5b74 Germano Percossi 2017-04-07 3892 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3893 mutex_unlock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3894
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3895 /* now we can safely release srv struct */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3896 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3897 cifs_put_tcp_session(server, 1);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3898 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3899
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 6+ messages in thread
* [cifs:tmp-mchan-branch 14/21] fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
@ 2022-04-22 9:37 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-04-22 9:37 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10213 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-cifs(a)vger.kernel.org
CC: samba-technical(a)lists.samba.org
TO: Shyam Prasad N <sprasad@microsoft.com>
CC: Steve French <stfrench@microsoft.com>
tree: git://git.samba.org/sfrench/cifs-2.6.git tmp-mchan-branch
head: 5dcedd487447680668c095add4b24432a06b2644
commit: 81b88cd97eb7df45d283a92b56603f6e433a69b5 [14/21] cifs: check reconnects for channels of active tcons too
:::::: branch date: 3 months ago
:::::: commit date: 3 months ago
config: x86_64-randconfig-c022-20220117 (https://download.01.org/0day-ci/archive/20220422/202204221746.bDuYqNfI-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
cocci warnings: (new ones prefixed by >>)
>> fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
vim +3869 fs/cifs/smb2pdu.c
9094fad1ed90ca Pavel Shilovsky 2012-07-12 3784
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3785 void smb2_reconnect_server(struct work_struct *work)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3786 {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3787 struct TCP_Server_Info *server = container_of(work,
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3788 struct TCP_Server_Info, reconnect.work);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3789 struct TCP_Server_Info *pserver;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3790 struct cifs_ses *ses, *ses2;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3791 struct cifs_tcon *tcon, *tcon2;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3792 struct list_head tmp_list, tmp_ses_list;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3793 bool tcon_exist = false, ses_exist = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3794 bool tcon_selected = false, ses_selected = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3795 int rc;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3796 bool resched = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3797
81b88cd97eb7df Shyam Prasad N 2021-10-30 3798 /* If server is a channel, select the primary channel */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3799 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3800
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3801 /* Prevent simultaneous reconnects that can corrupt tcon->rlist list */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3802 mutex_lock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3803
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3804 INIT_LIST_HEAD(&tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3805 INIT_LIST_HEAD(&tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3806 cifs_dbg(FYI, "Reconnecting tcons and channels\n");
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3807
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3808 spin_lock(&cifs_tcp_ses_lock);
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3809 list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3810
81b88cd97eb7df Shyam Prasad N 2021-10-30 3811 tcon_selected = ses_selected = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3812
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3813 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
96a988ffeb90db Pavel Shilovsky 2016-11-29 3814 if (tcon->need_reconnect || tcon->need_reopen_files) {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3815 tcon->tc_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3816 list_add_tail(&tcon->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3817 tcon_selected = tcon_exist = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3818 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3819 }
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3820 /*
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3821 * IPC has the same lifetime as its session and uses its
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3822 * refcount.
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3823 */
b327a717e50698 Aurelien Aptel 2018-01-24 3824 if (ses->tcon_ipc && ses->tcon_ipc->need_reconnect) {
b327a717e50698 Aurelien Aptel 2018-01-24 3825 list_add_tail(&ses->tcon_ipc->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3826 tcon_selected = tcon_exist = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3827 ses->ses_count++;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3828 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3829 /*
81b88cd97eb7df Shyam Prasad N 2021-10-30 3830 * handle the case where channel needs to reconnect
81b88cd97eb7df Shyam Prasad N 2021-10-30 3831 * binding session, but tcon is healthy (some other channel
81b88cd97eb7df Shyam Prasad N 2021-10-30 3832 * is active)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3833 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3834 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3835 list_add_tail(&ses->rlist, &tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3836 ses_selected = ses_exist = true;
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3837 ses->ses_count++;
b327a717e50698 Aurelien Aptel 2018-01-24 3838 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3839 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3840 /*
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3841 * Get the reference to server struct to be sure that the last call of
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3842 * cifs_put_tcon() in the loop below won't release the server pointer.
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3843 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3844 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3845 server->srv_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3846
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3847 spin_unlock(&cifs_tcp_ses_lock);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3848
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3849 list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) {
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3850 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
18ea43113f5b74 Germano Percossi 2017-04-07 3851 if (!rc)
96a988ffeb90db Pavel Shilovsky 2016-11-29 3852 cifs_reopen_persistent_handles(tcon);
18ea43113f5b74 Germano Percossi 2017-04-07 3853 else
18ea43113f5b74 Germano Percossi 2017-04-07 3854 resched = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3855 list_del_init(&tcon->rlist);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3856 if (tcon->ipc)
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3857 cifs_put_smb_ses(tcon->ses);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3858 else
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3859 cifs_put_tcon(tcon);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3860 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3861
81b88cd97eb7df Shyam Prasad N 2021-10-30 3862 if (!ses_exist)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3863 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3864
81b88cd97eb7df Shyam Prasad N 2021-10-30 3865 /* allocate a dummy tcon struct used for reconnect */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3866 tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3867 if (!tcon) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3868 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3869 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3870 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3871 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3872 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3873
81b88cd97eb7df Shyam Prasad N 2021-10-30 3874 tcon->tidStatus = CifsGood;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3875 tcon->retry = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3876 tcon->need_reconnect = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3877
81b88cd97eb7df Shyam Prasad N 2021-10-30 3878 /* now reconnect sessions for necessary channels */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3879 list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3880 tcon->ses = ses;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3881 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3882 if (rc)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3883 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3884 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3885 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3886 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3887 kfree(tcon);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3888
81b88cd97eb7df Shyam Prasad N 2021-10-30 3889 done:
81b88cd97eb7df Shyam Prasad N 2021-10-30 3890 cifs_dbg(FYI, "Reconnecting tcons and channels finished\n");
18ea43113f5b74 Germano Percossi 2017-04-07 3891 if (resched)
18ea43113f5b74 Germano Percossi 2017-04-07 3892 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3893 mutex_unlock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3894
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3895 /* now we can safely release srv struct */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3896 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3897 cifs_put_tcp_session(server, 1);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3898 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3899
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 6+ messages in thread
* [cifs:tmp-mchan-branch 14/21] fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
@ 2022-02-08 11:44 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-02-08 11:44 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10252 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-cifs(a)vger.kernel.org
CC: samba-technical(a)lists.samba.org
TO: Shyam Prasad N <sprasad@microsoft.com>
CC: Steve French <stfrench@microsoft.com>
tree: git://git.samba.org/sfrench/cifs-2.6.git tmp-mchan-branch
head: 5dcedd487447680668c095add4b24432a06b2644
commit: 81b88cd97eb7df45d283a92b56603f6e433a69b5 [14/21] cifs: check reconnects for channels of active tcons too
:::::: branch date: 3 weeks ago
:::::: commit date: 3 weeks ago
config: x86_64-randconfig-c022-20220117 (https://download.01.org/0day-ci/archive/20220208/202202081945.ce0L3eoG-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
cocci warnings: (new ones prefixed by >>)
>> fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
vim +3869 fs/cifs/smb2pdu.c
9094fad1ed90ca Pavel Shilovsky 2012-07-12 3784
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3785 void smb2_reconnect_server(struct work_struct *work)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3786 {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3787 struct TCP_Server_Info *server = container_of(work,
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3788 struct TCP_Server_Info, reconnect.work);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3789 struct TCP_Server_Info *pserver;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3790 struct cifs_ses *ses, *ses2;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3791 struct cifs_tcon *tcon, *tcon2;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3792 struct list_head tmp_list, tmp_ses_list;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3793 bool tcon_exist = false, ses_exist = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3794 bool tcon_selected = false, ses_selected = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3795 int rc;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3796 bool resched = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3797
81b88cd97eb7df Shyam Prasad N 2021-10-30 3798 /* If server is a channel, select the primary channel */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3799 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3800
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3801 /* Prevent simultaneous reconnects that can corrupt tcon->rlist list */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3802 mutex_lock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3803
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3804 INIT_LIST_HEAD(&tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3805 INIT_LIST_HEAD(&tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3806 cifs_dbg(FYI, "Reconnecting tcons and channels\n");
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3807
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3808 spin_lock(&cifs_tcp_ses_lock);
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3809 list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3810
81b88cd97eb7df Shyam Prasad N 2021-10-30 3811 tcon_selected = ses_selected = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3812
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3813 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
96a988ffeb90db Pavel Shilovsky 2016-11-29 3814 if (tcon->need_reconnect || tcon->need_reopen_files) {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3815 tcon->tc_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3816 list_add_tail(&tcon->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3817 tcon_selected = tcon_exist = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3818 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3819 }
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3820 /*
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3821 * IPC has the same lifetime as its session and uses its
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3822 * refcount.
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3823 */
b327a717e50698 Aurelien Aptel 2018-01-24 3824 if (ses->tcon_ipc && ses->tcon_ipc->need_reconnect) {
b327a717e50698 Aurelien Aptel 2018-01-24 3825 list_add_tail(&ses->tcon_ipc->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3826 tcon_selected = tcon_exist = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3827 ses->ses_count++;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3828 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3829 /*
81b88cd97eb7df Shyam Prasad N 2021-10-30 3830 * handle the case where channel needs to reconnect
81b88cd97eb7df Shyam Prasad N 2021-10-30 3831 * binding session, but tcon is healthy (some other channel
81b88cd97eb7df Shyam Prasad N 2021-10-30 3832 * is active)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3833 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3834 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3835 list_add_tail(&ses->rlist, &tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3836 ses_selected = ses_exist = true;
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3837 ses->ses_count++;
b327a717e50698 Aurelien Aptel 2018-01-24 3838 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3839 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3840 /*
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3841 * Get the reference to server struct to be sure that the last call of
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3842 * cifs_put_tcon() in the loop below won't release the server pointer.
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3843 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3844 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3845 server->srv_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3846
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3847 spin_unlock(&cifs_tcp_ses_lock);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3848
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3849 list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) {
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3850 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
18ea43113f5b74 Germano Percossi 2017-04-07 3851 if (!rc)
96a988ffeb90db Pavel Shilovsky 2016-11-29 3852 cifs_reopen_persistent_handles(tcon);
18ea43113f5b74 Germano Percossi 2017-04-07 3853 else
18ea43113f5b74 Germano Percossi 2017-04-07 3854 resched = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3855 list_del_init(&tcon->rlist);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3856 if (tcon->ipc)
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3857 cifs_put_smb_ses(tcon->ses);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3858 else
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3859 cifs_put_tcon(tcon);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3860 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3861
81b88cd97eb7df Shyam Prasad N 2021-10-30 3862 if (!ses_exist)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3863 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3864
81b88cd97eb7df Shyam Prasad N 2021-10-30 3865 /* allocate a dummy tcon struct used for reconnect */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3866 tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3867 if (!tcon) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3868 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3869 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3870 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3871 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3872 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3873
81b88cd97eb7df Shyam Prasad N 2021-10-30 3874 tcon->tidStatus = CifsGood;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3875 tcon->retry = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3876 tcon->need_reconnect = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3877
81b88cd97eb7df Shyam Prasad N 2021-10-30 3878 /* now reconnect sessions for necessary channels */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3879 list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3880 tcon->ses = ses;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3881 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3882 if (rc)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3883 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3884 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3885 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3886 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3887 kfree(tcon);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3888
81b88cd97eb7df Shyam Prasad N 2021-10-30 3889 done:
81b88cd97eb7df Shyam Prasad N 2021-10-30 3890 cifs_dbg(FYI, "Reconnecting tcons and channels finished\n");
18ea43113f5b74 Germano Percossi 2017-04-07 3891 if (resched)
18ea43113f5b74 Germano Percossi 2017-04-07 3892 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3893 mutex_unlock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3894
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3895 /* now we can safely release srv struct */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3896 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3897 cifs_put_tcp_session(server, 1);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3898 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3899
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 6+ messages in thread
* [cifs:tmp-mchan-branch 14/21] fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
@ 2022-02-07 5:56 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-02-07 5:56 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10252 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-cifs(a)vger.kernel.org
CC: samba-technical(a)lists.samba.org
TO: Shyam Prasad N <sprasad@microsoft.com>
CC: Steve French <stfrench@microsoft.com>
tree: git://git.samba.org/sfrench/cifs-2.6.git tmp-mchan-branch
head: 5dcedd487447680668c095add4b24432a06b2644
commit: 81b88cd97eb7df45d283a92b56603f6e433a69b5 [14/21] cifs: check reconnects for channels of active tcons too
:::::: branch date: 3 weeks ago
:::::: commit date: 3 weeks ago
config: x86_64-randconfig-c022-20220117 (https://download.01.org/0day-ci/archive/20220207/202202071300.p4iFiNQU-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
cocci warnings: (new ones prefixed by >>)
>> fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
vim +3869 fs/cifs/smb2pdu.c
9094fad1ed90ca Pavel Shilovsky 2012-07-12 3784
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3785 void smb2_reconnect_server(struct work_struct *work)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3786 {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3787 struct TCP_Server_Info *server = container_of(work,
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3788 struct TCP_Server_Info, reconnect.work);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3789 struct TCP_Server_Info *pserver;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3790 struct cifs_ses *ses, *ses2;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3791 struct cifs_tcon *tcon, *tcon2;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3792 struct list_head tmp_list, tmp_ses_list;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3793 bool tcon_exist = false, ses_exist = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3794 bool tcon_selected = false, ses_selected = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3795 int rc;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3796 bool resched = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3797
81b88cd97eb7df Shyam Prasad N 2021-10-30 3798 /* If server is a channel, select the primary channel */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3799 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3800
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3801 /* Prevent simultaneous reconnects that can corrupt tcon->rlist list */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3802 mutex_lock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3803
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3804 INIT_LIST_HEAD(&tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3805 INIT_LIST_HEAD(&tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3806 cifs_dbg(FYI, "Reconnecting tcons and channels\n");
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3807
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3808 spin_lock(&cifs_tcp_ses_lock);
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3809 list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3810
81b88cd97eb7df Shyam Prasad N 2021-10-30 3811 tcon_selected = ses_selected = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3812
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3813 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
96a988ffeb90db Pavel Shilovsky 2016-11-29 3814 if (tcon->need_reconnect || tcon->need_reopen_files) {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3815 tcon->tc_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3816 list_add_tail(&tcon->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3817 tcon_selected = tcon_exist = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3818 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3819 }
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3820 /*
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3821 * IPC has the same lifetime as its session and uses its
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3822 * refcount.
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3823 */
b327a717e50698 Aurelien Aptel 2018-01-24 3824 if (ses->tcon_ipc && ses->tcon_ipc->need_reconnect) {
b327a717e50698 Aurelien Aptel 2018-01-24 3825 list_add_tail(&ses->tcon_ipc->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3826 tcon_selected = tcon_exist = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3827 ses->ses_count++;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3828 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3829 /*
81b88cd97eb7df Shyam Prasad N 2021-10-30 3830 * handle the case where channel needs to reconnect
81b88cd97eb7df Shyam Prasad N 2021-10-30 3831 * binding session, but tcon is healthy (some other channel
81b88cd97eb7df Shyam Prasad N 2021-10-30 3832 * is active)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3833 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3834 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3835 list_add_tail(&ses->rlist, &tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3836 ses_selected = ses_exist = true;
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3837 ses->ses_count++;
b327a717e50698 Aurelien Aptel 2018-01-24 3838 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3839 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3840 /*
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3841 * Get the reference to server struct to be sure that the last call of
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3842 * cifs_put_tcon() in the loop below won't release the server pointer.
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3843 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3844 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3845 server->srv_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3846
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3847 spin_unlock(&cifs_tcp_ses_lock);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3848
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3849 list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) {
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3850 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
18ea43113f5b74 Germano Percossi 2017-04-07 3851 if (!rc)
96a988ffeb90db Pavel Shilovsky 2016-11-29 3852 cifs_reopen_persistent_handles(tcon);
18ea43113f5b74 Germano Percossi 2017-04-07 3853 else
18ea43113f5b74 Germano Percossi 2017-04-07 3854 resched = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3855 list_del_init(&tcon->rlist);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3856 if (tcon->ipc)
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3857 cifs_put_smb_ses(tcon->ses);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3858 else
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3859 cifs_put_tcon(tcon);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3860 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3861
81b88cd97eb7df Shyam Prasad N 2021-10-30 3862 if (!ses_exist)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3863 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3864
81b88cd97eb7df Shyam Prasad N 2021-10-30 3865 /* allocate a dummy tcon struct used for reconnect */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3866 tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3867 if (!tcon) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3868 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3869 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3870 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3871 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3872 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3873
81b88cd97eb7df Shyam Prasad N 2021-10-30 3874 tcon->tidStatus = CifsGood;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3875 tcon->retry = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3876 tcon->need_reconnect = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3877
81b88cd97eb7df Shyam Prasad N 2021-10-30 3878 /* now reconnect sessions for necessary channels */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3879 list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3880 tcon->ses = ses;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3881 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3882 if (rc)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3883 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3884 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3885 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3886 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3887 kfree(tcon);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3888
81b88cd97eb7df Shyam Prasad N 2021-10-30 3889 done:
81b88cd97eb7df Shyam Prasad N 2021-10-30 3890 cifs_dbg(FYI, "Reconnecting tcons and channels finished\n");
18ea43113f5b74 Germano Percossi 2017-04-07 3891 if (resched)
18ea43113f5b74 Germano Percossi 2017-04-07 3892 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3893 mutex_unlock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3894
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3895 /* now we can safely release srv struct */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3896 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3897 cifs_put_tcp_session(server, 1);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3898 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3899
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 6+ messages in thread
* [cifs:tmp-mchan-branch 14/21] fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
@ 2022-01-25 7:02 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-01-25 7:02 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10250 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-cifs(a)vger.kernel.org
CC: samba-technical(a)lists.samba.org
TO: Shyam Prasad N <sprasad@microsoft.com>
CC: Steve French <stfrench@microsoft.com>
tree: git://git.samba.org/sfrench/cifs-2.6.git tmp-mchan-branch
head: 5dcedd487447680668c095add4b24432a06b2644
commit: 81b88cd97eb7df45d283a92b56603f6e433a69b5 [14/21] cifs: check reconnects for channels of active tcons too
:::::: branch date: 8 days ago
:::::: commit date: 8 days ago
config: x86_64-randconfig-c022-20220117 (https://download.01.org/0day-ci/archive/20220125/202201251432.NdN6AWSx-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
cocci warnings: (new ones prefixed by >>)
>> fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
vim +3869 fs/cifs/smb2pdu.c
9094fad1ed90ca Pavel Shilovsky 2012-07-12 3784
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3785 void smb2_reconnect_server(struct work_struct *work)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3786 {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3787 struct TCP_Server_Info *server = container_of(work,
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3788 struct TCP_Server_Info, reconnect.work);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3789 struct TCP_Server_Info *pserver;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3790 struct cifs_ses *ses, *ses2;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3791 struct cifs_tcon *tcon, *tcon2;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3792 struct list_head tmp_list, tmp_ses_list;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3793 bool tcon_exist = false, ses_exist = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3794 bool tcon_selected = false, ses_selected = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3795 int rc;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3796 bool resched = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3797
81b88cd97eb7df Shyam Prasad N 2021-10-30 3798 /* If server is a channel, select the primary channel */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3799 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3800
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3801 /* Prevent simultaneous reconnects that can corrupt tcon->rlist list */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3802 mutex_lock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3803
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3804 INIT_LIST_HEAD(&tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3805 INIT_LIST_HEAD(&tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3806 cifs_dbg(FYI, "Reconnecting tcons and channels\n");
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3807
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3808 spin_lock(&cifs_tcp_ses_lock);
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3809 list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3810
81b88cd97eb7df Shyam Prasad N 2021-10-30 3811 tcon_selected = ses_selected = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3812
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3813 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
96a988ffeb90db Pavel Shilovsky 2016-11-29 3814 if (tcon->need_reconnect || tcon->need_reopen_files) {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3815 tcon->tc_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3816 list_add_tail(&tcon->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3817 tcon_selected = tcon_exist = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3818 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3819 }
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3820 /*
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3821 * IPC has the same lifetime as its session and uses its
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3822 * refcount.
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3823 */
b327a717e50698 Aurelien Aptel 2018-01-24 3824 if (ses->tcon_ipc && ses->tcon_ipc->need_reconnect) {
b327a717e50698 Aurelien Aptel 2018-01-24 3825 list_add_tail(&ses->tcon_ipc->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3826 tcon_selected = tcon_exist = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3827 ses->ses_count++;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3828 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3829 /*
81b88cd97eb7df Shyam Prasad N 2021-10-30 3830 * handle the case where channel needs to reconnect
81b88cd97eb7df Shyam Prasad N 2021-10-30 3831 * binding session, but tcon is healthy (some other channel
81b88cd97eb7df Shyam Prasad N 2021-10-30 3832 * is active)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3833 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3834 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3835 list_add_tail(&ses->rlist, &tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3836 ses_selected = ses_exist = true;
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3837 ses->ses_count++;
b327a717e50698 Aurelien Aptel 2018-01-24 3838 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3839 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3840 /*
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3841 * Get the reference to server struct to be sure that the last call of
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3842 * cifs_put_tcon() in the loop below won't release the server pointer.
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3843 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3844 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3845 server->srv_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3846
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3847 spin_unlock(&cifs_tcp_ses_lock);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3848
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3849 list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) {
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3850 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
18ea43113f5b74 Germano Percossi 2017-04-07 3851 if (!rc)
96a988ffeb90db Pavel Shilovsky 2016-11-29 3852 cifs_reopen_persistent_handles(tcon);
18ea43113f5b74 Germano Percossi 2017-04-07 3853 else
18ea43113f5b74 Germano Percossi 2017-04-07 3854 resched = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3855 list_del_init(&tcon->rlist);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3856 if (tcon->ipc)
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3857 cifs_put_smb_ses(tcon->ses);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3858 else
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3859 cifs_put_tcon(tcon);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3860 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3861
81b88cd97eb7df Shyam Prasad N 2021-10-30 3862 if (!ses_exist)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3863 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3864
81b88cd97eb7df Shyam Prasad N 2021-10-30 3865 /* allocate a dummy tcon struct used for reconnect */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3866 tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3867 if (!tcon) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3868 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3869 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3870 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3871 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3872 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3873
81b88cd97eb7df Shyam Prasad N 2021-10-30 3874 tcon->tidStatus = CifsGood;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3875 tcon->retry = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3876 tcon->need_reconnect = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3877
81b88cd97eb7df Shyam Prasad N 2021-10-30 3878 /* now reconnect sessions for necessary channels */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3879 list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3880 tcon->ses = ses;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3881 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3882 if (rc)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3883 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3884 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3885 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3886 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3887 kfree(tcon);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3888
81b88cd97eb7df Shyam Prasad N 2021-10-30 3889 done:
81b88cd97eb7df Shyam Prasad N 2021-10-30 3890 cifs_dbg(FYI, "Reconnecting tcons and channels finished\n");
18ea43113f5b74 Germano Percossi 2017-04-07 3891 if (resched)
18ea43113f5b74 Germano Percossi 2017-04-07 3892 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3893 mutex_unlock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3894
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3895 /* now we can safely release srv struct */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3896 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3897 cifs_put_tcp_session(server, 1);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3898 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3899
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 6+ messages in thread
* [cifs:tmp-mchan-branch 14/21] fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
@ 2022-01-20 13:41 kernel test robot
0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-01-20 13:41 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10250 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-cifs(a)vger.kernel.org
CC: samba-technical(a)lists.samba.org
TO: Shyam Prasad N <sprasad@microsoft.com>
CC: Steve French <stfrench@microsoft.com>
tree: git://git.samba.org/sfrench/cifs-2.6.git tmp-mchan-branch
head: 5dcedd487447680668c095add4b24432a06b2644
commit: 81b88cd97eb7df45d283a92b56603f6e433a69b5 [14/21] cifs: check reconnects for channels of active tcons too
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: x86_64-randconfig-c022-20220117 (https://download.01.org/0day-ci/archive/20220120/202201202110.RLz0FiV5-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
cocci warnings: (new ones prefixed by >>)
>> fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809
vim +3869 fs/cifs/smb2pdu.c
9094fad1ed90ca Pavel Shilovsky 2012-07-12 3784
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3785 void smb2_reconnect_server(struct work_struct *work)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3786 {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3787 struct TCP_Server_Info *server = container_of(work,
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3788 struct TCP_Server_Info, reconnect.work);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3789 struct TCP_Server_Info *pserver;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3790 struct cifs_ses *ses, *ses2;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3791 struct cifs_tcon *tcon, *tcon2;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3792 struct list_head tmp_list, tmp_ses_list;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3793 bool tcon_exist = false, ses_exist = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3794 bool tcon_selected = false, ses_selected = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3795 int rc;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3796 bool resched = false;
18ea43113f5b74 Germano Percossi 2017-04-07 3797
81b88cd97eb7df Shyam Prasad N 2021-10-30 3798 /* If server is a channel, select the primary channel */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3799 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3800
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3801 /* Prevent simultaneous reconnects that can corrupt tcon->rlist list */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3802 mutex_lock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3803
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3804 INIT_LIST_HEAD(&tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3805 INIT_LIST_HEAD(&tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3806 cifs_dbg(FYI, "Reconnecting tcons and channels\n");
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3807
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3808 spin_lock(&cifs_tcp_ses_lock);
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3809 list_for_each_entry(ses, &pserver->smb_ses_list, smb_ses_list) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3810
81b88cd97eb7df Shyam Prasad N 2021-10-30 3811 tcon_selected = ses_selected = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3812
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3813 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) {
96a988ffeb90db Pavel Shilovsky 2016-11-29 3814 if (tcon->need_reconnect || tcon->need_reopen_files) {
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3815 tcon->tc_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3816 list_add_tail(&tcon->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3817 tcon_selected = tcon_exist = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3818 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3819 }
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3820 /*
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3821 * IPC has the same lifetime as its session and uses its
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3822 * refcount.
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3823 */
b327a717e50698 Aurelien Aptel 2018-01-24 3824 if (ses->tcon_ipc && ses->tcon_ipc->need_reconnect) {
b327a717e50698 Aurelien Aptel 2018-01-24 3825 list_add_tail(&ses->tcon_ipc->rlist, &tmp_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3826 tcon_selected = tcon_exist = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3827 ses->ses_count++;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3828 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3829 /*
81b88cd97eb7df Shyam Prasad N 2021-10-30 3830 * handle the case where channel needs to reconnect
81b88cd97eb7df Shyam Prasad N 2021-10-30 3831 * binding session, but tcon is healthy (some other channel
81b88cd97eb7df Shyam Prasad N 2021-10-30 3832 * is active)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3833 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3834 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3835 list_add_tail(&ses->rlist, &tmp_ses_list);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3836 ses_selected = ses_exist = true;
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3837 ses->ses_count++;
b327a717e50698 Aurelien Aptel 2018-01-24 3838 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3839 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3840 /*
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3841 * Get the reference to server struct to be sure that the last call of
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3842 * cifs_put_tcon() in the loop below won't release the server pointer.
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3843 */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3844 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3845 server->srv_count++;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3846
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3847 spin_unlock(&cifs_tcp_ses_lock);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3848
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3849 list_for_each_entry_safe(tcon, tcon2, &tmp_list, rlist) {
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3850 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
18ea43113f5b74 Germano Percossi 2017-04-07 3851 if (!rc)
96a988ffeb90db Pavel Shilovsky 2016-11-29 3852 cifs_reopen_persistent_handles(tcon);
18ea43113f5b74 Germano Percossi 2017-04-07 3853 else
18ea43113f5b74 Germano Percossi 2017-04-07 3854 resched = true;
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3855 list_del_init(&tcon->rlist);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3856 if (tcon->ipc)
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3857 cifs_put_smb_ses(tcon->ses);
0ff2b018b02f89 Ronnie Sahlberg 2019-06-05 3858 else
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3859 cifs_put_tcon(tcon);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3860 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3861
81b88cd97eb7df Shyam Prasad N 2021-10-30 3862 if (!ses_exist)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3863 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3864
81b88cd97eb7df Shyam Prasad N 2021-10-30 3865 /* allocate a dummy tcon struct used for reconnect */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3866 tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3867 if (!tcon) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3868 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 @3869 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3870 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3871 goto done;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3872 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3873
81b88cd97eb7df Shyam Prasad N 2021-10-30 3874 tcon->tidStatus = CifsGood;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3875 tcon->retry = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3876 tcon->need_reconnect = false;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3877
81b88cd97eb7df Shyam Prasad N 2021-10-30 3878 /* now reconnect sessions for necessary channels */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3879 list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) {
81b88cd97eb7df Shyam Prasad N 2021-10-30 3880 tcon->ses = ses;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3881 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3882 if (rc)
81b88cd97eb7df Shyam Prasad N 2021-10-30 3883 resched = true;
81b88cd97eb7df Shyam Prasad N 2021-10-30 3884 list_del_init(&ses->rlist);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3885 cifs_put_smb_ses(ses);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3886 }
81b88cd97eb7df Shyam Prasad N 2021-10-30 3887 kfree(tcon);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3888
81b88cd97eb7df Shyam Prasad N 2021-10-30 3889 done:
81b88cd97eb7df Shyam Prasad N 2021-10-30 3890 cifs_dbg(FYI, "Reconnecting tcons and channels finished\n");
18ea43113f5b74 Germano Percossi 2017-04-07 3891 if (resched)
18ea43113f5b74 Germano Percossi 2017-04-07 3892 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ);
81b88cd97eb7df Shyam Prasad N 2021-10-30 3893 mutex_unlock(&pserver->reconnect_mutex);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3894
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3895 /* now we can safely release srv struct */
81b88cd97eb7df Shyam Prasad N 2021-10-30 3896 if (tcon_exist || ses_exist)
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3897 cifs_put_tcp_session(server, 1);
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3898 }
53e0e11efe9289 Pavel Shilovsky 2016-11-04 3899
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-04-22 9:37 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-17 19:56 [cifs:tmp-mchan-branch 14/21] fs/cifs/smb2pdu.c:3869:17-20: ERROR: invalid reference to the index variable of the iterator on line 3809 kernel test robot
2022-01-20 13:41 kernel test robot
2022-01-25 7:02 kernel test robot
2022-02-07 5:56 kernel test robot
2022-02-08 11:44 kernel test robot
2022-04-22 9:37 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.