projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'i2c/for-mergewindow' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git]
/
kernel
/
jump_label.c
diff --git
a/kernel/jump_label.c
b/kernel/jump_label.c
index
bdb0681
..
b156e15
100644
(file)
--- a/
kernel/jump_label.c
+++ b/
kernel/jump_label.c
@@
-316,14
+316,16
@@
static int addr_conflict(struct jump_entry *entry, void *start, void *end)
}
static int __jump_label_text_reserved(struct jump_entry *iter_start,
}
static int __jump_label_text_reserved(struct jump_entry *iter_start,
- struct jump_entry *iter_stop, void *start, void *end)
+ struct jump_entry *iter_stop, void *start, void *end
, bool init
)
{
struct jump_entry *iter;
iter = iter_start;
while (iter < iter_stop) {
{
struct jump_entry *iter;
iter = iter_start;
while (iter < iter_stop) {
- if (addr_conflict(iter, start, end))
- return 1;
+ if (init || !jump_entry_is_init(iter)) {
+ if (addr_conflict(iter, start, end))
+ return 1;
+ }
iter++;
}
iter++;
}
@@
-562,7
+564,7
@@
static int __jump_label_mod_text_reserved(void *start, void *end)
ret = __jump_label_text_reserved(mod->jump_entries,
mod->jump_entries + mod->num_jump_entries,
ret = __jump_label_text_reserved(mod->jump_entries,
mod->jump_entries + mod->num_jump_entries,
- start, end);
+ start, end
, mod->state == MODULE_STATE_COMING
);
module_put(mod);
module_put(mod);
@@
-788,8
+790,9
@@
early_initcall(jump_label_init_module);
*/
int jump_label_text_reserved(void *start, void *end)
{
*/
int jump_label_text_reserved(void *start, void *end)
{
+ bool init = system_state < SYSTEM_RUNNING;
int ret = __jump_label_text_reserved(__start___jump_table,
int ret = __jump_label_text_reserved(__start___jump_table,
- __stop___jump_table, start, end);
+ __stop___jump_table, start, end
, init
);
if (ret)
return ret;
if (ret)
return ret;