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
This commit is contained in:
Edward Tomasz Napierala 2020-12-29 14:25:46 +00:00
parent 4ddb3cc597
commit 3e404b8c53
2 changed files with 4 additions and 5 deletions

View File

@ -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.

View File

@ -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;