diff --git a/toolchain/musl/Config.in b/toolchain/musl/Config.in
index 36edf54e484cf4a7f9270621e57074be86da1e69..9853a4da4f11661d79f7a85917814b8d6b1bbe63 100644
--- a/toolchain/musl/Config.in
+++ b/toolchain/musl/Config.in
@@ -19,6 +19,10 @@ choice
 		select MUSL_VERSION_0_9_10
 		bool "musl 0.9.10"
 
+	config MUSL_USE_VERSION_0_9_11
+		select MUSL_VERSION_0_9_11
+		bool "musl 0.9.11"
+
 endchoice
 
 
diff --git a/toolchain/musl/Config.version b/toolchain/musl/Config.version
index 172111dc2438234f965fe3ca4d99a2e3dc78d936..b936cb28044aebf9b449273af78b93d36976b311 100644
--- a/toolchain/musl/Config.version
+++ b/toolchain/musl/Config.version
@@ -3,9 +3,10 @@ if USE_MUSL
 config MUSL_VERSION
 	string
 	depends on USE_MUSL
-	default "0.9.8"       if MUSL_VERSION_0_9_8
-	default "0.9.9"       if MUSL_VERSION_0_9_9
-	default "0.9.10"       if MUSL_VERSION_0_9_10
+	default "0.9.8"		if MUSL_VERSION_0_9_8
+	default "0.9.9"		if MUSL_VERSION_0_9_9
+	default "0.9.10"	if MUSL_VERSION_0_9_10
+	default "0.9.11"	if MUSL_VERSION_0_9_11
 
 config MUSL_VERSION_0_9_8
 	default y if !TOOLCHAINOPTS
@@ -17,4 +18,7 @@ config MUSL_VERSION_0_9_9
 config MUSL_VERSION_0_9_10
 	bool
 
+config MUSL_VERSION_0_9_11
+	bool
+
 endif
diff --git a/toolchain/musl/common.mk b/toolchain/musl/common.mk
index 75c050787ffae7eff6a50772010615b6a0acf733..4f8baec5136a27fc4248f9d67dcabb518fa84b31 100644
--- a/toolchain/musl/common.mk
+++ b/toolchain/musl/common.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2012 OpenWrt.org
+# Copyright (C) 2012-2013 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -14,6 +14,7 @@ PKG_RELEASE=$(PKG_SOURCE_VERSION)
 PKG_SOURCE_VERSION_0.9.8:=e6dcebd5efa2d390f0a24dc11444024e9fd1990c
 PKG_SOURCE_VERSION_0.9.9:=a57ac9bf64ba202bd94d1b81bddd93b850c7b9d6
 PKG_SOURCE_VERSION_0.9.10:=7bec92e793d4b8a349796848cf43c7329b0f2ed0
+PKG_SOURCE_VERSION_0.9.11:=6688a778b0419eab32e715f269319248edee9da5
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://git.musl-libc.org/musl
@@ -60,7 +61,6 @@ define Host/Configure
 	);
 endef
 
-
 define Host/Clean
 	rm -rf \
 		$(HOST_BUILD_DIR) \
