summaryrefslogtreecommitdiff
path: root/kernel/module.c
diff options
context:
space:
mode:
authorJames Morris <james.morris@microsoft.com>2018-11-12 09:07:41 -0800
committerJames Morris <james.morris@microsoft.com>2018-11-12 09:07:41 -0800
commit26b76320a8a550472bbb8f42257df83fcb8d8df6 (patch)
tree8a5b569f4f070bf4971e24e7fccfe3004b8fc4ba /kernel/module.c
parentf09c296ebf407f98f4ca70892e612b54484bf663 (diff)
parentccda4af0f4b92f7b4c308d3acc262f4a7e3affad (diff)
Merge tag 'v4.20-rc2' into next-general
Sync to Linux 4.20-rc2 for downstream developers.
Diffstat (limited to 'kernel/module.c')
-rw-r--r--kernel/module.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c
index 6746c85511fe..49a405891587 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -3317,6 +3317,15 @@ static struct module *layout_and_allocate(struct load_info *info, int flags)
ndx = find_sec(info, ".data..ro_after_init");
if (ndx)
info->sechdrs[ndx].sh_flags |= SHF_RO_AFTER_INIT;
+ /*
+ * Mark the __jump_table section as ro_after_init as well: these data
+ * structures are never modified, with the exception of entries that
+ * refer to code in the __init section, which are annotated as such
+ * at module load time.
+ */
+ ndx = find_sec(info, "__jump_table");
+ if (ndx)
+ info->sechdrs[ndx].sh_flags |= SHF_RO_AFTER_INIT;
/* Determine total sizes, and put offsets in sh_entsize. For now
this is done generically; there doesn't appear to be any