fs/cifs/sess.c:78:5: warning: stack frame size of 1168 bytes in function 'cifs_try_adding_channels'

From: kernel test robot
Date: Sun May 16 2021 - 06:12:37 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 63d1cb53e26a9a4168b84a8981b225c0a9cfa235
commit: 387ec58f339b0c45e3767395f11fa8dd3772131e cifs: simplify handling of cifs_sb/ctx->local_nls
date: 5 months ago
config: powerpc64-randconfig-r023-20210516 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project a80a5036a1f6b9a9eb4038b30458f9ab349efff8)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=387ec58f339b0c45e3767395f11fa8dd3772131e
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 387ec58f339b0c45e3767395f11fa8dd3772131e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=powerpc64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> fs/cifs/sess.c:78:5: warning: stack frame size of 1168 bytes in function 'cifs_try_adding_channels' [-Wframe-larger-than=]
int cifs_try_adding_channels(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses)
^
1 warning generated.


vim +/cifs_try_adding_channels +78 fs/cifs/sess.c

76
77 /* returns number of channels added */
> 78 int cifs_try_adding_channels(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses)
79 {
80 int old_chan_count = ses->chan_count;
81 int left = ses->chan_max - ses->chan_count;
82 int i = 0;
83 int rc = 0;
84 int tries = 0;
85 struct cifs_server_iface *ifaces = NULL;
86 size_t iface_count;
87
88 if (left <= 0) {
89 cifs_dbg(FYI,
90 "ses already at max_channels (%zu), nothing to open\n",
91 ses->chan_max);
92 return 0;
93 }
94
95 if (ses->server->dialect < SMB30_PROT_ID) {
96 cifs_dbg(VFS, "multichannel is not supported on this protocol version, use 3.0 or above\n");
97 return 0;
98 }
99
100 /*
101 * Make a copy of the iface list at the time and use that
102 * instead so as to not hold the iface spinlock for opening
103 * channels
104 */
105 spin_lock(&ses->iface_lock);
106 iface_count = ses->iface_count;
107 if (iface_count <= 0) {
108 spin_unlock(&ses->iface_lock);
109 cifs_dbg(VFS, "no iface list available to open channels\n");
110 return 0;
111 }
112 ifaces = kmemdup(ses->iface_list, iface_count*sizeof(*ifaces),
113 GFP_ATOMIC);
114 if (!ifaces) {
115 spin_unlock(&ses->iface_lock);
116 return 0;
117 }
118 spin_unlock(&ses->iface_lock);
119
120 /*
121 * Keep connecting to same, fastest, iface for all channels as
122 * long as its RSS. Try next fastest one if not RSS or channel
123 * creation fails.
124 */
125 while (left > 0) {
126 struct cifs_server_iface *iface;
127
128 tries++;
129 if (tries > 3*ses->chan_max) {
130 cifs_dbg(FYI, "too many channel open attempts (%d channels left to open)\n",
131 left);
132 break;
133 }
134
135 iface = &ifaces[i];
136 if (is_ses_using_iface(ses, iface) && !iface->rss_capable) {
137 i = (i+1) % iface_count;
138 continue;
139 }
140
141 rc = cifs_ses_add_channel(cifs_sb, ses, iface);
142 if (rc) {
143 cifs_dbg(FYI, "failed to open extra channel on iface#%d rc=%d\n",
144 i, rc);
145 i = (i+1) % iface_count;
146 continue;
147 }
148
149 cifs_dbg(FYI, "successfully opened new channel on iface#%d\n",
150 i);
151 left--;
152 }
153
154 kfree(ifaces);
155 return ses->chan_count - old_chan_count;
156 }
157

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip