aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Tomasz Napierala <trasz@FreeBSD.org>2020-12-29 14:25:46 +0000
committerEdward Tomasz Napierala <trasz@FreeBSD.org>2020-12-29 14:26:06 +0000
commit3e404b8c53db56bdb0aca6a491b095266326211c (patch)
tree95f9c47c651c7188963aa66db849214fd2335436
parent4ddb3cc5973b94b0502e1683accac87998235857 (diff)
downloadsrc-3e404b8c53db56bdb0aca6a491b095266326211c.tar.gz
src-3e404b8c53db56bdb0aca6a491b095266326211c.zip
libcam(3): make cam_getccb(3) zero the whole ccb, not just the header
Leaving zeroing to the clients leads to error-prone pointer tricks (zeroing needs to preserve the CCB header), and this code is not performance-critical, so there's really no reason to not do it. Reviewed By: imp, rpokala (manpages) Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D27333
-rw-r--r--lib/libcam/cam.36
-rw-r--r--lib/libcam/camlib.c3
2 files changed, 4 insertions, 5 deletions
diff --git a/lib/libcam/cam.3 b/lib/libcam/cam.3
index a13b580f847e..5e8eb61698c4 100644
--- a/lib/libcam/cam.3
+++ b/lib/libcam/cam.3
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 6, 2020
+.Dd November 23, 2020
.Dt CAM 3
.Os
.Sh NAME
@@ -285,9 +285,9 @@ This function should be called when the
structure was allocated by the caller, rather than the CAM library.
.Pp
.Fn cam_getccb
-allocates a CCB
+allocates a prezeroed CCB
using
-.Xr malloc 3
+.Xr calloc 3
and sets fields in the CCB header using values from the
.Va cam_device
structure.
diff --git a/lib/libcam/camlib.c b/lib/libcam/camlib.c
index 40242958bfaf..438b0e502fe0 100644
--- a/lib/libcam/camlib.c
+++ b/lib/libcam/camlib.c
@@ -79,9 +79,8 @@ cam_getccb(struct cam_device *dev)
{
union ccb *ccb;
- ccb = (union ccb *)malloc(sizeof(union ccb));
+ ccb = calloc(1, sizeof(*ccb));
if (ccb != NULL) {
- bzero(&ccb->ccb_h, sizeof(struct ccb_hdr));
ccb->ccb_h.path_id = dev->path_id;
ccb->ccb_h.target_id = dev->target_id;
ccb->ccb_h.target_lun = dev->target_lun;