summaryrefslogtreecommitdiffstats
path: root/sys/cam/ctl/ctl_tpc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cam/ctl/ctl_tpc.c')
-rw-r--r--sys/cam/ctl/ctl_tpc.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/sys/cam/ctl/ctl_tpc.c b/sys/cam/ctl/ctl_tpc.c
index 60ae8a0..2b82212 100644
--- a/sys/cam/ctl/ctl_tpc.c
+++ b/sys/cam/ctl/ctl_tpc.c
@@ -1678,6 +1678,10 @@ ctl_extended_copy_lid1(struct ctl_scsiio *ctsio)
return (CTL_RETVAL_COMPLETE);
done:
+ if (ctsio->io_hdr.flags & CTL_FLAG_ALLOCATED) {
+ free(ctsio->kern_data_ptr, M_CTL);
+ ctsio->io_hdr.flags &= ~CTL_FLAG_ALLOCATED;
+ }
ctl_done((union ctl_io *)ctsio);
return (CTL_RETVAL_COMPLETE);
}
@@ -1801,6 +1805,10 @@ ctl_extended_copy_lid4(struct ctl_scsiio *ctsio)
return (CTL_RETVAL_COMPLETE);
done:
+ if (ctsio->io_hdr.flags & CTL_FLAG_ALLOCATED) {
+ free(ctsio->kern_data_ptr, M_CTL);
+ ctsio->io_hdr.flags &= ~CTL_FLAG_ALLOCATED;
+ }
ctl_done((union ctl_io *)ctsio);
return (CTL_RETVAL_COMPLETE);
}
@@ -1978,8 +1986,10 @@ ctl_populate_token(struct ctl_scsiio *ctsio)
return (CTL_RETVAL_COMPLETE);
done:
- if (ctsio->io_hdr.flags & CTL_FLAG_ALLOCATED)
+ if (ctsio->io_hdr.flags & CTL_FLAG_ALLOCATED) {
free(ctsio->kern_data_ptr, M_CTL);
+ ctsio->io_hdr.flags &= ~CTL_FLAG_ALLOCATED;
+ }
ctl_done((union ctl_io *)ctsio);
return (CTL_RETVAL_COMPLETE);
}
@@ -2103,8 +2113,10 @@ ctl_write_using_token(struct ctl_scsiio *ctsio)
return (CTL_RETVAL_COMPLETE);
done:
- if (ctsio->io_hdr.flags & CTL_FLAG_ALLOCATED)
+ if (ctsio->io_hdr.flags & CTL_FLAG_ALLOCATED) {
free(ctsio->kern_data_ptr, M_CTL);
+ ctsio->io_hdr.flags &= ~CTL_FLAG_ALLOCATED;
+ }
ctl_done((union ctl_io *)ctsio);
return (CTL_RETVAL_COMPLETE);
}
OpenPOWER on IntegriCloud