All of lore.kernel.org
 help / color / mirror / Atom feed
* [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
@ 2021-01-19 19:46 ` Dan Carpenter
  0 siblings, 0 replies; 10+ messages in thread
From: Dan Carpenter @ 2021-01-19 19:46 UTC (permalink / raw)
  To: kbuild, Ilya Dryomov; +Cc: lkp, kbuild-all, linux-kernel

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@intel.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@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org

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

* net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
@ 2021-01-19 19:46 ` Dan Carpenter
  0 siblings, 0 replies; 10+ messages in thread
From: Dan Carpenter @ 2021-01-19 19:46 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 7928 bytes --]

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@intel.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(a)lists.01.org 
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org

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

* [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
@ 2021-01-19 19:46 ` Dan Carpenter
  0 siblings, 0 replies; 10+ messages in thread
From: Dan Carpenter @ 2021-01-19 19:46 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7928 bytes --]

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@intel.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(a)lists.01.org 
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org

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

* Re: [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
  2021-01-19 19:46 ` Dan Carpenter
@ 2021-01-20 11:01   ` Ilya Dryomov
  -1 siblings, 0 replies; 10+ messages in thread
From: Ilya Dryomov @ 2021-01-20 11:01 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: kbuild, kbuild test robot, kbuild-all, LKML, Ceph Development

On Tue, Jan 19, 2021 at 8:46 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
>
> 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@intel.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.

Hi Dan,

This line and the surrounding code date back to 2013, commit
2f713615ddd9 just moved it.  It is correct (we either get a message
to work with or get instructed to skip, in the latter case con->in_msg
is expected to be NULL), so I'm inclined to leave it as is.

Thanks,

                Ilya

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

* Re: [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
@ 2021-01-20 11:01   ` Ilya Dryomov
  0 siblings, 0 replies; 10+ messages in thread
From: Ilya Dryomov @ 2021-01-20 11:01 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7205 bytes --]

On Tue, Jan 19, 2021 at 8:46 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
>
> 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@intel.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.

Hi Dan,

This line and the surrounding code date back to 2013, commit
2f713615ddd9 just moved it.  It is correct (we either get a message
to work with or get instructed to skip, in the latter case con->in_msg
is expected to be NULL), so I'm inclined to leave it as is.

Thanks,

                Ilya

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

* Re: [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
  2021-01-20 11:01   ` Ilya Dryomov
  (?)
@ 2021-01-20 12:40     ` Dan Carpenter
  -1 siblings, 0 replies; 10+ messages in thread
From: Dan Carpenter @ 2021-01-20 12:40 UTC (permalink / raw)
  To: Ilya Dryomov
  Cc: kbuild, kbuild test robot, kbuild-all, LKML, Ceph Development

On Wed, Jan 20, 2021 at 12:01:59PM +0100, Ilya Dryomov wrote:
> On Tue, Jan 19, 2021 at 8:46 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> >
> > 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@intel.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.
> 
> Hi Dan,
> 
> This line and the surrounding code date back to 2013, commit
> 2f713615ddd9 just moved it.  It is correct (we either get a message
> to work with or get instructed to skip, in the latter case con->in_msg
> is expected to be NULL), so I'm inclined to leave it as is.

You could silence the warning and make the code look more intentional
by writing it like this:

	BUG_ON((!con->in_msg) ^ skip);

regards,
dan carpenter


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

* Re: net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
@ 2021-01-20 12:40     ` Dan Carpenter
  0 siblings, 0 replies; 10+ messages in thread
From: Dan Carpenter @ 2021-01-20 12:40 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 7589 bytes --]

On Wed, Jan 20, 2021 at 12:01:59PM +0100, Ilya Dryomov wrote:
> On Tue, Jan 19, 2021 at 8:46 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> >
> > 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@intel.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.
> 
> Hi Dan,
> 
> This line and the surrounding code date back to 2013, commit
> 2f713615ddd9 just moved it.  It is correct (we either get a message
> to work with or get instructed to skip, in the latter case con->in_msg
> is expected to be NULL), so I'm inclined to leave it as is.

You could silence the warning and make the code look more intentional
by writing it like this:

	BUG_ON((!con->in_msg) ^ skip);

regards,
dan carpenter

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

* Re: [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
@ 2021-01-20 12:40     ` Dan Carpenter
  0 siblings, 0 replies; 10+ messages in thread
From: Dan Carpenter @ 2021-01-20 12:40 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7589 bytes --]

