[PATCH 1/3] libblock: Init deps in rtems_blkdev_create()

Sebastian Huber sebastian.huber at embedded-brains.de
Mon May 14 13:54:26 UTC 2018


Update #3358.
---
 cpukit/include/rtems/blkdev.h      |  1 +
 cpukit/libblock/src/blkdev-imfs.c  | 14 ++++++++++----
 testsuites/libtests/block17/init.c | 10 ++++++++--
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/cpukit/include/rtems/blkdev.h b/cpukit/include/rtems/blkdev.h
index 3f829e6068..929cf4fc24 100644
--- a/cpukit/include/rtems/blkdev.h
+++ b/cpukit/include/rtems/blkdev.h
@@ -296,6 +296,7 @@ rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp);
  * @retval RTEMS_INVALID_NUMBER Media block size or count is not positive.
  * @retval RTEMS_NO_MEMORY Not enough memory.
  * @retval RTEMS_UNSATISFIED Cannot create generic device node.
+ * @retval RTEMS_INCORRECT_STATE Cannot initialize bdbuf.
  *
  * @see rtems_blkdev_create_partition(), rtems_bdbuf_set_block_size(), and
  * rtems_blkdev_request.
diff --git a/cpukit/libblock/src/blkdev-imfs.c b/cpukit/libblock/src/blkdev-imfs.c
index ebe6ebb1d7..a46babb593 100644
--- a/cpukit/libblock/src/blkdev-imfs.c
+++ b/cpukit/libblock/src/blkdev-imfs.c
@@ -6,10 +6,10 @@
  */
 
 /*
- * Copyright (c) 2012 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2012, 2018 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
- *  Obere Lagerstr. 30
+ *  Dornierstr. 4
  *  82178 Puchheim
  *  Germany
  *  <rtems at embedded-brains.de>
@@ -279,9 +279,15 @@ rtems_status_code rtems_blkdev_create(
   void *driver_data
 )
 {
-  rtems_status_code sc = RTEMS_SUCCESSFUL;
-  rtems_blkdev_imfs_context *ctx = malloc(sizeof(*ctx));
+  rtems_status_code sc;
+  rtems_blkdev_imfs_context *ctx;
+
+  sc = rtems_bdbuf_init();
+  if (sc != RTEMS_SUCCESSFUL) {
+    return RTEMS_INCORRECT_STATE;
+  }
 
+  ctx = malloc(sizeof(*ctx));
   if (ctx != NULL) {
     sc = rtems_disk_init_phys(
       &ctx->dd,
diff --git a/testsuites/libtests/block17/init.c b/testsuites/libtests/block17/init.c
index d916c738d5..3346c7cf17 100644
--- a/testsuites/libtests/block17/init.c
+++ b/testsuites/libtests/block17/init.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2013, 2018 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
  *  Dornierstr. 4
@@ -17,6 +17,7 @@
 #endif
 
 #include <rtems/bdbuf.h>
+#include <rtems/blkdev.h>
 
 #include "tmacros.h"
 
@@ -24,8 +25,13 @@ const char rtems_test_name[] = "BLOCK 17";
 
 static void test(void)
 {
-  rtems_status_code sc = rtems_bdbuf_init();
+  rtems_status_code sc;
+
+  sc = rtems_bdbuf_init();
   rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
+
+  sc = rtems_blkdev_create(NULL, 0, 0, NULL, NULL);
+  rtems_test_assert(sc == RTEMS_INCORRECT_STATE);
 }
 
 static void Init(rtems_task_argument arg)
-- 
2.12.3



More information about the devel mailing list