diff --git a/[refs] b/[refs] index 77c27d75a626..ac70fac86e9d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f0ef03985130287c6c84ebe69416cf790e6cc00e +refs/heads/master: 0e39ac444636ff5be39b26f1cb56d79594654dda diff --git a/trunk/include/linux/memory.h b/trunk/include/linux/memory.h index 3fdc10806d31..86a6c0f0518d 100644 --- a/trunk/include/linux/memory.h +++ b/trunk/include/linux/memory.h @@ -99,4 +99,10 @@ enum mem_add_context { BOOT, HOTPLUG }; #define hotplug_memory_notifier(fn, pri) do { } while (0) #endif +/* + * Kernel text modification mutex, used for code patching. Users of this lock + * can sleep. + */ +extern struct mutex text_mutex; + #endif /* _LINUX_MEMORY_H_ */ diff --git a/trunk/mm/memory.c b/trunk/mm/memory.c index baa999e87cd2..05fab3bc5b4b 100644 --- a/trunk/mm/memory.c +++ b/trunk/mm/memory.c @@ -48,6 +48,8 @@ #include #include #include +#include +#include #include #include #include @@ -99,6 +101,14 @@ int randomize_va_space __read_mostly = 2; #endif +/* + * mutex protecting text section modification (dynamic code patching). + * some users need to sleep (allocating memory...) while they hold this lock. + * + * NOT exported to modules - patching kernel text is a really delicate matter. + */ +DEFINE_MUTEX(text_mutex); + static int __init disable_randmaps(char *s) { randomize_va_space = 0;