On Wed, Jan 20, 2021 at 12:01:59PM +0100, Ilya Dryomov wrote:
> On Tue, Jan 19, 2021 at 8:46 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> >
> > 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@intel.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.
> 
> Hi Dan,
> 
> This line and the surrounding code date back to 2013, commit
> 2f713615ddd9 just moved it.  It is correct (we either get a message
> to work with or get instructed to skip, in the latter case con->in_msg
> is expected to be NULL), so I'm inclined to leave it as is.

You could silence the warning and make the code look more intentional
by writing it like this:

	BUG_ON((!con->in_msg) ^ skip);

regards,
dan carpenter

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

* Re: [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
  2021-01-20 12:40     ` Dan Carpenter
@ 2021-01-20 12:52       ` Ilya Dryomov
  -1 siblings, 0 replies; 10+ messages in thread
From: Ilya Dryomov @ 2021-01-20 12:52 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: kbuild, kbuild test robot, kbuild-all, LKML, Ceph Development

On Wed, Jan 20, 2021 at 1:43 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
>
> On Wed, Jan 20, 2021 at 12:01:59PM +0100, Ilya Dryomov wrote:
> > On Tue, Jan 19, 2021 at 8:46 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> > >
> > > 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@intel.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.
> >
> > Hi Dan,
> >
> > This line and the surrounding code date back to 2013, commit
> > 2f713615ddd9 just moved it.  It is correct (we either get a message
> > to work with or get instructed to skip, in the latter case con->in_msg
> > is expected to be NULL), so I'm inclined to leave it as is.
>
> You could silence the warning and make the code look more intentional
> by writing it like this:
>
>         BUG_ON((!con->in_msg) ^ skip);

OK, I'll do that.

Thanks,

                Ilya

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

* Re: [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses.
@ 2021-01-20 12:52       ` Ilya Dryomov
  0 siblings, 0 replies; 10+ messages in thread
From: Ilya Dryomov @ 2021-01-20 12:52 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7907 bytes --]

On Wed, Jan 20, 2021 at 1:43 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
>
> On Wed, Jan 20, 2021 at 12:01:59PM +0100, Ilya Dryomov wrote:
> > On Tue, Jan 19, 2021 at 8:46 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> > >
> > > 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@intel.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.
> >
> > Hi Dan,
> >
> > This line and the surrounding code date back to 2013, commit
> > 2f713615ddd9 just moved it.  It is correct (we either get a message
> > to work with or get instructed to skip, in the latter case con->in_msg
> > is expected to be NULL), so I'm inclined to leave it as is.
>
> You could silence the warning and make the code look more intentional
> by writing it like this:
>
>         BUG_ON((!con->in_msg) ^ skip);

OK, I'll do that.

Thanks,

                Ilya

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

end of thread, other threads:[~2021-01-20 14:22 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-19 19:46 [kbuild] net/ceph/messenger_v1.c:1099:23: warning: Boolean result is used in bitwise operation. Clarify expression with parentheses Dan Carpenter
2021-01-19 19:46 ` Dan Carpenter
2021-01-19 19:46 ` Dan Carpenter
2021-01-20 11:01 ` [kbuild] " Ilya Dryomov
2021-01-20 11:01   ` Ilya Dryomov
2021-01-20 12:40   ` Dan Carpenter
2021-01-20 12:40     ` Dan Carpenter
2021-01-20 12:40     ` Dan Carpenter
2021-01-20 12:52     ` [kbuild] " Ilya Dryomov
2021-01-20 12:52       ` Ilya Dryomov

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.