From: Greg Kroah-Hartman Date: Thu, 25 Oct 2012 19:55:29 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.49~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=27d2605ec0f08926c40f1d91f9919810d547ec37;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: amd64_edac-__amd64_set_scrub_rate-avoid-overindexing-scrubrates.patch cgroup-notify_on_release-may-not-be-triggered-in-some-cases.patch --- diff --git a/queue-3.0/amd64_edac-__amd64_set_scrub_rate-avoid-overindexing-scrubrates.patch b/queue-3.0/amd64_edac-__amd64_set_scrub_rate-avoid-overindexing-scrubrates.patch new file mode 100644 index 00000000000..738c5fc7f2b --- /dev/null +++ b/queue-3.0/amd64_edac-__amd64_set_scrub_rate-avoid-overindexing-scrubrates.patch @@ -0,0 +1,59 @@ +From 168bfeef7bba3f9784f7540b053e4ac72b769ce9 Mon Sep 17 00:00:00 2001 +From: Andrew Morton +Date: Tue, 23 Oct 2012 14:09:39 -0700 +Subject: amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[] + +From: Andrew Morton + +commit 168bfeef7bba3f9784f7540b053e4ac72b769ce9 upstream. + +If none of the elements in scrubrates[] matches, this loop will cause +__amd64_set_scrub_rate() to incorrectly use the n+1th element. + +As the function is designed to use the final scrubrates[] element in the +case of no match, we can fix this bug by simply terminating the array +search at the n-1th element. + +Boris: this code is fragile anyway, see here why: +http://marc.info/?l=linux-kernel&m=135102834131236&w=2 + +It will be rewritten more robustly soonish. + +Reported-by: Denis Kirjanov +Cc: Doug Thompson +Signed-off-by: Andrew Morton +Signed-off-by: Borislav Petkov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/edac/amd64_edac.c | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +--- a/drivers/edac/amd64_edac.c ++++ b/drivers/edac/amd64_edac.c +@@ -161,8 +161,11 @@ static int __amd64_set_scrub_rate(struct + * memory controller and apply to register. Search for the first + * bandwidth entry that is greater or equal than the setting requested + * and program that. If at last entry, turn off DRAM scrubbing. ++ * ++ * If no suitable bandwidth is found, turn off DRAM scrubbing entirely ++ * by falling back to the last element in scrubrates[]. + */ +- for (i = 0; i < ARRAY_SIZE(scrubrates); i++) { ++ for (i = 0; i < ARRAY_SIZE(scrubrates) - 1; i++) { + /* + * skip scrub rates which aren't recommended + * (see F10 BKDG, F3x58) +@@ -172,12 +175,6 @@ static int __amd64_set_scrub_rate(struct + + if (scrubrates[i].bandwidth <= new_bw) + break; +- +- /* +- * if no suitable bandwidth found, turn off DRAM scrubbing +- * entirely by falling back to the last element in the +- * scrubrates array. +- */ + } + + scrubval = scrubrates[i].scrubval; diff --git a/queue-3.0/cgroup-notify_on_release-may-not-be-triggered-in-some-cases.patch b/queue-3.0/cgroup-notify_on_release-may-not-be-triggered-in-some-cases.patch new file mode 100644 index 00000000000..868aa8efec2 --- /dev/null +++ b/queue-3.0/cgroup-notify_on_release-may-not-be-triggered-in-some-cases.patch @@ -0,0 +1,55 @@ +From 1f5320d5972aa50d3e8d2b227b636b370e608359 Mon Sep 17 00:00:00 2001 +From: Daisuke Nishimura +Date: Thu, 4 Oct 2012 16:37:16 +0900 +Subject: cgroup: notify_on_release may not be triggered in some cases + +From: Daisuke Nishimura + +commit 1f5320d5972aa50d3e8d2b227b636b370e608359 upstream. + +notify_on_release must be triggered when the last process in a cgroup is +move to another. But if the first(and only) process in a cgroup is moved to +another, notify_on_release is not triggered. + + # mkdir /cgroup/cpu/SRC + # mkdir /cgroup/cpu/DST + # + # echo 1 >/cgroup/cpu/SRC/notify_on_release + # echo 1 >/cgroup/cpu/DST/notify_on_release + # + # sleep 300 & + [1] 8629 + # + # echo 8629 >/cgroup/cpu/SRC/tasks + # echo 8629 >/cgroup/cpu/DST/tasks + -> notify_on_release for /SRC must be triggered at this point, + but it isn't. + +This is because put_css_set() is called before setting CGRP_RELEASABLE +in cgroup_task_migrate(), and is a regression introduce by the +commit:74a1166d(cgroups: make procs file writable), which was merged +into v3.0. + +Acked-by: Li Zefan +Cc: Ben Blum +Signed-off-by: Daisuke Nishimura +Signed-off-by: Tejun Heo +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/cgroup.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/kernel/cgroup.c ++++ b/kernel/cgroup.c +@@ -1800,9 +1800,8 @@ static int cgroup_task_migrate(struct cg + * trading it for newcg is protected by cgroup_mutex, we're safe to drop + * it here; it will be freed under RCU. + */ +- put_css_set(oldcg); +- + set_bit(CGRP_RELEASABLE, &oldcgrp->flags); ++ put_css_set(oldcg); + return 0; + } + diff --git a/queue-3.0/series b/queue-3.0/series index d5c885f2808..80b91959aff 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -12,3 +12,5 @@ usb-cdc-acm-fix-pipe-type-of-write-endpoint.patch usb-acm-fix-the-computation-of-the-number-of-data-bits.patch usb-option-blacklist-net-interface-on-zte-devices.patch usb-option-add-more-zte-devices.patch +cgroup-notify_on_release-may-not-be-triggered-in-some-cases.patch +amd64_edac-__amd64_set_scrub_rate-avoid-overindexing-scrubrates.patch