oe-kbuild.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [linux-next:master 3307/3504] fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc'.
@ 2024-04-05  6:44 Dan Carpenter
  2024-04-05 15:19 ` [EXTERNAL] " Steven French
  0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2024-04-05  6:44 UTC (permalink / raw)
  To: oe-kbuild, Ritvik Budhiraja; +Cc: lkp, oe-kbuild-all, Steve French

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   727900b675b749c40ba1f6669c7ae5eb7eb8e837
commit: a423dcbdabf457c0fff3669b0b20708d287c92c2 [3307/3504] smb3: retrying on failed server close
config: x86_64-randconfig-161-20240403 (https://download.01.org/0day-ci/archive/20240403/202404031415.cIBwV2aU-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202404031415.cIBwV2aU-lkp@intel.com/

New smatch warnings:
fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc'.
fs/smb/client/file.c:732 _cifsFileInfo_put() error: uninitialized symbol 'rc'.

Old smatch warnings:
fs/smb/client/file.c:5050 cifs_oplock_break() warn: variable dereferenced before check 'inode' (see line 5021)

vim +/rc +619 fs/smb/client/file.c

a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  601  void serverclose_work(struct work_struct *work)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  602  {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  603  	struct cifsFileInfo *cifs_file = container_of(work,
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  604  			struct cifsFileInfo, serverclose);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  605  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  606  	struct cifs_tcon *tcon = tlink_tcon(cifs_file->tlink);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  607  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  608  	struct TCP_Server_Info *server = tcon->ses->server;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  609  	int rc;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  610  	int retries = 0;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  611  	int MAX_RETRIES = 4;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  612  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  613  	do {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  614  		if (server->ops->close_getattr)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  615  			rc = server->ops->close_getattr(0, tcon, cifs_file);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  616  		else if (server->ops->close)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  617  			rc = server->ops->close(0, tcon, &cifs_file->fid);

rc not intialized on else path

a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  618  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02 @619  		if (rc == -EBUSY || rc == -EAGAIN) {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  620  			retries++;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  621  			msleep(250);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  622  		}
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  623  	} while ((rc == -EBUSY || rc == -EAGAIN) && (retries < MAX_RETRIES)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  624  	);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  625  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  626  	if (retries == MAX_RETRIES)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  627  		pr_warn("Serverclose failed %d times, giving up\n", MAX_RETRIES);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  628  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  629  	if (cifs_file->offload)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  630  		queue_work(fileinfo_put_wq, &cifs_file->put);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  631  	else
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  632  		cifsFileInfo_put_final(cifs_file);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  633  }
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  634  
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  635  /**
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  636   * cifsFileInfo_put - release a reference of file priv data
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  637   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  638   * Always potentially wait for oplock handler. See _cifsFileInfo_put().
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  639   *
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  640   * @cifs_file:	cifs/smb3 specific info (eg refcounts) for an open file
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  641   */
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  642  void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  643  {
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  644  	_cifsFileInfo_put(cifs_file, true, true);
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  645  }
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  646  
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  647  /**
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  648   * _cifsFileInfo_put - release a reference of file priv data
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  649   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  650   * This may involve closing the filehandle @cifs_file out on the
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  651   * server. Must be called without holding tcon->open_file_lock,
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  652   * cinode->open_file_lock and cifs_file->file_info_lock.
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  653   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  654   * If @wait_for_oplock_handler is true and we are releasing the last
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  655   * reference, wait for any running oplock break handler of the file
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  656   * and cancel any pending one.
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  657   *
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  658   * @cifs_file:	cifs/smb3 specific info (eg refcounts) for an open file
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  659   * @wait_oplock_handler: must be false if called from oplock_break_handler
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  660   * @offload:	not offloaded on close and oplock breaks
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  661   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  662   */
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  663  void _cifsFileInfo_put(struct cifsFileInfo *cifs_file,
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  664  		       bool wait_oplock_handler, bool offload)
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  665  {
2b0143b5c986be fs/cifs/file.c       David Howells    2015-03-17  666  	struct inode *inode = d_inode(cifs_file->dentry);
96daf2b09178d8 fs/cifs/file.c       Steve French     2011-05-27  667  	struct cifs_tcon *tcon = tlink_tcon(cifs_file->tlink);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  668  	struct TCP_Server_Info *server = tcon->ses->server;
e66673e39ac9d4 fs/cifs/file.c       Pavel Shilovsky  2010-11-02  669  	struct cifsInodeInfo *cifsi = CIFS_I(inode);
24261fc23db950 fs/cifs/file.c       Mateusz Guzik    2013-03-08  670  	struct super_block *sb = inode->i_sb;
24261fc23db950 fs/cifs/file.c       Mateusz Guzik    2013-03-08  671  	struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
2bff0659338e58 fs/cifs/file.c       Steve French     2022-10-14  672  	struct cifs_fid fid = {};
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  673  	struct cifs_pending_open open;
ca7df8e0bb2a5e fs/cifs/file.c       Sachin Prabhu    2015-01-15  674  	bool oplock_break_cancelled;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  675  	bool serverclose_offloaded = false;
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  676  
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  677  	spin_lock(&tcon->open_file_lock);
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  678  	spin_lock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  679  	spin_lock(&cifs_file->file_info_lock);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  680  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  681  	cifs_file->offload = offload;
5f6dbc9e4afe4d fs/cifs/file.c       Jeff Layton      2010-10-15  682  	if (--cifs_file->count > 0) {
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  683  		spin_unlock(&cifs_file->file_info_lock);
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  684  		spin_unlock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  685  		spin_unlock(&tcon->open_file_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  686  		return;
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  687  	}
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  688  	spin_unlock(&cifs_file->file_info_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  689  
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  690  	if (server->ops->get_lease_key)
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  691  		server->ops->get_lease_key(inode, &fid);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  692  
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  693  	/* store open in pending opens to make sure we don't miss lease break */
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  694  	cifs_add_pending_open_locked(&fid, cifs_file->tlink, &open);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  695  
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  696  	/* remove it from the lists */
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  697  	list_del(&cifs_file->flist);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  698  	list_del(&cifs_file->tlist);
fae8044c03c3c0 fs/cifs/file.c       Steve French     2018-10-19  699  	atomic_dec(&tcon->num_local_opens);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  700  
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  701  	if (list_empty(&cifsi->openFileList)) {
f96637be081141 fs/cifs/file.c       Joe Perches      2013-05-04  702  		cifs_dbg(FYI, "closing last open instance for inode %p\n",
2b0143b5c986be fs/cifs/file.c       David Howells    2015-03-17  703  			 d_inode(cifs_file->dentry));
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  704  		/*
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  705  		 * In strict cache mode we need invalidate mapping on the last
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  706  		 * close  because it may cause a error when we open this file
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  707  		 * again and get at least level II oplock.
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  708  		 */
4f8ba8a0c09593 fs/cifs/file.c       Pavel Shilovsky  2010-11-21  709  		if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_STRICT_IO)
aff8d5ca7a3dca fs/cifs/file.c       Jeff Layton      2014-04-30  710  			set_bit(CIFS_INO_INVALID_MAPPING, &cifsi->flags);
c67236281c5d74 fs/cifs/file.c       Pavel Shilovsky  2010-11-03  711  		cifs_set_oplock_level(cifsi, 0);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  712  	}
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  713  
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  714  	spin_unlock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  715  	spin_unlock(&tcon->open_file_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  716  
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  717  	oplock_break_cancelled = wait_oplock_handler ?
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  718  		cancel_work_sync(&cifs_file->oplock_break) : false;
ad635942c869ad fs/cifs/file.c       Jeff Layton      2011-07-26  719  
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  720  	if (!tcon->need_reconnect && !cifs_file->invalidHandle) {
0ff78a221bf783 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  721  		struct TCP_Server_Info *server = tcon->ses->server;
6d5786a34d98bf fs/cifs/file.c       Pavel Shilovsky  2012-06-20  722  		unsigned int xid;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  723  		int rc;
0ff78a221bf783 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  724  
6d5786a34d98bf fs/cifs/file.c       Pavel Shilovsky  2012-06-20  725  		xid = get_xid();
43f8a6a74ee244 fs/cifs/file.c       Steve French     2019-12-02  726  		if (server->ops->close_getattr)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  727  			rc = server->ops->close_getattr(xid, tcon, cifs_file);
43f8a6a74ee244 fs/cifs/file.c       Steve French     2019-12-02  728  		else if (server->ops->close)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  729  			rc = server->ops->close(xid, tcon, &cifs_file->fid);
760ad0cac19835 fs/cifs/file.c       Pavel Shilovsky  2012-09-25  730  		_free_xid(xid);

Same

a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  731  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02 @732  		if (rc == -EBUSY || rc == -EAGAIN) {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  733  			// Server close failed, hence offloading it as an async op
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  734  			queue_work(serverclose_wq, &cifs_file->serverclose);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  735  			serverclose_offloaded = true;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  736  		}
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  737  	}

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [EXTERNAL] [linux-next:master 3307/3504] fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc'.
  2024-04-05  6:44 [linux-next:master 3307/3504] fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc' Dan Carpenter
@ 2024-04-05 15:19 ` Steven French
  0 siblings, 0 replies; 3+ messages in thread
