[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202105300137.o6T8QK0q-lkp@intel.com>
Date: Sun, 30 May 2021 01:48:43 +0800
From: kernel test robot <lkp@...el.com>
To: jmaloy@...hat.com, netdev@...r.kernel.org, davem@...emloft.net
Cc: kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
tipc-discussion@...ts.sourceforge.net,
tung.q.nguyen@...tech.com.au, hoang.h.le@...tech.com.au,
tuong.t.lien@...tech.com.au, jmaloy@...hat.com, maloy@...jonn.com,
xinl@...hat.com, ying.xue@...driver.com
Subject: Re: [net-next 3/3] tipc: simplify handling of lookup scope during
multicast message reception
Hi,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/jmaloy-redhat-com/tipc-some-small-cleanups/20210529-231533
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 015dbf5662fd689d581c0bc980711b073ca09a1a
config: x86_64-randconfig-a005-20210529 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project bc6799f2f79f0ae87e9f1ebf9d25ba799fbd25a9)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/5ba80be36645dc45d04e6fc15b27a538269f6b1e
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review jmaloy-redhat-com/tipc-some-small-cleanups/20210529-231533
git checkout 5ba80be36645dc45d04e6fc15b27a538269f6b1e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All warnings (new ones prefixed by >>):
>> net/tipc/socket.c:1220:15: warning: implicit conversion from 'int' to 'signed char' changes value from 255 to -1 [-Wconstant-conversion]
ua.scope = TIPC_ANY_SCOPE;
~ ^~~~~~~~~~~~~~
net/tipc/name_table.h:54:24: note: expanded from macro 'TIPC_ANY_SCOPE'
#define TIPC_ANY_SCOPE 255
^~~
1 warning generated.
vim +1220 net/tipc/socket.c
1183
1184 /**
1185 * tipc_sk_mcast_rcv - Deliver multicast messages to all destination sockets
1186 * @net: the associated network namespace
1187 * @arrvq: queue with arriving messages, to be cloned after destination lookup
1188 * @inputq: queue with cloned messages, delivered to socket after dest lookup
1189 *
1190 * Multi-threaded: parallel calls with reference to same queues may occur
1191 */
1192 void tipc_sk_mcast_rcv(struct net *net, struct sk_buff_head *arrvq,
1193 struct sk_buff_head *inputq)
1194 {
1195 u32 self = tipc_own_addr(net);
1196 struct sk_buff *skb, *_skb;
1197 u32 portid, onode;
1198 struct sk_buff_head tmpq;
1199 struct list_head dports;
1200 struct tipc_msg *hdr;
1201 struct tipc_uaddr ua;
1202 int user, mtyp, hlen;
1203
1204 __skb_queue_head_init(&tmpq);
1205 INIT_LIST_HEAD(&dports);
1206 ua.addrtype = TIPC_SERVICE_RANGE;
1207
1208 /* tipc_skb_peek() increments the head skb's reference counter */
1209 skb = tipc_skb_peek(arrvq, &inputq->lock);
1210 for (; skb; skb = tipc_skb_peek(arrvq, &inputq->lock)) {
1211 hdr = buf_msg(skb);
1212 user = msg_user(hdr);
1213 mtyp = msg_type(hdr);
1214 hlen = skb_headroom(skb) + msg_hdr_sz(hdr);
1215 onode = msg_orignode(hdr);
1216 ua.sr.type = msg_nametype(hdr);
1217 ua.sr.lower = msg_namelower(hdr);
1218 ua.sr.upper = msg_nameupper(hdr);
1219 if (onode == self)
> 1220 ua.scope = TIPC_ANY_SCOPE;
1221 else
1222 ua.scope = TIPC_CLUSTER_SCOPE;
1223
1224 if (mtyp == TIPC_GRP_UCAST_MSG || user == GROUP_PROTOCOL) {
1225 spin_lock_bh(&inputq->lock);
1226 if (skb_peek(arrvq) == skb) {
1227 __skb_dequeue(arrvq);
1228 __skb_queue_tail(inputq, skb);
1229 }
1230 kfree_skb(skb);
1231 spin_unlock_bh(&inputq->lock);
1232 continue;
1233 }
1234
1235 /* Group messages require exact scope match */
1236 if (msg_in_group(hdr)) {
1237 ua.sr.lower = 0;
1238 ua.sr.upper = ~0;
1239 ua.scope = msg_lookup_scope(hdr);
1240 }
1241
1242 /* Create destination port list: */
1243 tipc_nametbl_lookup_mcast_sockets(net, &ua, &dports);
1244
1245 /* Clone message per destination */
1246 while (tipc_dest_pop(&dports, NULL, &portid)) {
1247 _skb = __pskb_copy(skb, hlen, GFP_ATOMIC);
1248 if (_skb) {
1249 msg_set_destport(buf_msg(_skb), portid);
1250 __skb_queue_tail(&tmpq, _skb);
1251 continue;
1252 }
1253 pr_warn("Failed to clone mcast rcv buffer\n");
1254 }
1255 /* Append clones to inputq only if skb is still head of arrvq */
1256 spin_lock_bh(&inputq->lock);
1257 if (skb_peek(arrvq) == skb) {
1258 skb_queue_splice_tail_init(&tmpq, inputq);
1259 /* Decrement the skb's refcnt */
1260 kfree_skb(__skb_dequeue(arrvq));
1261 }
1262 spin_unlock_bh(&inputq->lock);
1263 __skb_queue_purge(&tmpq);
1264 kfree_skb(skb);
1265 }
1266 tipc_sk_rcv(net, inputq);
1267 }
1268
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (37863 bytes)
Powered by blists - more mailing lists