Author: mav
Date: Mon Feb  2 12:09:42 2015
New Revision: 278076
URL: https://svnweb.freebsd.org/changeset/base/278076

Log:
  MFC r277758: Fix several potential overflows in UNMAP code.

Modified:
  stable/10/sys/cam/scsi/scsi_da.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/cam/scsi/scsi_da.c
==============================================================================
--- stable/10/sys/cam/scsi/scsi_da.c    Mon Feb  2 11:42:35 2015        
(r278075)
+++ stable/10/sys/cam/scsi/scsi_da.c    Mon Feb  2 12:09:42 2015        
(r278076)
@@ -1914,18 +1914,18 @@ dadeletemaxsize(struct da_softc *softc, 
                sectors = (off_t)ATA_DSM_RANGE_MAX * softc->trim_max_ranges;
                break;
        case DA_DELETE_WS16:
-               sectors = (off_t)min(softc->ws_max_blks, WS16_MAX_BLKS);
+               sectors = omin(softc->ws_max_blks, WS16_MAX_BLKS);
                break;
        case DA_DELETE_ZERO:
        case DA_DELETE_WS10:
-               sectors = (off_t)min(softc->ws_max_blks, WS10_MAX_BLKS);
+               sectors = omin(softc->ws_max_blks, WS10_MAX_BLKS);
                break;
        default:
                return 0;
        }
 
        return (off_t)softc->params.secsize *
-           min(sectors, (off_t)softc->params.sectors);
+           omin(sectors, softc->params.sectors);
 }
 
 static void
@@ -2688,7 +2688,7 @@ da_delete_trim(struct cam_periph *periph
 
                /* Try to extend the previous range. */
                if (lba == lastlba) {
-                       c = min(count, ATA_DSM_RANGE_MAX - lastcount);
+                       c = omin(count, ATA_DSM_RANGE_MAX - lastcount);
                        lastcount += c;
                        off = (ranges - 1) * 8;
                        buf[off + 6] = lastcount & 0xff;
@@ -2698,7 +2698,7 @@ da_delete_trim(struct cam_periph *periph
                }
 
                while (count > 0) {
-                       c = min(count, ATA_DSM_RANGE_MAX);
+                       c = omin(count, ATA_DSM_RANGE_MAX);
                        off = ranges * 8;
 
                        buf[off + 0] = lba & 0xff;
@@ -2774,7 +2774,7 @@ da_delete_ws(struct cam_periph *periph, 
                            "%s issuing short delete %ld > %ld\n",
                            da_delete_method_desc[softc->delete_method],
                            count, ws_max_blks);
-                       count = min(count, ws_max_blks);
+                       count = omin(count, ws_max_blks);
                        break;
                }
                bp1 = bioq_first(&softc->delete_queue);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "[email protected]"

Reply via email to