--- D:/repos_temp/chibios_cmsis_os_validation/cmsis_os_original/cmsis_os.c	Sat Apr 25 23:54:06 2020
+++ D:/repos_temp/chibios_cmsis_os_validation/cmsis_os_original_Pools/cmsis_os.c	Sun Apr 26 13:00:12 2020
@@ -427,6 +427,10 @@
  */
 osPoolId osPoolCreate(const osPoolDef_t *pool_def) {
 
+  if ((pool_def == NULL) || port_is_isr_context()) {
+    return NULL;
+  }
+
   chPoolObjectInit(pool_def->pool, (size_t)pool_def->item_sz, NULL);
   chPoolLoadArray(pool_def->pool, pool_def->items, (size_t)pool_def->pool_sz);
 
@@ -439,6 +443,10 @@
 void *osPoolAlloc(osPoolId pool_id) {
   void *object;
 
+  if (pool_id == NULL) {
+    return NULL;
+  }
+
   syssts_t sts = chSysGetStatusAndLockX();
   object = chPoolAllocI((memory_pool_t *)pool_id);
   chSysRestoreStatusX(sts);
@@ -452,8 +460,15 @@
 void *osPoolCAlloc(osPoolId pool_id) {
   void *object;
 
+  if (pool_id == NULL) {
+    return NULL;
+  }
+
+  syssts_t sts = chSysGetStatusAndLockX();
   object = chPoolAllocI((memory_pool_t *)pool_id);
+  chSysRestoreStatusX(sts);
   memset(object, 0, pool_id->object_size);
+
   return object;
 }
 
@@ -461,6 +476,9 @@
  * @brief   Free an object.
  */
 osStatus osPoolFree(osPoolId pool_id, void *block) {
+  if (pool_id == NULL) {
+    return osErrorParameter;
+  }
 
   syssts_t sts = chSysGetStatusAndLockX();
   chPoolFreeI((memory_pool_t *)pool_id, block);
