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.
This commit is contained in:
Warner Losh 2019-06-24 20:18:49 +00:00
parent 0a944371e8
commit 161d2a1796
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=349339

View File

@ -896,22 +896,14 @@ device_fail: if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0)
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 @@ device_fail: if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0)
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) &&