Author: imp
Date: Tue Jun 25 06:14:16 2019
New Revision: 349357
URL: https://svnweb.freebsd.org/changeset/base/349357

Log:
  Replay r349339 by imp accidentally reverted by r349352
  
  Go ahead and completely fix the ata_params before calling the veto
  function. This breaks nothing that uses it in the tree since
  ata_params is ignored in storvsc_ada_probe_veto which is the only
  in-tree consumer.

Modified:
  head/sys/cam/ata/ata_xpt.c

Modified: head/sys/cam/ata/ata_xpt.c
==============================================================================
--- head/sys/cam/ata/ata_xpt.c  Tue Jun 25 06:14:11 2019        (r349356)
+++ head/sys/cam/ata/ata_xpt.c  Tue Jun 25 06:14:16 2019        (r349357)
@@ -896,22 +896,14 @@ noerror:
                int16_t *ptr;
                int veto = 0;
 
+               /*
+                * Convert to host byte order, and fix the strings.
+                */
                ident_buf = &softc->ident_data;
                for (ptr = (int16_t *)ident_buf;
                     ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; 
ptr++) {
                        *ptr = le16toh(*ptr);
                }
-
-               /*
-                * Allow others to veto this ATA disk attachment.  This
-                * is mainly used by VMs, whose disk controllers may
-                * share the disks with the simulated ATA controllers.
-                */
-               EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto);
-               if (veto) {
-                       goto device_fail;
-               }
-
                if (strncmp(ident_buf->model, "FX", 2) &&
                    strncmp(ident_buf->model, "NEC", 3) &&
                    strncmp(ident_buf->model, "Pioneer", 7) &&
@@ -926,6 +918,17 @@ noerror:
                ata_bpack(ident_buf->revision, ident_buf->revision, 
sizeof(ident_buf->revision));
                ata_btrim(ident_buf->serial, sizeof(ident_buf->serial));
                ata_bpack(ident_buf->serial, ident_buf->serial, 
sizeof(ident_buf->serial));
+
+               /*
+                * Allow others to veto this ATA disk attachment.  This
+                * is mainly used by VMs, whose disk controllers may
+                * share the disks with the simulated ATA controllers.
+                */
+               EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto);
+               if (veto) {
+                       goto device_fail;
+               }
+
                /* Device may need spin-up before IDENTIFY become valid. */
                if ((ident_buf->specconf == 0x37c8 ||
                     ident_buf->specconf == 0x738c) &&
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to