Use the cam_ed copy of ata_params rather than malloc and freeing

memory for it. This reaches into internal bits of xpt a little, and
I'll clean that up later.
This commit is contained in:
Warner Losh 2019-06-24 20:23:19 +00:00
parent 6506ca91d2
commit 97ad52ca4c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=349342

View File

@ -64,6 +64,9 @@ __FBSDID("$FreeBSD$");
#include <cam/cam_ccb.h>
#include <cam/cam_periph.h>
#include <cam/cam_xpt_periph.h>
#ifdef _KERNEL
#include <cam/cam_xpt_internal.h>
#endif /* _KERNEL */
#include <cam/cam_sim.h>
#include <cam/cam_iosched.h>
@ -3613,15 +3616,7 @@ dastart(struct cam_periph *periph, union ccb *start_ccb)
break;
}
ata_params = (struct ata_params*)
malloc(sizeof(*ata_params), M_SCSIDA,M_NOWAIT|M_ZERO);
if (ata_params == NULL) {
xpt_print(periph->path, "Couldn't malloc ata_params "
"data\n");
/* da_free_periph??? */
break;
}
ata_params = &periph->path->device->ident_data;
scsi_ata_identify(&start_ccb->csio,
/*retries*/da_retry_count,
@ -5294,7 +5289,6 @@ dadone_probeata(struct cam_periph *periph, union ccb *done_ccb)
}
}
free(ata_params, M_SCSIDA);
if ((softc->zone_mode == DA_ZONE_HOST_AWARE)
|| (softc->zone_mode == DA_ZONE_HOST_MANAGED)) {
/*