Author: asomers
Date: Wed May  3 19:56:55 2017
New Revision: 317759
URL: https://svnweb.freebsd.org/changeset/base/317759

Log:
  Fix memory leaks in camcontrol
  
  Reported by:  Coverity
  CID:          1331674, 1331675
  Reviewed by:  ken
  MFC after:    3 weeks
  Sponsored by: Spectra Logic Corp
  Differential Revision:        https://reviews.freebsd.org/D10588

Modified:
  head/sbin/camcontrol/fwdownload.c

Modified: head/sbin/camcontrol/fwdownload.c
==============================================================================
--- head/sbin/camcontrol/fwdownload.c   Wed May  3 19:53:01 2017        
(r317758)
+++ head/sbin/camcontrol/fwdownload.c   Wed May  3 19:56:55 2017        
(r317759)
@@ -550,8 +550,7 @@ fw_validate_ibm(struct cam_device *dev, 
                fprintf(stdout, "Firmware file is valid for this drive.\n");
        retval = 0;
 bailout:
-       if (ccb != NULL)
-               cam_freeccb(ccb);
+       cam_freeccb(ccb);
 
        return (retval);
 }
@@ -753,8 +752,8 @@ fw_check_device_ready(struct cam_device 
                goto bailout;
        }
 bailout:
-       if (ccb != NULL)
-               cam_freeccb(ccb);
+       free(ptr);
+       cam_freeccb(ccb);
 
        return (retval);
 }
@@ -913,8 +912,7 @@ fw_download_img(struct cam_device *cam_d
 bailout:
        if (quiet == 0)
                progress_complete(&progress, size - img_size);
-       if (ccb != NULL)
-               cam_freeccb(ccb);
+       cam_freeccb(ccb);
        return (retval);
 }
 
@@ -923,6 +921,7 @@ fwdownload(struct cam_device *device, in
     char *combinedopt, int printerrors, int task_attr, int retry_count,
     int timeout)
 {
+       union ccb *ccb = NULL;
        struct fw_vendor *vp;
        char *fw_img_path = NULL;
        struct ata_params *ident_buf = NULL;
@@ -965,8 +964,6 @@ fwdownload(struct cam_device *device, in
 
        if ((devtype == CC_DT_ATA)
         || (devtype == CC_DT_ATA_BEHIND_SCSI)) {
-               union ccb *ccb;
-
                ccb = cam_getccb(device);
                if (ccb == NULL) {
                        warnx("couldn't allocate CCB");
@@ -976,7 +973,6 @@ fwdownload(struct cam_device *device, in
 
                if (ata_do_identify(device, retry_count, timeout, ccb,
                                    &ident_buf) != 0) {
-                       cam_freeccb(ccb);
                        retval = 1;
                        goto bailout;
                }
@@ -1048,6 +1044,7 @@ fwdownload(struct cam_device *device, in
                fprintf(stdout, "Firmware download successful\n");
 
 bailout:
+       cam_freeccb(ccb);
        free(buf);
        return (retval);
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to