Index: kernel/generic/src/printf/printf_core.c
===================================================================
--- kernel/generic/src/printf/printf_core.c	(revision bd1deed7b64271415d7ecf3951bd917d8093536f)
+++ kernel/generic/src/printf/printf_core.c	(revision 328f324bc169113023515c3003ef864c3c65b399)
@@ -39,11 +39,6 @@
 #include <putchar.h>
 #include <print.h>
-#include <synch/spinlock.h>
 #include <arch/arg.h>
-#include <arch/asm.h>
-
 #include <arch.h>
-
-SPINLOCK_INITIALIZE(printflock);			/**< printf spinlock */
 
 #define __PRINTF_FLAG_PREFIX		0x00000001	/**< show prefixes 0x or 0*/
@@ -459,5 +454,4 @@
 int printf_core(const char *fmt, struct printf_spec *ps, va_list ap)
 {
-	int irqpri;
 	int i = 0, j = 0; /**< i is index of currently processed char from fmt, j is index to the first not printed nonformating character */
 	int end;
@@ -473,8 +467,5 @@
 	
 	counter = 0;
-	
-	irqpri = interrupts_disable();
-	spinlock_lock(&printflock);
-
+		
 	while ((c = fmt[i])) {
 		/* control character */
@@ -713,6 +704,4 @@
 
 out:
-	spinlock_unlock(&printflock);
-	interrupts_restore(irqpri);
 	
 	return counter;
Index: kernel/generic/src/printf/snprintf.c
===================================================================
--- kernel/generic/src/printf/snprintf.c	(revision bd1deed7b64271415d7ecf3951bd917d8093536f)
+++ kernel/generic/src/printf/snprintf.c	(revision 328f324bc169113023515c3003ef864c3c65b399)
@@ -51,3 +51,2 @@
 /** @}
  */
-
Index: kernel/generic/src/printf/vprintf.c
===================================================================
--- kernel/generic/src/printf/vprintf.c	(revision bd1deed7b64271415d7ecf3951bd917d8093536f)
+++ kernel/generic/src/printf/vprintf.c	(revision 328f324bc169113023515c3003ef864c3c65b399)
@@ -36,4 +36,8 @@
 #include <printf/printf_core.h>
 #include <putchar.h>
+#include <synch/spinlock.h>
+#include <arch/asm.h>
+
+SPINLOCK_INITIALIZE(printf_lock);			/**< vprintf spinlock */
 
 static int vprintf_write(const char *str, size_t count, void *unused)
@@ -56,6 +60,14 @@
 {
 	struct printf_spec ps = {(int(*)(void *, size_t, void *)) vprintf_write, NULL};
-	return printf_core(fmt, &ps, ap);
-
+	
+	int irqpri = interrupts_disable();
+	spinlock_lock(&printf_lock);
+	
+	int ret = printf_core(fmt, &ps, ap);
+	
+	spinlock_unlock(&printf_lock);
+	interrupts_restore(irqpri);
+	
+	return ret;
 }
 
Index: kernel/generic/src/printf/vsnprintf.c
===================================================================
--- kernel/generic/src/printf/vsnprintf.c	(revision bd1deed7b64271415d7ecf3951bd917d8093536f)
+++ kernel/generic/src/printf/vsnprintf.c	(revision 328f324bc169113023515c3003ef864c3c65b399)
@@ -43,6 +43,4 @@
 };
 
-int vsnprintf_write(const char *str, size_t count, struct vsnprintf_data *data);
-
 /** Write string to given buffer.
  * Write at most data->size characters including trailing zero. According to C99, snprintf() has to return number
@@ -55,5 +53,5 @@
  * @return number of characters to print (not characters really printed!)
  */
-int vsnprintf_write(const char *str, size_t count, struct vsnprintf_data *data)
+static int vsnprintf_write(const char *str, size_t count, struct vsnprintf_data *data)
 {
 	size_t i;
Index: kernel/generic/src/printf/vsprintf.c
===================================================================
--- kernel/generic/src/printf/vsprintf.c	(revision bd1deed7b64271415d7ecf3951bd917d8093536f)
+++ kernel/generic/src/printf/vsprintf.c	(revision 328f324bc169113023515c3003ef864c3c65b399)
@@ -37,5 +37,5 @@
 int vsprintf(char *str, const char *fmt, va_list ap)
 {
-	return vsnprintf(str, (size_t)-1, fmt, ap);
+	return vsnprintf(str, (size_t) - 1, fmt, ap);
 }
 
