You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/08/01 17:29:14 UTC

[incubator-nuttx] 10/22: driver/sensor: move register_driver to end to avoid race condition

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 38393cfc940d3032325c6dc6de60b870fc0ea0ac
Author: Jiuzhu Dong <do...@xiaomi.com>
AuthorDate: Tue Jun 14 11:44:24 2022 +0800

    driver/sensor: move register_driver to end to avoid race condition
    
    Signed-off-by: Jiuzhu Dong <do...@xiaomi.com>
---
 drivers/sensors/sensor.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/sensors/sensor.c b/drivers/sensors/sensor.c
index 89b47813ba..ac487bb39f 100644
--- a/drivers/sensors/sensor.c
+++ b/drivers/sensors/sensor.c
@@ -1048,14 +1048,6 @@ int sensor_custom_register(FAR struct sensor_lowerhalf_s *lower,
       lower->nbuffer = 0;
     }
 
-  upper->state.nbuffer = lower->nbuffer;
-  sninfo("Registering %s\n", path);
-  ret = register_driver(path, &g_sensor_fops, 0666, upper);
-  if (ret)
-    {
-      goto drv_err;
-    }
-
 #ifdef CONFIG_SENSORS_RPMSG
   lower = sensor_rpmsg_register(lower, path);
   if (lower == NULL)
@@ -1065,7 +1057,15 @@ int sensor_custom_register(FAR struct sensor_lowerhalf_s *lower,
     }
 #endif
 
+  upper->state.nbuffer = lower->nbuffer;
   upper->lower = lower;
+  sninfo("Registering %s\n", path);
+  ret = register_driver(path, &g_sensor_fops, 0666, upper);
+  if (ret)
+    {
+      goto drv_err;
+    }
+
   return ret;
 
 drv_err: