Module Name: src
Committed By: mlelstv
Date: Sun Jul 14 13:55:43 UTC 2019
Modified Files:
src/sys/external/bsd/dwc2/dist: dwc2_hcd.c
Log Message:
Fix error path, kmem_free doesn't allow NULL pointers.
Fix compilation with CONFIG_USB_DWC2_TRACK_MISSED_SOFS.
To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/external/bsd/dwc2/dist/dwc2_hcd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/dwc2/dist/dwc2_hcd.c
diff -u src/sys/external/bsd/dwc2/dist/dwc2_hcd.c:1.22 src/sys/external/bsd/dwc2/dist/dwc2_hcd.c:1.23
--- src/sys/external/bsd/dwc2/dist/dwc2_hcd.c:1.22 Mon Aug 27 17:13:07 2018
+++ src/sys/external/bsd/dwc2/dist/dwc2_hcd.c Sun Jul 14 13:55:43 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc2_hcd.c,v 1.22 2018/08/27 17:13:07 riastradh Exp $ */
+/* $NetBSD: dwc2_hcd.c,v 1.23 2019/07/14 13:55:43 mlelstv Exp $ */
/*
* hcd.c - DesignWare HS OTG Controller host-mode routines
@@ -42,7 +42,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dwc2_hcd.c,v 1.22 2018/08/27 17:13:07 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dwc2_hcd.c,v 1.23 2019/07/14 13:55:43 mlelstv Exp $");
#include <sys/types.h>
#include <sys/kmem.h>
@@ -2424,13 +2424,16 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
error3:
dwc2_hcd_release(hsotg);
error2:
- kmem_free(hsotg->core_params, sizeof(*hsotg->core_params));
+ if (hsotg->core_params != NULL)
+ kmem_free(hsotg->core_params, sizeof(*hsotg->core_params));
#ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
- kmem_free(hsotg->last_frame_num_array,
- sizeof(*hsotg->last_frame_num_array) * FRAME_NUM_ARRAY_SIZE);
- kmem_free(hsotg->frame_num_array,
- sizeof(*hsotg->frame_num_array) * FRAME_NUM_ARRAY_SIZE);
+ if (hsotg->last_frame_num_array != NULL)
+ kmem_free(hsotg->last_frame_num_array,
+ sizeof(*hsotg->last_frame_num_array) * FRAME_NUM_ARRAY_SIZE);
+ if (hsotg->frame_num_array != NULL)
+ kmem_free(hsotg->frame_num_array,
+ sizeof(*hsotg->frame_num_array) * FRAME_NUM_ARRAY_SIZE);
#endif
dev_err(hsotg->dev, "%s() FAILED, returning %d\n", __func__, retval);
@@ -2460,7 +2463,7 @@ void dwc2_hcd_remove(struct dwc2_hsotg *
dwc2_hcd_release(hsotg);
#ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
- kfree(hsotg->last_frame_num_array);
- kfree(hsotg->frame_num_array);
+ kmem_free(hsotg->last_frame_num_array, sizeof(*hsotg->last_frame_num_array) * FRAME_NUM_ARRAY_SIZE);
+ kmem_free(hsotg->frame_num_array, sizeof(*hsotg->frame_num_array) * FRAME_NUM_ARRAY_SIZE);
#endif
}