From a4957062d1152816a3bf56a17212568dc313aa17 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 14 Feb 2016 13:12:49 -0800 Subject: [PATCH] 4.4-stable patches added patches: ext4-crypto-add-missing-locking-for-keyring_key-access.patch iommu-io-pgtable-arm-ensure-we-free-the-final-level-on-teardown.patch sched-fix-crash-in-sched_init_numa.patch --- ...ssing-locking-for-keyring_key-access.patch | 43 ++++++++++++++ ...-we-free-the-final-level-on-teardown.patch | 51 +++++++++++++++++ .../sched-fix-crash-in-sched_init_numa.patch | 56 +++++++++++++++++++ queue-4.4/series | 3 + 4 files changed, 153 insertions(+) create mode 100644 queue-4.4/ext4-crypto-add-missing-locking-for-keyring_key-access.patch create mode 100644 queue-4.4/iommu-io-pgtable-arm-ensure-we-free-the-final-level-on-teardown.patch create mode 100644 queue-4.4/sched-fix-crash-in-sched_init_numa.patch diff --git a/queue-4.4/ext4-crypto-add-missing-locking-for-keyring_key-access.patch b/queue-4.4/ext4-crypto-add-missing-locking-for-keyring_key-access.patch new file mode 100644 index 00000000000..fe52a055df9 --- /dev/null +++ b/queue-4.4/ext4-crypto-add-missing-locking-for-keyring_key-access.patch @@ -0,0 +1,43 @@ +From db7730e3091a52c2fcd8fcc952b964d88998e675 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Thu, 10 Dec 2015 00:57:58 -0500 +Subject: ext4 crypto: add missing locking for keyring_key access + +From: Theodore Ts'o + +commit db7730e3091a52c2fcd8fcc952b964d88998e675 upstream. + +Signed-off-by: Theodore Ts'o +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ext4/crypto_key.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/fs/ext4/crypto_key.c ++++ b/fs/ext4/crypto_key.c +@@ -213,9 +213,11 @@ retry: + res = -ENOKEY; + goto out; + } ++ down_read(&keyring_key->sem); + ukp = user_key_payload(keyring_key); + if (ukp->datalen != sizeof(struct ext4_encryption_key)) { + res = -EINVAL; ++ up_read(&keyring_key->sem); + goto out; + } + master_key = (struct ext4_encryption_key *)ukp->data; +@@ -226,10 +228,12 @@ retry: + "ext4: key size incorrect: %d\n", + master_key->size); + res = -ENOKEY; ++ up_read(&keyring_key->sem); + goto out; + } + res = ext4_derive_key_aes(ctx.nonce, master_key->raw, + raw_key); ++ up_read(&keyring_key->sem); + if (res) + goto out; + got_key: diff --git a/queue-4.4/iommu-io-pgtable-arm-ensure-we-free-the-final-level-on-teardown.patch b/queue-4.4/iommu-io-pgtable-arm-ensure-we-free-the-final-level-on-teardown.patch new file mode 100644 index 00000000000..ff59e4c336a --- /dev/null +++ b/queue-4.4/iommu-io-pgtable-arm-ensure-we-free-the-final-level-on-teardown.patch @@ -0,0 +1,51 @@ +From 12c2ab09571e8aae3a87da2a4a452632a5fac1e5 Mon Sep 17 00:00:00 2001 +From: Will Deacon +Date: Tue, 15 Dec 2015 16:08:12 +0000 +Subject: iommu/io-pgtable-arm: Ensure we free the final level on teardown + +From: Will Deacon + +commit 12c2ab09571e8aae3a87da2a4a452632a5fac1e5 upstream. + +When tearing down page tables, we return early for the final level +since we know that we won't have any table pointers to follow. +Unfortunately, this also means that we forget to free the final level, +so we end up leaking memory. + +Fix the issue by always freeing the current level, but just don't bother +to iterate over the ptes if we're at the final level. + +Reported-by: Zhang Bo +Signed-off-by: Will Deacon +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/iommu/io-pgtable-arm.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +--- a/drivers/iommu/io-pgtable-arm.c ++++ b/drivers/iommu/io-pgtable-arm.c +@@ -405,17 +405,18 @@ static void __arm_lpae_free_pgtable(stru + arm_lpae_iopte *start, *end; + unsigned long table_size; + +- /* Only leaf entries at the last level */ +- if (lvl == ARM_LPAE_MAX_LEVELS - 1) +- return; +- + if (lvl == ARM_LPAE_START_LVL(data)) + table_size = data->pgd_size; + else + table_size = 1UL << data->pg_shift; + + start = ptep; +- end = (void *)ptep + table_size; ++ ++ /* Only leaf entries at the last level */ ++ if (lvl == ARM_LPAE_MAX_LEVELS - 1) ++ end = ptep; ++ else ++ end = (void *)ptep + table_size; + + while (ptep != end) { + arm_lpae_iopte pte = *ptep++; diff --git a/queue-4.4/sched-fix-crash-in-sched_init_numa.patch b/queue-4.4/sched-fix-crash-in-sched_init_numa.patch new file mode 100644 index 00000000000..1aa8b4f3de4 --- /dev/null +++ b/queue-4.4/sched-fix-crash-in-sched_init_numa.patch @@ -0,0 +1,56 @@ +From 9c03ee147193645be4c186d3688232fa438c57c7 Mon Sep 17 00:00:00 2001 +From: Raghavendra K T +Date: Sat, 16 Jan 2016 00:31:23 +0530 +Subject: sched: Fix crash in sched_init_numa() + +From: Raghavendra K T + +commit 9c03ee147193645be4c186d3688232fa438c57c7 upstream. + +The following PowerPC commit: + + c118baf80256 ("arch/powerpc/mm/numa.c: do not allocate bootmem memory for non existing nodes") + +avoids allocating bootmem memory for non existent nodes. + +But when DEBUG_PER_CPU_MAPS=y is enabled, my powerNV system failed to boot +because in sched_init_numa(), cpumask_or() operation was done on +unallocated nodes. + +Fix that by making cpumask_or() operation only on existing nodes. + +[ Tested with and w/o DEBUG_PER_CPU_MAPS=y on x86 and PowerPC. ] + +Reported-by: Jan Stancek +Tested-by: Jan Stancek +Signed-off-by: Raghavendra K T +Cc: +Cc: +Cc: +Cc: +Cc: +Cc: +Cc: +Cc: +Cc: +Cc: +Cc: +Link: http://lkml.kernel.org/r/1452884483-11676-1-git-send-email-raghavendra.kt@linux.vnet.ibm.com +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/sched/core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -6738,7 +6738,7 @@ static void sched_init_numa(void) + + sched_domains_numa_masks[i][j] = mask; + +- for (k = 0; k < nr_node_ids; k++) { ++ for_each_node(k) { + if (node_distance(j, k) > sched_domains_numa_distance[i]) + continue; + diff --git a/queue-4.4/series b/queue-4.4/series index 329b8d1e4f1..824b59efb0a 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -74,3 +74,6 @@ n_tty-fix-unsafe-reference-to-other-ldisc.patch tty-wait-interruptibly-for-tty-lock-on-reopen.patch tty-retry-failed-reopen-if-tty-teardown-in-progress.patch tty-fix-unsafe-ldisc-reference-via-ioctl-tiocgetd.patch +iommu-io-pgtable-arm-ensure-we-free-the-final-level-on-teardown.patch +ext4-crypto-add-missing-locking-for-keyring_key-access.patch +sched-fix-crash-in-sched_init_numa.patch -- 2.47.3