md-cluster: metadata_update_finish: consistently use cmsg.raid_slot as le32
authorNeilBrown <neilb@suse.com>
Fri, 16 Oct 2015 02:48:35 +0000 (13:48 +1100)
committerNeilBrown <neilb@suse.com>
Fri, 16 Oct 2015 02:48:35 +0000 (13:48 +1100)
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: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: NeilBrown <neilb@suse.com>
drivers/md/md-cluster.c

index 35ac2e8cb7f13c2b2c4bbeea3bdeb6089ef49629..aad5e7cda523e1cd925d77e8c6f08df32517ce23 100644 (file)
@@ -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;