Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Aug 2019 02:11:09 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r350723 - stable/12/sys/cam/ata
Message-ID:  <201908080211.x782B99V028602@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Thu Aug  8 02:11:08 2019
New Revision: 350723
URL: https://svnweb.freebsd.org/changeset/base/350723

Log:
  MFC r349339 (by imp):
  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:
  stable/12/sys/cam/ata/ata_xpt.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/cam/ata/ata_xpt.c
==============================================================================
--- stable/12/sys/cam/ata/ata_xpt.c	Thu Aug  8 02:08:09 2019	(r350722)
+++ stable/12/sys/cam/ata/ata_xpt.c	Thu Aug  8 02:11:08 2019	(r350723)
@@ -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) &&



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201908080211.x782B99V028602>