diff options
-rw-r--r-- | 0001-cgroup-reduce-read-locked-section-of-cgroup_threadgr.patch | 112 | ||||
-rw-r--r-- | 0001-cpupower-Correct-return-type-of-cpu_power_is_cpu_onl.patch | 49 | ||||
-rw-r--r-- | 0001-iio-Use-event-header-from-kernel-tree.patch | 64 | ||||
-rw-r--r-- | kernel.spec | 18 | ||||
-rw-r--r-- | sources | 2 |
5 files changed, 128 insertions, 117 deletions
diff --git a/0001-cgroup-reduce-read-locked-section-of-cgroup_threadgr.patch b/0001-cgroup-reduce-read-locked-section-of-cgroup_threadgr.patch deleted file mode 100644 index daad25310..000000000 --- a/0001-cgroup-reduce-read-locked-section-of-cgroup_threadgr.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 568ac888215c7fb2fabe8ea739b00ec3c1f5d440 Mon Sep 17 00:00:00 2001 -From: Balbir Singh <bsingharora@gmail.com> -Date: Wed, 10 Aug 2016 15:43:06 -0400 -Subject: [PATCH] cgroup: reduce read locked section of - cgroup_threadgroup_rwsem during fork - -cgroup_threadgroup_rwsem is acquired in read mode during process exit -and fork. It is also grabbed in write mode during -__cgroups_proc_write(). I've recently run into a scenario with lots -of memory pressure and OOM and I am beginning to see - -systemd - - __switch_to+0x1f8/0x350 - __schedule+0x30c/0x990 - schedule+0x48/0xc0 - percpu_down_write+0x114/0x170 - __cgroup_procs_write.isra.12+0xb8/0x3c0 - cgroup_file_write+0x74/0x1a0 - kernfs_fop_write+0x188/0x200 - __vfs_write+0x6c/0xe0 - vfs_write+0xc0/0x230 - SyS_write+0x6c/0x110 - system_call+0x38/0xb4 - -This thread is waiting on the reader of cgroup_threadgroup_rwsem to -exit. The reader itself is under memory pressure and has gone into -reclaim after fork. There are times the reader also ends up waiting on -oom_lock as well. - - __switch_to+0x1f8/0x350 - __schedule+0x30c/0x990 - schedule+0x48/0xc0 - jbd2_log_wait_commit+0xd4/0x180 - ext4_evict_inode+0x88/0x5c0 - evict+0xf8/0x2a0 - dispose_list+0x50/0x80 - prune_icache_sb+0x6c/0x90 - super_cache_scan+0x190/0x210 - shrink_slab.part.15+0x22c/0x4c0 - shrink_zone+0x288/0x3c0 - do_try_to_free_pages+0x1dc/0x590 - try_to_free_pages+0xdc/0x260 - __alloc_pages_nodemask+0x72c/0xc90 - alloc_pages_current+0xb4/0x1a0 - page_table_alloc+0xc0/0x170 - __pte_alloc+0x58/0x1f0 - copy_page_range+0x4ec/0x950 - copy_process.isra.5+0x15a0/0x1870 - _do_fork+0xa8/0x4b0 - ppc_clone+0x8/0xc - -In the meanwhile, all processes exiting/forking are blocked almost -stalling the system. - -This patch moves the threadgroup_change_begin from before -cgroup_fork() to just before cgroup_canfork(). There is no nee to -worry about threadgroup changes till the task is actually added to the -threadgroup. This avoids having to call reclaim with -cgroup_threadgroup_rwsem held. - -tj: Subject and description edits. - -Signed-off-by: Balbir Singh <bsingharora@gmail.com> -Acked-by: Zefan Li <lizefan@huawei.com> -Cc: Oleg Nesterov <oleg@redhat.com> -Cc: Andrew Morton <akpm@linux-foundation.org> -Cc: stable@vger.kernel.org # v4.2+ -Signed-off-by: Tejun Heo <tj@kernel.org> ---- - kernel/fork.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/kernel/fork.c b/kernel/fork.c -index 52e725d..aaf7823 100644 ---- a/kernel/fork.c -+++ b/kernel/fork.c -@@ -1404,7 +1404,6 @@ static struct task_struct *copy_process(unsigned long clone_flags, - p->real_start_time = ktime_get_boot_ns(); - p->io_context = NULL; - p->audit_context = NULL; -- threadgroup_change_begin(current); - cgroup_fork(p); - #ifdef CONFIG_NUMA - p->mempolicy = mpol_dup(p->mempolicy); -@@ -1556,6 +1555,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, - INIT_LIST_HEAD(&p->thread_group); - p->task_works = NULL; - -+ threadgroup_change_begin(current); - /* - * Ensure that the cgroup subsystem policies allow the new process to be - * forked. It should be noted the the new process's css_set can be changed -@@ -1656,6 +1656,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, - bad_fork_cancel_cgroup: - cgroup_cancel_fork(p); - bad_fork_free_pid: -+ threadgroup_change_end(current); - if (pid != &init_struct_pid) - free_pid(pid); - bad_fork_cleanup_thread: -@@ -1688,7 +1689,6 @@ bad_fork_cleanup_policy: - mpol_put(p->mempolicy); - bad_fork_cleanup_threadgroup_lock: - #endif -- threadgroup_change_end(current); - delayacct_tsk_free(p); - bad_fork_cleanup_count: - atomic_dec(&p->cred->user->processes); --- -2.7.4 - diff --git a/0001-cpupower-Correct-return-type-of-cpu_power_is_cpu_onl.patch b/0001-cpupower-Correct-return-type-of-cpu_power_is_cpu_onl.patch new file mode 100644 index 000000000..05b8cf999 --- /dev/null +++ b/0001-cpupower-Correct-return-type-of-cpu_power_is_cpu_onl.patch @@ -0,0 +1,49 @@ +From 9f692cbe4a01dd9e3c3e954ec6b59662b68f9ce4 Mon Sep 17 00:00:00 2001 +From: Laura Abbott <labbott@redhat.com> +Date: Fri, 9 Sep 2016 10:19:02 -0700 +Subject: [PATCH] cpupower: Correct return type of cpu_power_is_cpu_online in + cpufreq +To: Thomas Renninger <trenn@suse.com> +Cc: linux-pm@vger.kernel.org +Cc: linux-kernel@vger.kernel.org + +When converting to a shared library in ac5a181d065d ("cpupower: Add +cpuidle parts into library"), cpu_freq_cpu_exists was converted to +cpupower_is_cpu_online. cpu_req_cpu_exists returned 0 on success and +-ENOSYS on failure whereas cpupower_is_cpu_online returns 1 on success. +Check for the correct return value in cpufreq-set. + +See https://bugzilla.redhat.com/show_bug.cgi?id=1374212 + +Fixes: ac5a181d065d ("cpupower: Add cpuidle parts into library") +Reported-by: Julian Seward <jseward@acm.org> +Signed-off-by: Laura Abbott <labbott@redhat.com> +--- + tools/power/cpupower/utils/cpufreq-set.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tools/power/cpupower/utils/cpufreq-set.c b/tools/power/cpupower/utils/cpufreq-set.c +index b4bf769..8971d71 100644 +--- a/tools/power/cpupower/utils/cpufreq-set.c ++++ b/tools/power/cpupower/utils/cpufreq-set.c +@@ -296,7 +296,7 @@ int cmd_freq_set(int argc, char **argv) + struct cpufreq_affected_cpus *cpus; + + if (!bitmask_isbitset(cpus_chosen, cpu) || +- cpupower_is_cpu_online(cpu)) ++ cpupower_is_cpu_online(cpu) != 1) + continue; + + cpus = cpufreq_get_related_cpus(cpu); +@@ -316,7 +316,7 @@ int cmd_freq_set(int argc, char **argv) + cpu <= bitmask_last(cpus_chosen); cpu++) { + + if (!bitmask_isbitset(cpus_chosen, cpu) || +- cpupower_is_cpu_online(cpu)) ++ cpupower_is_cpu_online(cpu) != 1) + continue; + + if (cpupower_is_cpu_online(cpu) != 1) +-- +2.10.0 + diff --git a/0001-iio-Use-event-header-from-kernel-tree.patch b/0001-iio-Use-event-header-from-kernel-tree.patch new file mode 100644 index 000000000..1724db3fd --- /dev/null +++ b/0001-iio-Use-event-header-from-kernel-tree.patch @@ -0,0 +1,64 @@ +From 0eadbb65c0026fb4eec89c54f6b48a0febd87f92 Mon Sep 17 00:00:00 2001 +From: Laura Abbott <labbott@redhat.com> +Date: Fri, 9 Sep 2016 08:19:17 -0700 +Subject: [PATCH] iio: Use type header from kernel tree +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +To: Jonathan Cameron <jic23@kernel.org> +To: Hartmut Knaack <knaack.h@gmx.de> +To: Lars-Peter Clausen <lars@metafoo.de> +To: Peter Meerwald-Stadler <pmeerw@pmeerw.net> +Cc: linux-iio@vger.kernel.org +Cc: linux-kernel@vger.kernel.org + + +The iio tools have been updated as new event types have been added to +the kernel. The tools currently use the standard system headers which +means that the system may not have the newest defintitions. This leads +to build failures when building newer tools on older hosts: + +gcc -Wall -g -D_GNU_SOURCE -c -o iio_event_monitor.o +iio_event_monitor.c +iio_event_monitor.c:59:3: error: ‘IIO_UVINDEX’ undeclared here (not in a +function) + [IIO_UVINDEX] = "uvindex", + ^~~~~~~~~~~ +iio_event_monitor.c:59:3: error: array index in initializer not of +integer type +iio_event_monitor.c:59:3: note: (near initialization for +‘iio_chan_type_name_spec’) +iio_event_monitor.c:97:3: error: ‘IIO_MOD_LIGHT_UV’ undeclared here (not +in a function) + [IIO_MOD_LIGHT_UV] = "uv", + ^~~~~~~~~~~~~~~~ +iio_event_monitor.c:97:3: error: array index in initializer not of +integer type +iio_event_monitor.c:97:3: note: (near initialization for +‘iio_modifier_names’) +<builtin>: recipe for target 'iio_event_monitor.o' failed + +Switch to using the header from the kernel tree to ensure the newest +defintions are always picked up. + +Signed-off-by: Laura Abbott <labbott@redhat.com> +--- + tools/iio/iio_event_monitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/iio/iio_event_monitor.c b/tools/iio/iio_event_monitor.c +index d9b7e0f..f02523d 100644 +--- a/tools/iio/iio_event_monitor.c ++++ b/tools/iio/iio_event_monitor.c +@@ -26,7 +26,7 @@ + #include <sys/ioctl.h> + #include "iio_utils.h" + #include <linux/iio/events.h> +-#include <linux/iio/types.h> ++#include "../../include/uapi/linux/iio/types.h" + + static const char * const iio_chan_type_name_spec[] = { + [IIO_VOLTAGE] = "voltage", +-- +2.7.4 + diff --git a/kernel.spec b/kernel.spec index 5901dafcb..421d5c2c0 100644 --- a/kernel.spec +++ b/kernel.spec @@ -60,7 +60,7 @@ Summary: The Linux kernel # Do we have a -stable update to apply? -%define stable_update 3 +%define stable_update 4 # Set rpm version accordingly %if 0%{?stable_update} %define stablerev %{stable_update} @@ -652,12 +652,15 @@ Patch858: 0001-OOM-detection-regressions-since-4.7.patch #rhbz 1360688 Patch859: rc-core-fix-repeat-events.patch -# https://lkml.org/lkml/2016/8/30/566 -Patch861: 0001-cgroup-reduce-read-locked-section-of-cgroup_threadgr.patch - #rhbz 1350174 Patch862: tip-x86-boot-x86-KASLR-x86-power-Remove-x86-hibernation-restrictions.patch +#rhbz 1374212 +Patch863: 0001-cpupower-Correct-return-type-of-cpu_power_is_cpu_onl.patch + +#ongoing complaint, full discussion delayed until ksummit/plumbers +Patch864: 0001-iio-Use-event-header-from-kernel-tree.patch + # END OF PATCH DEFINITIONS %endif @@ -2183,6 +2186,13 @@ fi # # %changelog +* Thu Sep 15 2016 Laura Abbott <labbott@fedoraproject.org> - 4.7.4-100 +- Linux v4.7.4 + +* Wed Sep 14 2016 Laura Abbott <labbott@fedoraproject.org> +- Fix for incorrect return checking in cpupower (rhbz 1374212) +- Let iio tools build on older kernels + * Wed Sep 07 2016 <labbott@fedoraproject.org> - 4.7.3-100 - Linux v4.7.3 - Silence KASLR warning (rhbz 1350174) @@ -1,3 +1,3 @@ 5276563eb1f39a048e4a8a887408c031 linux-4.7.tar.xz fe259c02c75eec61d1aa4b1211f3c853 perf-man-4.7.tar.gz -803bdedd9b9cd4ef43d9d5d41801f234 patch-4.7.3.xz +150cff5d90bd90217848974269a770ee patch-4.7.4.xz |