diff --git a/miosix/kernel/kernel.cpp b/miosix/kernel/kernel.cpp
index 489ac2a4bbc7f9a258ec5c084e804feaa3c7e857..39df313f5e15e22d1002d34ad77c096884971a8d 100755
--- a/miosix/kernel/kernel.cpp
+++ b/miosix/kernel/kernel.cpp
@@ -492,30 +492,32 @@ Priority Thread::getPriority()
 void Thread::setPriority(Priority pr)
 {
     if(pr.validate()==false) return;
-    PauseKernelLock lock;
+    {
+        PauseKernelLock lock;
 
-    Thread *running=PKgetCurrentThread();
-    //If thread is locking at least one mutex
-    if(running->mutexLocked!=nullptr)
-    {   
-        //savedPriority always changes, since when all mutexes are unlocked
-        //setPriority() must become effective
-        if(running->savedPriority==pr) return;
-        running->savedPriority=pr;
-        //Calculate new priority of thread, which is
-        //max(savedPriority, inheritedPriority)
-        Mutex *walk=running->mutexLocked;
-        while(walk!=nullptr)
+        Thread *running=PKgetCurrentThread();
+        //If thread is locking at least one mutex
+        if(running->mutexLocked!=nullptr)
         {
-            if(walk->waiting.empty()==false)
-                pr=std::max(pr,walk->waiting.front()->PKgetPriority());
-            walk=walk->next;
+            //savedPriority always changes, since when all mutexes are unlocked
+            //setPriority() must become effective
+            if(running->savedPriority==pr) return;
+            running->savedPriority=pr;
+            //Calculate new priority of thread, which is
+            //max(savedPriority, inheritedPriority)
+            Mutex *walk=running->mutexLocked;
+            while(walk!=nullptr)
+            {
+                if(walk->waiting.empty()==false)
+                    pr=std::max(pr,walk->waiting.front()->PKgetPriority());
+                walk=walk->next;
+            }
         }
+
+        //If old priority == desired priority, nothing to do.
+        if(pr==running->PKgetPriority()) return;
+        Scheduler::PKsetPriority(running,pr);
     }
-    
-    //If old priority == desired priority, nothing to do.
-    if(pr==running->PKgetPriority()) return;
-    Scheduler::PKsetPriority(running,pr);
     #ifdef SCHED_TYPE_EDF
     if(isKernelRunning()) yield(); //Another thread might have a closer deadline
     #endif //SCHED_TYPE_EDF