Author: mav
Date: Wed Mar 31 07:52:48 2010
New Revision: 205969
URL: http://svn.freebsd.org/changeset/base/205969

Log:
  MFC r205074:
  Mask disk_idx to avoid panic because of extra bits set.
  
  PR:             kern/102211
  Submitted by:   yoichi

Modified:
  stable/7/sys/dev/ata/ata-raid.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/cddl/contrib/opensolaris/   (props changed)
  stable/7/sys/contrib/dev/acpica/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/dev/ata/ata-raid.c
==============================================================================
--- stable/7/sys/dev/ata/ata-raid.c     Wed Mar 31 07:49:59 2010        
(r205968)
+++ stable/7/sys/dev/ata/ata-raid.c     Wed Mar 31 07:52:48 2010        
(r205969)
@@ -2535,22 +2535,24 @@ ata_raid_intel_read_meta(device_t dev, s
 
            /* clear out any old info */
            for (disk = 0; disk < raid->total_disks; disk++) {
+               u_int disk_idx = map->disk_idx[disk] & 0xffff;
+
                raid->disks[disk].dev = NULL;
-               bcopy(meta->disk[map->disk_idx[disk]].serial,
+               bcopy(meta->disk[disk_idx].serial,
                      raid->disks[disk].serial,
                      sizeof(raid->disks[disk].serial));
                raid->disks[disk].sectors =
-                   meta->disk[map->disk_idx[disk]].sectors;
+                   meta->disk[disk_idx].sectors;
                raid->disks[disk].flags = 0;
-               if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_ONLINE)
+               if (meta->disk[disk_idx].flags & INTEL_F_ONLINE)
                    raid->disks[disk].flags |= AR_DF_ONLINE;
-               if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_ASSIGNED)
+               if (meta->disk[disk_idx].flags & INTEL_F_ASSIGNED)
                    raid->disks[disk].flags |= AR_DF_ASSIGNED;
-               if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_SPARE) {
+               if (meta->disk[disk_idx].flags & INTEL_F_SPARE) {
                    raid->disks[disk].flags &= ~(AR_DF_ONLINE | AR_DF_ASSIGNED);
                    raid->disks[disk].flags |= AR_DF_SPARE;
                }
-               if (meta->disk[map->disk_idx[disk]].flags & INTEL_F_DOWN)
+               if (meta->disk[disk_idx].flags & INTEL_F_DOWN)
                    raid->disks[disk].flags &= ~AR_DF_ONLINE;
            }
        }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to