lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210119194646.GA20820@kadam>
Date:   Tue, 19 Jan 2021 22:46:47 +0300
From:   Dan Carpenter <dan.carpenter@...cle.com>
To:     kbuild@...ts.01.org, Ilya Dryomov <idryomov@...il.com>
Cc:     lkp@...el.com, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org
Subject: [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is
 used in bitwise operation. Clarify expression with parentheses.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git  master
head:   1e2a199f6ccdc15cf111d68d212e2fd4ce65682e
commit: 2f713615ddd9d805b6c5e79c52e0e11af99d2bf1 libceph: move msgr1 protocol implementation to its own file
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses. [clarifyCondition]
     BUG_ON(!con->in_msg ^ skip);
                         ^

vim +1099 net/ceph/messenger_v1.c

2f713615ddd9d805 Ilya Dryomov 2020-11-12  1033  static int read_partial_message(struct ceph_connection *con)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1034  {
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1035  	struct ceph_msg *m = con->in_msg;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1036  	int size;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1037  	int end;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1038  	int ret;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1039  	unsigned int front_len, middle_len, data_len;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1040  	bool do_datacrc = !ceph_test_opt(from_msgr(con->msgr), NOCRC);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1041  	bool need_sign = (con->peer_features & CEPH_FEATURE_MSG_AUTH);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1042  	u64 seq;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1043  	u32 crc;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1044  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1045  	dout("read_partial_message con %p msg %p\n", con, m);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1046  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1047  	/* header */
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1048  	size = sizeof (con->in_hdr);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1049  	end = size;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1050  	ret = read_partial(con, end, size, &con->in_hdr);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1051  	if (ret <= 0)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1052  		return ret;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1053  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1054  	crc = crc32c(0, &con->in_hdr, offsetof(struct ceph_msg_header, crc));
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1055  	if (cpu_to_le32(crc) != con->in_hdr.crc) {
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1056  		pr_err("read_partial_message bad hdr crc %u != expected %u\n",
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1057  		       crc, con->in_hdr.crc);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1058  		return -EBADMSG;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1059  	}
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1060  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1061  	front_len = le32_to_cpu(con->in_hdr.front_len);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1062  	if (front_len > CEPH_MSG_MAX_FRONT_LEN)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1063  		return -EIO;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1064  	middle_len = le32_to_cpu(con->in_hdr.middle_len);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1065  	if (middle_len > CEPH_MSG_MAX_MIDDLE_LEN)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1066  		return -EIO;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1067  	data_len = le32_to_cpu(con->in_hdr.data_len);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1068  	if (data_len > CEPH_MSG_MAX_DATA_LEN)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1069  		return -EIO;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1070  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1071  	/* verify seq# */
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1072  	seq = le64_to_cpu(con->in_hdr.seq);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1073  	if ((s64)seq - (s64)con->in_seq < 1) {
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1074  		pr_info("skipping %s%lld %s seq %lld expected %lld\n",
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1075  			ENTITY_NAME(con->peer_name),
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1076  			ceph_pr_addr(&con->peer_addr),
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1077  			seq, con->in_seq + 1);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1078  		con->in_base_pos = -front_len - middle_len - data_len -
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1079  			sizeof_footer(con);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1080  		con->in_tag = CEPH_MSGR_TAG_READY;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1081  		return 1;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1082  	} else if ((s64)seq - (s64)con->in_seq > 1) {
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1083  		pr_err("read_partial_message bad seq %lld expected %lld\n",
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1084  		       seq, con->in_seq + 1);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1085  		con->error_msg = "bad message sequence # for incoming message";
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1086  		return -EBADE;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1087  	}
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1088  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1089  	/* allocate message? */
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1090  	if (!con->in_msg) {
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1091  		int skip = 0;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1092  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1093  		dout("got hdr type %d front %d data %d\n", con->in_hdr.type,
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1094  		     front_len, data_len);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1095  		ret = ceph_con_in_msg_alloc(con, &con->in_hdr, &skip);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1096  		if (ret < 0)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1097  			return ret;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1098  
2f713615ddd9d805 Ilya Dryomov 2020-11-12 @1099  		BUG_ON(!con->in_msg ^ skip);

! has higher precedence than ^.  It's not clear that was intended
necessarily.

2f713615ddd9d805 Ilya Dryomov 2020-11-12  1100  		if (skip) {
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1101  			/* skip this message */
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1102  			dout("alloc_msg said skip message\n");
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1103  			con->in_base_pos = -front_len - middle_len - data_len -
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1104  				sizeof_footer(con);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1105  			con->in_tag = CEPH_MSGR_TAG_READY;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1106  			con->in_seq++;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1107  			return 1;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1108  		}
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1109  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1110  		BUG_ON(!con->in_msg);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1111  		BUG_ON(con->in_msg->con != con);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1112  		m = con->in_msg;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1113  		m->front.iov_len = 0;    /* haven't read it yet */
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1114  		if (m->middle)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1115  			m->middle->vec.iov_len = 0;
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1116  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1117  		/* prepare for data payload, if any */
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1118  
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1119  		if (data_len)
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1120  			prepare_message_data(con->in_msg, data_len);
2f713615ddd9d805 Ilya Dryomov 2020-11-12  1121  	}

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org 
_______________________________________________
kbuild mailing list -- kbuild@...ts.01.org
To unsubscribe send an email to kbuild-leave@...ts.01.org

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