From: Steven French @ 2024-04-05 15:19 UTC (permalink / raw)
  To: Dan Carpenter, oe-kbuild, Ritvik Budhiraja; +Cc: lkp, oe-kbuild-all

Both of these have already been fixed in current for-next

-----Original Message-----
From: Dan Carpenter <dan.carpenter@linaro.org>
Sent: Friday, April 5, 2024 1:44 AM
To: oe-kbuild@lists.linux.dev; Ritvik Budhiraja <rbudhiraja@microsoft.com>
Cc: lkp@intel.com; oe-kbuild-all@lists.linux.dev; Steven French <Steven.French@microsoft.com>
Subject: [EXTERNAL] [linux-next:master 3307/3504] fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc'.

[You don't often get email from dan.carpenter@linaro.org. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   727900b675b749c40ba1f6669c7ae5eb7eb8e837
commit: a423dcbdabf457c0fff3669b0b20708d287c92c2 [3307/3504] smb3: retrying on failed server close
config: x86_64-randconfig-161-20240403 (https://download.01.org/0day-ci/archive/20240403/202404031415.cIBwV2aU-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes:
| https://lore/
| .kernel.org%2Fr%2F202404031415.cIBwV2aU-lkp%40intel.com%2F&data=05%7C0
| 2%7CSteven.French%40microsoft.com%7C6ebe2178d38640aef20608dc553bdadd%7
| C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638478962782506582%7CUnkno
| wn%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiL
| CJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=xmEQ7tFaEJH%2B5mnPaGhfYafRku3v5p0TLVP
| 4enG78PU%3D&reserved=0

New smatch warnings:
fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc'.
fs/smb/client/file.c:732 _cifsFileInfo_put() error: uninitialized symbol 'rc'.

Old smatch warnings:
fs/smb/client/file.c:5050 cifs_oplock_break() warn: variable dereferenced before check 'inode' (see line 5021)

vim +/rc +619 fs/smb/client/file.c

a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  601  void serverclose_work(struct work_struct *work)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  602  {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  603    struct cifsFileInfo *cifs_file = container_of(work,
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  604                    struct cifsFileInfo, serverclose);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  605
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  606    struct cifs_tcon *tcon = tlink_tcon(cifs_file->tlink);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  607
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  608    struct TCP_Server_Info *server = tcon->ses->server;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  609    int rc;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  610    int retries = 0;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  611    int MAX_RETRIES = 4;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  612
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  613    do {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  614            if (server->ops->close_getattr)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  615                    rc = server->ops->close_getattr(0, tcon, cifs_file);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  616            else if (server->ops->close)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  617                    rc = server->ops->close(0, tcon, &cifs_file->fid);

rc not intialized on else path

a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  618
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02 @619            if (rc == -EBUSY || rc == -EAGAIN) {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  620                    retries++;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  621                    msleep(250);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  622            }
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  623    } while ((rc == -EBUSY || rc == -EAGAIN) && (retries < MAX_RETRIES)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  624    );
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  625
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  626    if (retries == MAX_RETRIES)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  627            pr_warn("Serverclose failed %d times, giving up\n", MAX_RETRIES);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  628
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  629    if (cifs_file->offload)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  630            queue_work(fileinfo_put_wq, &cifs_file->put);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  631    else
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  632            cifsFileInfo_put_final(cifs_file);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  633  }
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  634
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  635  /**
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  636   * cifsFileInfo_put - release a reference of file priv data
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  637   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  638   * Always potentially wait for oplock handler. See _cifsFileInfo_put().
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  639   *
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  640   * @cifs_file:    cifs/smb3 specific info (eg refcounts) for an open file
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  641   */
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  642  void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  643  {
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  644    _cifsFileInfo_put(cifs_file, true, true);
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  645  }
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  646
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  647  /**
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  648   * _cifsFileInfo_put - release a reference of file priv data
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  649   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  650   * This may involve closing the filehandle @cifs_file out on the
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  651   * server. Must be called without holding tcon->open_file_lock,
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  652   * cinode->open_file_lock and cifs_file->file_info_lock.
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  653   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  654   * If @wait_for_oplock_handler is true and we are releasing the last
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  655   * reference, wait for any running oplock break handler of the file
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  656   * and cancel any pending one.
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  657   *
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  658   * @cifs_file:    cifs/smb3 specific info (eg refcounts) for an open file
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  659   * @wait_oplock_handler: must be false if called from oplock_break_handler
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  660   * @offload:      not offloaded on close and oplock breaks
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  661   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  662   */
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  663  void _cifsFileInfo_put(struct cifsFileInfo *cifs_file,
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  664                   bool wait_oplock_handler, bool offload)
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  665  {
2b0143b5c986be fs/cifs/file.c       David Howells    2015-03-17  666    struct inode *inode = d_inode(cifs_file->dentry);
96daf2b09178d8 fs/cifs/file.c       Steve French     2011-05-27  667    struct cifs_tcon *tcon = tlink_tcon(cifs_file->tlink);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  668    struct TCP_Server_Info *server = tcon->ses->server;
e66673e39ac9d4 fs/cifs/file.c       Pavel Shilovsky  2010-11-02  669    struct cifsInodeInfo *cifsi = CIFS_I(inode);
24261fc23db950 fs/cifs/file.c       Mateusz Guzik    2013-03-08  670    struct super_block *sb = inode->i_sb;
24261fc23db950 fs/cifs/file.c       Mateusz Guzik    2013-03-08  671    struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
2bff0659338e58 fs/cifs/file.c       Steve French     2022-10-14  672    struct cifs_fid fid = {};
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  673    struct cifs_pending_open open;
ca7df8e0bb2a5e fs/cifs/file.c       Sachin Prabhu    2015-01-15  674    bool oplock_break_cancelled;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  675    bool serverclose_offloaded = false;
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  676
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  677    spin_lock(&tcon->open_file_lock);
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  678    spin_lock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  679    spin_lock(&cifs_file->file_info_lock);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  680
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  681    cifs_file->offload = offload;
5f6dbc9e4afe4d fs/cifs/file.c       Jeff Layton      2010-10-15  682    if (--cifs_file->count > 0) {
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  683            spin_unlock(&cifs_file->file_info_lock);
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  684            spin_unlock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  685            spin_unlock(&tcon->open_file_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  686            return;
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  687    }
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  688    spin_unlock(&cifs_file->file_info_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  689
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  690    if (server->ops->get_lease_key)
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  691            server->ops->get_lease_key(inode, &fid);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  692
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  693    /* store open in pending opens to make sure we don't miss lease break */
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  694    cifs_add_pending_open_locked(&fid, cifs_file->tlink, &open);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  695
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  696    /* remove it from the lists */
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  697    list_del(&cifs_file->flist);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  698    list_del(&cifs_file->tlist);
fae8044c03c3c0 fs/cifs/file.c       Steve French     2018-10-19  699    atomic_dec(&tcon->num_local_opens);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  700
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  701    if (list_empty(&cifsi->openFileList)) {
f96637be081141 fs/cifs/file.c       Joe Perches      2013-05-04  702            cifs_dbg(FYI, "closing last open instance for inode %p\n",
2b0143b5c986be fs/cifs/file.c       David Howells    2015-03-17  703                     d_inode(cifs_file->dentry));
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  704            /*
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  705             * In strict cache mode we need invalidate mapping on the last
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  706             * close  because it may cause a error when we open this file
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  707             * again and get at least level II oplock.
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  708             */
4f8ba8a0c09593 fs/cifs/file.c       Pavel Shilovsky  2010-11-21  709            if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_STRICT_IO)
aff8d5ca7a3dca fs/cifs/file.c       Jeff Layton      2014-04-30  710                    set_bit(CIFS_INO_INVALID_MAPPING, &cifsi->flags);
c67236281c5d74 fs/cifs/file.c       Pavel Shilovsky  2010-11-03  711            cifs_set_oplock_level(cifsi, 0);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  712    }
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  713
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  714    spin_unlock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  715    spin_unlock(&tcon->open_file_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  716
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  717    oplock_break_cancelled = wait_oplock_handler ?
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  718            cancel_work_sync(&cifs_file->oplock_break) : false;
ad635942c869ad fs/cifs/file.c       Jeff Layton      2011-07-26  719
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  720    if (!tcon->need_reconnect && !cifs_file->invalidHandle) {
0ff78a221bf783 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  721            struct TCP_Server_Info *server = tcon->ses->server;
6d5786a34d98bf fs/cifs/file.c       Pavel Shilovsky  2012-06-20  722            unsigned int xid;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  723            int rc;
0ff78a221bf783 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  724
6d5786a34d98bf fs/cifs/file.c       Pavel Shilovsky  2012-06-20  725            xid = get_xid();
43f8a6a74ee244 fs/cifs/file.c       Steve French     2019-12-02  726            if (server->ops->close_getattr)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  727                    rc = server->ops->close_getattr(xid, tcon, cifs_file);
43f8a6a74ee244 fs/cifs/file.c       Steve French     2019-12-02  728            else if (server->ops->close)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  729                    rc = server->ops->close(xid, tcon, &cifs_file->fid);
760ad0cac19835 fs/cifs/file.c       Pavel Shilovsky  2012-09-25  730            _free_xid(xid);

Same

a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  731
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02 @732            if (rc == -EBUSY || rc == -EAGAIN) {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  733                    // Server close failed, hence offloading it as an async op
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  734                    queue_work(serverclose_wq, &cifs_file->serverclose);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  735                    serverclose_offloaded = true;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  736            }
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  737    }

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [linux-next:master 3307/3504] fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc'.
@ 2024-04-03  6:35 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2024-04-03  6:35 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: Ritvik Budhiraja <rbudhiraja@microsoft.com>
CC: Steve French <stfrench@microsoft.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   727900b675b749c40ba1f6669c7ae5eb7eb8e837
commit: a423dcbdabf457c0fff3669b0b20708d287c92c2 [3307/3504] smb3: retrying on failed server close
:::::: branch date: 4 hours ago
:::::: commit date: 11 hours ago
config: x86_64-randconfig-161-20240403 (https://download.01.org/0day-ci/archive/20240403/202404031415.cIBwV2aU-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202404031415.cIBwV2aU-lkp@intel.com/

New smatch warnings:
fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc'.
fs/smb/client/file.c:732 _cifsFileInfo_put() error: uninitialized symbol 'rc'.

Old smatch warnings:
fs/smb/client/file.c:5050 cifs_oplock_break() warn: variable dereferenced before check 'inode' (see line 5021)

vim +/rc +619 fs/smb/client/file.c

32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  600  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  601  void serverclose_work(struct work_struct *work)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  602  {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  603  	struct cifsFileInfo *cifs_file = container_of(work,
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  604  			struct cifsFileInfo, serverclose);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  605  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  606  	struct cifs_tcon *tcon = tlink_tcon(cifs_file->tlink);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  607  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  608  	struct TCP_Server_Info *server = tcon->ses->server;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  609  	int rc;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  610  	int retries = 0;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  611  	int MAX_RETRIES = 4;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  612  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  613  	do {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  614  		if (server->ops->close_getattr)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  615  			rc = server->ops->close_getattr(0, tcon, cifs_file);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  616  		else if (server->ops->close)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  617  			rc = server->ops->close(0, tcon, &cifs_file->fid);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  618  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02 @619  		if (rc == -EBUSY || rc == -EAGAIN) {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  620  			retries++;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  621  			msleep(250);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  622  		}
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  623  	} while ((rc == -EBUSY || rc == -EAGAIN) && (retries < MAX_RETRIES)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  624  	);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  625  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  626  	if (retries == MAX_RETRIES)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  627  		pr_warn("Serverclose failed %d times, giving up\n", MAX_RETRIES);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  628  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  629  	if (cifs_file->offload)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  630  		queue_work(fileinfo_put_wq, &cifs_file->put);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  631  	else
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  632  		cifsFileInfo_put_final(cifs_file);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  633  }
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  634  
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  635  /**
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  636   * cifsFileInfo_put - release a reference of file priv data
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  637   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  638   * Always potentially wait for oplock handler. See _cifsFileInfo_put().
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  639   *
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  640   * @cifs_file:	cifs/smb3 specific info (eg refcounts) for an open file
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  641   */
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  642  void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  643  {
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  644  	_cifsFileInfo_put(cifs_file, true, true);
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  645  }
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  646  
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  647  /**
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  648   * _cifsFileInfo_put - release a reference of file priv data
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  649   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  650   * This may involve closing the filehandle @cifs_file out on the
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  651   * server. Must be called without holding tcon->open_file_lock,
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  652   * cinode->open_file_lock and cifs_file->file_info_lock.
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  653   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  654   * If @wait_for_oplock_handler is true and we are releasing the last
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  655   * reference, wait for any running oplock break handler of the file
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  656   * and cancel any pending one.
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  657   *
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  658   * @cifs_file:	cifs/smb3 specific info (eg refcounts) for an open file
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  659   * @wait_oplock_handler: must be false if called from oplock_break_handler
607dfc79c37a0e fs/cifs/file.c       Steve French     2020-12-12  660   * @offload:	not offloaded on close and oplock breaks
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  661   *
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  662   */
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  663  void _cifsFileInfo_put(struct cifsFileInfo *cifs_file,
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  664  		       bool wait_oplock_handler, bool offload)
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  665  {
2b0143b5c986be fs/cifs/file.c       David Howells    2015-03-17  666  	struct inode *inode = d_inode(cifs_file->dentry);
96daf2b09178d8 fs/cifs/file.c       Steve French     2011-05-27  667  	struct cifs_tcon *tcon = tlink_tcon(cifs_file->tlink);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  668  	struct TCP_Server_Info *server = tcon->ses->server;
e66673e39ac9d4 fs/cifs/file.c       Pavel Shilovsky  2010-11-02  669  	struct cifsInodeInfo *cifsi = CIFS_I(inode);
24261fc23db950 fs/cifs/file.c       Mateusz Guzik    2013-03-08  670  	struct super_block *sb = inode->i_sb;
24261fc23db950 fs/cifs/file.c       Mateusz Guzik    2013-03-08  671  	struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
2bff0659338e58 fs/cifs/file.c       Steve French     2022-10-14  672  	struct cifs_fid fid = {};
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  673  	struct cifs_pending_open open;
ca7df8e0bb2a5e fs/cifs/file.c       Sachin Prabhu    2015-01-15  674  	bool oplock_break_cancelled;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  675  	bool serverclose_offloaded = false;
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  676  
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  677  	spin_lock(&tcon->open_file_lock);
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  678  	spin_lock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  679  	spin_lock(&cifs_file->file_info_lock);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  680  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  681  	cifs_file->offload = offload;
5f6dbc9e4afe4d fs/cifs/file.c       Jeff Layton      2010-10-15  682  	if (--cifs_file->count > 0) {
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  683  		spin_unlock(&cifs_file->file_info_lock);
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  684  		spin_unlock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  685  		spin_unlock(&tcon->open_file_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  686  		return;
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  687  	}
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  688  	spin_unlock(&cifs_file->file_info_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  689  
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  690  	if (server->ops->get_lease_key)
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  691  		server->ops->get_lease_key(inode, &fid);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  692  
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  693  	/* store open in pending opens to make sure we don't miss lease break */
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  694  	cifs_add_pending_open_locked(&fid, cifs_file->tlink, &open);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  695  
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  696  	/* remove it from the lists */
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  697  	list_del(&cifs_file->flist);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  698  	list_del(&cifs_file->tlist);
fae8044c03c3c0 fs/cifs/file.c       Steve French     2018-10-19  699  	atomic_dec(&tcon->num_local_opens);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  700  
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  701  	if (list_empty(&cifsi->openFileList)) {
f96637be081141 fs/cifs/file.c       Joe Perches      2013-05-04  702  		cifs_dbg(FYI, "closing last open instance for inode %p\n",
2b0143b5c986be fs/cifs/file.c       David Howells    2015-03-17  703  			 d_inode(cifs_file->dentry));
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  704  		/*
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  705  		 * In strict cache mode we need invalidate mapping on the last
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  706  		 * close  because it may cause a error when we open this file
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  707  		 * again and get at least level II oplock.
253641388a4925 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  708  		 */
4f8ba8a0c09593 fs/cifs/file.c       Pavel Shilovsky  2010-11-21  709  		if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_STRICT_IO)
aff8d5ca7a3dca fs/cifs/file.c       Jeff Layton      2014-04-30  710  			set_bit(CIFS_INO_INVALID_MAPPING, &cifsi->flags);
c67236281c5d74 fs/cifs/file.c       Pavel Shilovsky  2010-11-03  711  		cifs_set_oplock_level(cifsi, 0);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  712  	}
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  713  
1a67c415965752 fs/cifs/file.c       Pavel Shilovsky  2019-10-23  714  	spin_unlock(&cifsi->open_file_lock);
3afca265b5f53a fs/cifs/file.c       Steve French     2016-09-22  715  	spin_unlock(&tcon->open_file_lock);
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  716  
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  717  	oplock_break_cancelled = wait_oplock_handler ?
b98749cac4a695 fs/cifs/file.c       Aurelien Aptel   2019-03-29  718  		cancel_work_sync(&cifs_file->oplock_break) : false;
ad635942c869ad fs/cifs/file.c       Jeff Layton      2011-07-26  719  
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  720  	if (!tcon->need_reconnect && !cifs_file->invalidHandle) {
0ff78a221bf783 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  721  		struct TCP_Server_Info *server = tcon->ses->server;
6d5786a34d98bf fs/cifs/file.c       Pavel Shilovsky  2012-06-20  722  		unsigned int xid;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  723  		int rc;
0ff78a221bf783 fs/cifs/file.c       Pavel Shilovsky  2012-09-18  724  
6d5786a34d98bf fs/cifs/file.c       Pavel Shilovsky  2012-06-20  725  		xid = get_xid();
43f8a6a74ee244 fs/cifs/file.c       Steve French     2019-12-02  726  		if (server->ops->close_getattr)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  727  			rc = server->ops->close_getattr(xid, tcon, cifs_file);
43f8a6a74ee244 fs/cifs/file.c       Steve French     2019-12-02  728  		else if (server->ops->close)
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  729  			rc = server->ops->close(xid, tcon, &cifs_file->fid);
760ad0cac19835 fs/cifs/file.c       Pavel Shilovsky  2012-09-25  730  		_free_xid(xid);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  731  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02 @732  		if (rc == -EBUSY || rc == -EAGAIN) {
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  733  			// Server close failed, hence offloading it as an async op
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  734  			queue_work(serverclose_wq, &cifs_file->serverclose);
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  735  			serverclose_offloaded = true;
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  736  		}
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  737  	}
cdff08e76612e5 fs/cifs/file.c       Steve French     2010-10-21  738  
ca7df8e0bb2a5e fs/cifs/file.c       Sachin Prabhu    2015-01-15  739  	if (oplock_break_cancelled)
ca7df8e0bb2a5e fs/cifs/file.c       Sachin Prabhu    2015-01-15  740  		cifs_done_oplock_break(cifsi);
ca7df8e0bb2a5e fs/cifs/file.c       Sachin Prabhu    2015-01-15  741  
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  742  	cifs_del_pending_open(&open);
233839b1df65a2 fs/cifs/file.c       Pavel Shilovsky  2012-09-19  743  
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  744  	// if serverclose has been offloaded to wq (on failure), it will
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  745  	// handle offloading put as well. If serverclose not offloaded,
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  746  	// we need to handle offloading put here.
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  747  	if (!serverclose_offloaded) {
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  748  		if (offload)
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  749  			queue_work(fileinfo_put_wq, &cifs_file->put);
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  750  		else
32546a9586aa45 fs/cifs/file.c       Ronnie Sahlberg  2019-11-03  751  			cifsFileInfo_put_final(cifs_file);
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  752  	}
a423dcbdabf457 fs/smb/client/file.c Ritvik Budhiraja 2024-04-02  753  }
b33879aa834ebe fs/cifs/file.c       Jeff Layton      2010-10-15  754  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-04-05 15:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-05  6:44 [linux-next:master 3307/3504] fs/smb/client/file.c:619 serverclose_work() error: uninitialized symbol 'rc' Dan Carpenter
2024-04-05 15:19 ` [EXTERNAL] " Steven French
  -- strict thread matches above, loose matches on Subject: below --
2024-04-03  6:35 kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).