Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba2746b0 authored by NeilBrown's avatar NeilBrown
Browse files

md-cluster: metadata_update_finish: consistently use cmsg.raid_slot as le32



As cmsg.raid_slot is le32, comparing for >0 is not meaningful.

So introduce cpu-endian 'raid_slot' and only assign to cmsg.raid_slot
when we know value is valid.

Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.com>
parent c2a06c38
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -847,20 +847,21 @@ static int metadata_update_finish(struct mddev *mddev)
	struct cluster_msg cmsg;
	struct md_rdev *rdev;
	int ret = 0;
	int raid_slot = -1;

	memset(&cmsg, 0, sizeof(cmsg));
	cmsg.type = cpu_to_le32(METADATA_UPDATED);
	cmsg.raid_slot = -1;
	/* Pick up a good active device number to send.
	 */
	rdev_for_each(rdev, mddev)
		if (rdev->raid_disk > -1 && !test_bit(Faulty, &rdev->flags)) {
			cmsg.raid_slot = cpu_to_le32(rdev->desc_nr);
			raid_slot = rdev->desc_nr;
			break;
		}
	if (cmsg.raid_slot >= 0)
	if (raid_slot >= 0) {
		cmsg.raid_slot = cpu_to_le32(raid_slot);
		ret = __sendmsg(cinfo, &cmsg);
	else
	} else
		pr_warn("md-cluster: No good device id found to send\n");
	unlock_comm(cinfo);
	return ret;