From c689c2c67fa5519b510fe22b7f8fe61b4aa08b40 Mon Sep 17 00:00:00 2001 From: David Lin Date: Sun, 8 Mar 2020 00:48:32 +0800 Subject: [PATCH 1/5] Fixed a hidden stack overflow bug 'memset' should been next step after 'NULL' judge --- bsp/fh8620/drivers/pwm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bsp/fh8620/drivers/pwm.c b/bsp/fh8620/drivers/pwm.c index a9d2645631..ff02a5a6db 100644 --- a/bsp/fh8620/drivers/pwm.c +++ b/bsp/fh8620/drivers/pwm.c @@ -186,12 +186,13 @@ int fh_pwm_probe(void *priv_data) PWM_Enable(pwm_obj, RT_FALSE); pwm_dev = rt_malloc(sizeof(struct rt_device)); - rt_memset(pwm_dev, 0, sizeof(struct rt_device)); if (pwm_dev == RT_NULL) { rt_kprintf("ERROR: %s rt_device malloc failed\n", __func__); } + + rt_memset(pwm_dev, 0, sizeof(struct rt_device)); pwm_dev->user_data = &pwm_drv; pwm_dev->open =fh_pwm_open; From b2d33e9147fafbb32a7a895a826bd933ab74ed2f Mon Sep 17 00:00:00 2001 From: David Lin Date: Sun, 8 Mar 2020 07:18:37 +0800 Subject: [PATCH 2/5] Update pwm.c --- bsp/fh8620/drivers/pwm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/bsp/fh8620/drivers/pwm.c b/bsp/fh8620/drivers/pwm.c index ff02a5a6db..3eb5a8ccd2 100644 --- a/bsp/fh8620/drivers/pwm.c +++ b/bsp/fh8620/drivers/pwm.c @@ -190,6 +190,7 @@ int fh_pwm_probe(void *priv_data) if (pwm_dev == RT_NULL) { rt_kprintf("ERROR: %s rt_device malloc failed\n", __func__); + return -RT_EIO; } rt_memset(pwm_dev, 0, sizeof(struct rt_device)); From 25ac5039e7359c02afc5d8fd9c7106bf6904a225 Mon Sep 17 00:00:00 2001 From: David Lin Date: Sat, 14 Mar 2020 22:38:48 +0800 Subject: [PATCH 3/5] Update pwm.c rt_malloc -> rt_calloc --- bsp/fh8620/drivers/pwm.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/bsp/fh8620/drivers/pwm.c b/bsp/fh8620/drivers/pwm.c index 3eb5a8ccd2..6faa836edb 100644 --- a/bsp/fh8620/drivers/pwm.c +++ b/bsp/fh8620/drivers/pwm.c @@ -185,16 +185,14 @@ int fh_pwm_probe(void *priv_data) PWM_Enable(pwm_obj, RT_FALSE); - pwm_dev = rt_malloc(sizeof(struct rt_device)); + pwm_dev = rt_calloc(sizeof(struct rt_device)); if (pwm_dev == RT_NULL) { - rt_kprintf("ERROR: %s rt_device malloc failed\n", __func__); - return -RT_EIO; + rt_kprintf("ERROR: %s rt_device calloc failed\n", __func__); + return -RT_ENOMEM; } - rt_memset(pwm_dev, 0, sizeof(struct rt_device)); - pwm_dev->user_data = &pwm_drv; pwm_dev->open =fh_pwm_open; pwm_dev->close = fh_pwm_close; From 508b334fe77a9ed8221585209f73da6a13e44e6a Mon Sep 17 00:00:00 2001 From: David Lin Date: Sun, 15 Mar 2020 00:21:38 +0800 Subject: [PATCH 4/5] Update pwm.c --- bsp/fh8620/drivers/pwm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/bsp/fh8620/drivers/pwm.c b/bsp/fh8620/drivers/pwm.c index 6faa836edb..37978f2186 100644 --- a/bsp/fh8620/drivers/pwm.c +++ b/bsp/fh8620/drivers/pwm.c @@ -29,6 +29,7 @@ #include "interrupt.h" #include "board_info.h" #include "inc/fh_driverlib.h" +#include #include #ifdef FH_PWM_DEBUG #define PRINT_PWM_DBG(fmt, args...) \ From d38dbcaaa372fbbc4f402c9c0889fb1dd091e73f Mon Sep 17 00:00:00 2001 From: David Lin Date: Sun, 15 Mar 2020 07:22:34 +0800 Subject: [PATCH 5/5] Update pwm.c --- bsp/fh8620/drivers/pwm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsp/fh8620/drivers/pwm.c b/bsp/fh8620/drivers/pwm.c index 37978f2186..58c9703d78 100644 --- a/bsp/fh8620/drivers/pwm.c +++ b/bsp/fh8620/drivers/pwm.c @@ -186,7 +186,7 @@ int fh_pwm_probe(void *priv_data) PWM_Enable(pwm_obj, RT_FALSE); - pwm_dev = rt_calloc(sizeof(struct rt_device)); + pwm_dev = rt_calloc(1,sizeof(struct rt_device)); if (pwm_dev == RT_NULL) {