Browse Source

Merge pull request #4317 from DavidLin1577/patch-3

[bsp]Fixed the stack overflow bug in i2c.c
Bernard Xiong 4 years ago
parent
commit
d1d2d3a210
1 changed files with 11 additions and 4 deletions
  1. 11 4
      bsp/fh8620/drivers/i2c.c

+ 11 - 4
bsp/fh8620/drivers/i2c.c

@@ -392,8 +392,12 @@ int fh_i2c_probe(void *priv_data)
 
 
     PRINT_I2C_DBG("%s start\n", __func__);
     PRINT_I2C_DBG("%s start\n", __func__);
 
 
-    i2c_bus_dev = (struct rt_i2c_bus_device*)rt_malloc(sizeof(struct rt_i2c_bus_device));
-    rt_memset(i2c_bus_dev, 0, sizeof(struct rt_i2c_bus_device));
+    i2c_bus_dev = (struct rt_i2c_bus_device*)rt_calloc(1, sizeof(struct rt_i2c_bus_device));
+    if (RT_NULL == i2c_bus_dev)
+    {
+        return -RT_ENOMEM;
+    }
+
     i2c_bus_dev->ops = &fh_i2c_ops;
     i2c_bus_dev->ops = &fh_i2c_ops;
 
 
     rt_sprintf(i2c_dev_name, "%s%d", "i2c", i2c_obj->id);
     rt_sprintf(i2c_dev_name, "%s%d", "i2c", i2c_obj->id);
@@ -406,8 +410,11 @@ int fh_i2c_probe(void *priv_data)
     }
     }
 
 
     //priv struct init
     //priv struct init
-    i2c_drv = (struct i2c_driver*)rt_malloc(sizeof(struct i2c_driver));
-    rt_memset(i2c_drv, 0, sizeof(struct i2c_driver));
+    i2c_drv = (struct i2c_driver*)rt_calloc(1, sizeof(struct i2c_driver));
+    if (RT_NULL == i2c_drv)
+    {
+        return -RT_ENOMEM;
+    }
 
 
     i2c_drv->i2c_bus_dev = i2c_bus_dev;
     i2c_drv->i2c_bus_dev = i2c_bus_dev;
     i2c_drv->priv = priv_data;
     i2c_drv->priv = priv_data;