diff --git a/miosix/config/miosix_settings.h b/miosix/config/miosix_settings.h
index 911f483a971aa1044b99cc272e5839334e4bd605..879e4424ba23ff24ee989c90f4a4da29d74a0f90 100644
--- a/miosix/config/miosix_settings.h
+++ b/miosix/config/miosix_settings.h
@@ -69,7 +69,7 @@ namespace miosix {
 /// \def WITH_FILESYSTEM
 /// Allows to enable/disable filesystem support.
 /// By default it is defined (filesystem support is enabled)
-//#define WITH_FILESYSTEM
+#define WITH_FILESYSTEM
     
 /// \def SYNC_AFTER_WRITE
 /// Increases filesystem write robustness. After each write operation the
diff --git a/miosix/doc/textdoc/Changelog.txt b/miosix/doc/textdoc/Changelog.txt
index 9ac9fb04a3a947545a28eff9c66e0b1138354dec..8c951d5cbb2a38f2358c9170a17b1daf8663a75b 100644
--- a/miosix/doc/textdoc/Changelog.txt
+++ b/miosix/doc/textdoc/Changelog.txt
@@ -1,5 +1,11 @@
 Changelog for Miosix np embedded OS
 
+v1.61
+- Modified the implementation of pauseKernel() and restartKernel() so as to
+  be able to call them safely within an InterruptDisableLock block. This allows
+  allocating memory with malloc/new when interrupts are disabled in an
+  InterruptDisableLock (but not in a FastInterruptDisableLock). This change
+  only relaxes a constraint, so it does not break existing code.
 v1.60
 - Added new board: bitsboard. This is effectively an stm32f4discovery tweaked
   be used in the bits project: bits.poul.org
diff --git a/miosix/kernel/kernel.cpp b/miosix/kernel/kernel.cpp
index e61269825c3475e27bd3a7ccc8e7e15d7959c6ea..e4fd73b9c8bc12d9b0f76ec5be5d805069e5a9a4 100644
--- a/miosix/kernel/kernel.cpp
+++ b/miosix/kernel/kernel.cpp
@@ -125,7 +125,11 @@ void pauseKernel()
     miosix_private::doDisableInterrupts();
     if(kernel_running==0xff) errorHandler(NESTING_OVERFLOW);
     kernel_running++;
-    if(kernel_started==true) miosix_private::doEnableInterrupts();
+    
+    //Check interruptDisableNesting to allow pauseKernel() while interrupts
+    //are disabled with an InterruptDisableLock
+    if(interruptDisableNesting==0 && kernel_started==true)
+        miosix_private::doEnableInterrupts();
 }
 
 void restartKernel()
@@ -137,12 +141,18 @@ void restartKernel()
         errorHandler(PAUSE_KERNEL_NESTING);
     }
     kernel_running--;
-    if(kernel_started==true) miosix_private::doEnableInterrupts();
     
-    if((kernel_running==0)&&tick_skew)//If we missed some tick yield immediately
-    { 
-        tick_skew=false;
-        Thread::yield();
+    //Check interruptDisableNesting to allow pauseKernel() while interrupts
+    //are disabled with an InterruptDisableLock
+    if(interruptDisableNesting==0)
+    {
+        if(kernel_started==true) miosix_private::doEnableInterrupts();
+    
+        if((kernel_running==0)&&tick_skew)//If we missed some tick yield immediately
+        { 
+            tick_skew=false;
+            Thread::yield();
+        }
     }
 }
 
diff --git a/miosix/util/version.cpp b/miosix/util/version.cpp
index 747097702db88783daeabd1e28eb76db65ddba8b..76dd6ab0e9baca9864e3a6d0af8b078efe7c1222 100644
--- a/miosix/util/version.cpp
+++ b/miosix/util/version.cpp
@@ -37,7 +37,7 @@ namespace miosix {
 #define AU
 #endif
 
-const char AU ver[]="Miosix v1.60 (" _MIOSIX ", " __DATE__ " " __TIME__ CV ")";
+const char AU ver[]="Miosix v1.61 (" _MIOSIX ", " __DATE__ " " __TIME__ CV ")";
 
 const char *getMiosixVersion()
 {