diff --git a/toolchain/musl/patches-0.9.11/000-install_portability.patch b/toolchain/musl/patches-0.9.11/000-install_portability.patch
new file mode 100644
index 0000000000000000000000000000000000000000..43c43519d9f5a4a60375a8c90bb8376c67e31a65
--- /dev/null
+++ b/toolchain/musl/patches-0.9.11/000-install_portability.patch
@@ -0,0 +1,27 @@
+--- a/Makefile
++++ b/Makefile
+@@ -116,16 +116,20 @@
+ 	chmod +x $@
+ 
+ $(DESTDIR)$(bindir)/%: tools/%
+-	install -D $< $@
++	mkdir -p $(dir $@)
++	install $< $@
+ 
+ $(DESTDIR)$(libdir)/%.so: lib/%.so
+-	install -D -m 755 $< $@
++	mkdir -p $(dir $@)
++	install -m 755 $< $@
+ 
+ $(DESTDIR)$(libdir)/%: lib/%
+-	install -D -m 644 $< $@
++	mkdir -p $(dir $@)
++	install -m 644 $< $@
+ 
+ $(DESTDIR)$(includedir)/%: include/%
+-	install -D -m 644 $< $@
++	mkdir -p $(dir $@)
++	install -m 644 $< $@
+ 
+ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(syslibdir)
+ 	ln -sf $(libdir)/libc.so $@ || true
diff --git a/toolchain/musl/patches-0.9.11/100-wchar_include.patch b/toolchain/musl/patches-0.9.11/100-wchar_include.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5d78ced6a9b9fdb6f38d8267a6b11fe41c553788
--- /dev/null
+++ b/toolchain/musl/patches-0.9.11/100-wchar_include.patch
@@ -0,0 +1,60 @@
+--- a/arch/arm/bits/alltypes.h.sh
++++ b/arch/arm/bits/alltypes.h.sh
+@@ -22,6 +22,7 @@
+ 
+ TYPEDEF __builtin_va_list va_list;
+ TYPEDEF __builtin_va_list __isoc_va_list;
++#define __gnuc_va_list va_list
+ 
+ #ifndef __cplusplus
+ TYPEDEF unsigned wchar_t;
+--- a/arch/i386/bits/alltypes.h.sh
++++ b/arch/i386/bits/alltypes.h.sh
+@@ -27,6 +27,7 @@
+ TYPEDEF struct __va_list * va_list;
+ TYPEDEF struct __va_list * __isoc_va_list;
+ #endif
++#define __gnuc_va_list va_list
+ 
+ #ifndef __cplusplus
+ #ifdef __WCHAR_TYPE__
+--- a/arch/microblaze/bits/alltypes.h.sh
++++ b/arch/microblaze/bits/alltypes.h.sh
+@@ -22,6 +22,7 @@
+ 
+ TYPEDEF __builtin_va_list va_list;
+ TYPEDEF __builtin_va_list __isoc_va_list;
++#define __gnuc_va_list va_list
+ 
+ #ifndef __cplusplus
+ TYPEDEF int wchar_t;
+--- a/arch/mips/bits/alltypes.h.sh
++++ b/arch/mips/bits/alltypes.h.sh
+@@ -22,6 +22,7 @@
+ 
+ TYPEDEF __builtin_va_list va_list;
+ TYPEDEF __builtin_va_list __isoc_va_list;
++#define __gnuc_va_list va_list
+ 
+ #ifndef __cplusplus
+ TYPEDEF int wchar_t;
+--- a/arch/powerpc/bits/alltypes.h.sh
++++ b/arch/powerpc/bits/alltypes.h.sh
+@@ -22,6 +22,7 @@
+ 
+ TYPEDEF __builtin_va_list va_list;
+ TYPEDEF __builtin_va_list __isoc_va_list;
++#define __gnuc_va_list va_list
+ 
+ #ifndef __cplusplus
+ TYPEDEF long wchar_t;
+--- a/arch/x86_64/bits/alltypes.h.sh
++++ b/arch/x86_64/bits/alltypes.h.sh
+@@ -21,6 +21,7 @@
+ TYPEDEF long ptrdiff_t;
+ TYPEDEF __builtin_va_list va_list;
+ TYPEDEF __builtin_va_list __isoc_va_list;
++#define __gnuc_va_list va_list
+ 
+ #ifndef __cplusplus
+ TYPEDEF int wchar_t;
diff --git a/toolchain/musl/patches-0.9.11/120-in_h_are_4_equal_parenthesis.patch b/toolchain/musl/patches-0.9.11/120-in_h_are_4_equal_parenthesis.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8b5dbd44263613e3fb5184859258979db2777b71
--- /dev/null
+++ b/toolchain/musl/patches-0.9.11/120-in_h_are_4_equal_parenthesis.patch
@@ -0,0 +1,11 @@
+--- a/include/netinet/in.h
++++ b/include/netinet/in.h
+@@ -146,7 +146,7 @@ uint16_t ntohs(uint16_t);
+         (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe))
+ 
+ #define __ARE_4_EQUAL(a,b) \
+-	(!( 0[a]-0[b] | 1[a]-1[b] | 2[a]-2[b] | 3[a]-3[b] ))
++	(!( (0[a]-0[b]) | (1[a]-1[b]) | (2[a]-2[b]) | (3[a]-3[b]) ))
+ #define IN6_ARE_ADDR_EQUAL(a,b) \
+ 	__ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b))
+ 
diff --git a/toolchain/musl/patches-0.9.11/130-syslog_log_upto_parenthesis.patch b/toolchain/musl/patches-0.9.11/130-syslog_log_upto_parenthesis.patch
new file mode 100644
index 0000000000000000000000000000000000000000..840dd401324124e3d2c39578054ded2a5b0fb49a
--- /dev/null
+++ b/toolchain/musl/patches-0.9.11/130-syslog_log_upto_parenthesis.patch
@@ -0,0 +1,11 @@
+--- a/include/syslog.h
++++ b/include/syslog.h
+@@ -21,7 +21,7 @@ extern "C" {
+ #define	LOG_MAKEPRI(f, p) (((f)<<3)|(p))
+ 
+ #define LOG_MASK(p) (1<<(p))
+-#define LOG_UPTO(p) ((1<<(p)+1)-1)
++#define LOG_UPTO(p) ((1<<((p)+1))-1)
+ 
+ #define LOG_KERN     (0<<3)
+ #define LOG_USER     (1<<3)