All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [mkl-can-next:bcm 3/3] net/can/bcm.c:1327 bcm_sendmsg() warn: bitwise AND condition is false here
Date: Mon, 29 May 2023 05:55:31 +0800	[thread overview]
Message-ID: <202305290502.yglyCoui-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-can@vger.kernel.org
TO: "Marc Kleine-Budde" <mkl@pengutronix.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git bcm
head:   78f1f58dba2bfcafe5affbedd074a0a84dea2dc6
commit: 78f1f58dba2bfcafe5affbedd074a0a84dea2dc6 [3/3] can: bcm: add support for MSG_CMSG_COMPAT
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: i386-randconfig-m021-20230525 (https://download.01.org/0day-ci/archive/20230529/202305290502.yglyCoui-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202305290502.yglyCoui-lkp@intel.com/

New smatch warnings:
net/can/bcm.c:1327 bcm_sendmsg() warn: bitwise AND condition is false here
net/can/bcm.c:1719 bcm_recvmsg() warn: bitwise AND condition is false here

Old smatch warnings:
net/can/bcm.c:1205 bcm_rx_setup() warn: is 'op->frames' large enough for 'struct canfd_frame'? 0

vim +1327 net/can/bcm.c

ffd980f976e7fd Oliver Hartkopp   2007-11-16  1311  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1312  /*
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1313   * bcm_sendmsg - process BCM commands (opcodes) from the userspace
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1314   */
1b784140474e4f Ying Xue          2015-03-02  1315  static int bcm_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1316  {
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1317  	struct sock *sk = sock->sk;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1318  	struct bcm_sock *bo = bcm_sk(sk);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1319  	int ifindex = bo->ifindex; /* default ifindex for this bcm_op */
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1320  	struct bcm_msg_head msg_head;
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1321  	int cfsiz, msg_head_size;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1322  	int ret; /* read bytes or error codes as return value */
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1323  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1324  	if (!bo->bound)
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1325  		return -ENOTCONN;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1326  
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18 @1327  	if (msg->msg_flags & MSG_CMSG_COMPAT) {
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1328  		struct bcm_msg_head_compat msg_head_compat;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1329  
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1330  		msg_head_size = sizeof(msg_head_compat);
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1331  
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1332  		/* check for valid message length from userspace */
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1333  		if (size < msg_head_size)
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1334  			return -EINVAL;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1335  
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1336  		/* read message head information */
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1337  		ret = memcpy_from_msg(&msg_head_compat, msg, msg_head_size);
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1338  		if (ret < 0)
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1339  			return ret;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1340  
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1341  		msg_head.opcode = msg_head_compat.opcode;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1342  		msg_head.flags = msg_head_compat.flags;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1343  		msg_head.count = msg_head_compat.count;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1344  		msg_head.ival1.tv_sec = msg_head_compat.ival1.tv_sec;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1345  		msg_head.ival1.tv_usec = msg_head_compat.ival1.tv_usec;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1346  		msg_head.ival2.tv_sec = msg_head_compat.ival2.tv_sec;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1347  		msg_head.ival2.tv_usec = msg_head_compat.ival2.tv_usec;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1348  		msg_head.can_id = msg_head_compat.can_id;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1349  		msg_head.nframes = msg_head_compat.nframes;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1350  	} else {
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1351  		msg_head_size = sizeof(msg_head);
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1352  
7f2d38eb7a42be Oliver Hartkopp   2008-07-05  1353  		/* check for valid message length from userspace */
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1354  		if (size < msg_head_size)
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1355  			return -EINVAL;
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1356  
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1357  		/* read message head information */
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1358  		ret = memcpy_from_msg((u8 *)&msg_head, msg, msg_head_size);
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1359  		if (ret < 0)
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1360  			return ret;
78f1f58dba2bfc Marc Kleine-Budde 2023-05-18  1361  	}
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1362  
6f3b911d5f29b9 Oliver Hartkopp   2016-06-17  1363  	cfsiz = CFSIZ(msg_head.flags);
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1364  	if ((size - msg_head_size) % cfsiz)
7f2d38eb7a42be Oliver Hartkopp   2008-07-05  1365  		return -EINVAL;
7f2d38eb7a42be Oliver Hartkopp   2008-07-05  1366  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1367  	/* check for alternative ifindex for this bcm_op */
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1368  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1369  	if (!ifindex && msg->msg_name) {
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1370  		/* no bound device as default => check msg_name */
342dfc306fb321 Steffen Hurrle    2014-01-17  1371  		DECLARE_SOCKADDR(struct sockaddr_can *, addr, msg->msg_name);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1372  
9e9714742fb704 Oliver Hartkopp   2021-03-25  1373  		if (msg->msg_namelen < BCM_MIN_NAMELEN)
5e5073280379d3 Kurt Van Dijck    2011-01-15  1374  			return -EINVAL;
5e5073280379d3 Kurt Van Dijck    2011-01-15  1375  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1376  		if (addr->can_family != AF_CAN)
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1377  			return -EINVAL;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1378  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1379  		/* ifindex from sendto() */
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1380  		ifindex = addr->can_ifindex;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1381  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1382  		if (ifindex) {
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1383  			struct net_device *dev;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1384  
384317ef4187f5 Oliver Hartkopp   2017-04-25  1385  			dev = dev_get_by_index(sock_net(sk), ifindex);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1386  			if (!dev)
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1387  				return -ENODEV;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1388  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1389  			if (dev->type != ARPHRD_CAN) {
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1390  				dev_put(dev);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1391  				return -ENODEV;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1392  			}
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1393  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1394  			dev_put(dev);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1395  		}
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1396  	}
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1397  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1398  	lock_sock(sk);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1399  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1400  	switch (msg_head.opcode) {
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1401  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1402  	case TX_SETUP:
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1403  		ret = bcm_tx_setup(&msg_head, msg, ifindex, sk);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1404  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1405  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1406  	case RX_SETUP:
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1407  		ret = bcm_rx_setup(&msg_head, msg, ifindex, sk);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1408  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1409  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1410  	case TX_DELETE:
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1411  		if (bcm_delete_tx_op(&bo->tx_ops, &msg_head, ifindex))
1194c6955f0c82 Marc Kleine-Budde 2023-05-18  1412  			ret = 0;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1413  		else
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1414  			ret = -EINVAL;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1415  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1416  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1417  	case RX_DELETE:
2b5f5f5dc11421 Oliver Hartkopp   2016-06-17  1418  		if (bcm_delete_rx_op(&bo->rx_ops, &msg_head, ifindex))
1194c6955f0c82 Marc Kleine-Budde 2023-05-18  1419  			ret = 0;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1420  		else
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1421  			ret = -EINVAL;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1422  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1423  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1424  	case TX_READ:
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1425  		/* reuse msg_head for the reply to TX_READ */
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1426  		msg_head.opcode  = TX_STATUS;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1427  		ret = bcm_read_op(&bo->tx_ops, &msg_head, ifindex);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1428  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1429  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1430  	case RX_READ:
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1431  		/* reuse msg_head for the reply to RX_READ */
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1432  		msg_head.opcode  = RX_STATUS;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1433  		ret = bcm_read_op(&bo->rx_ops, &msg_head, ifindex);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1434  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1435  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1436  	case TX_SEND:
72c8a89ad2e4de Oliver Hartkopp   2016-06-17  1437  		/* we need exactly one CAN frame behind the msg head */
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1438  		if ((msg_head.nframes != 1) || (size != cfsiz + msg_head_size))
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1439  			ret = -EINVAL;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1440  		else
6f3b911d5f29b9 Oliver Hartkopp   2016-06-17  1441  			ret = bcm_tx_send(msg, ifindex, sk, cfsiz);
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1442  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1443  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1444  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1445  	default:
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1446  		ret = -EINVAL;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1447  		break;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1448  	}
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1449  
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1450  	release_sock(sk);
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1451  
1194c6955f0c82 Marc Kleine-Budde 2023-05-18  1452  	if (ret < 0)
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1453  		return ret;
1194c6955f0c82 Marc Kleine-Budde 2023-05-18  1454  
b3cfa83eaa4ae2 Marc Kleine-Budde 2023-05-18  1455  	return ret + msg_head_size;
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1456  }
ffd980f976e7fd Oliver Hartkopp   2007-11-16  1457  

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

             reply	other threads:[~2023-05-28 21:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-28 21:55 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-05-27  2:22 [mkl-can-next:bcm 3/3] net/can/bcm.c:1327 bcm_sendmsg() warn: bitwise AND condition is false here kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202305290502.yglyCoui-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.