]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Oct 2012 19:55:29 +0000 (12:55 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Oct 2012 19:55:29 +0000 (12:55 -0700)
added patches:
amd64_edac-__amd64_set_scrub_rate-avoid-overindexing-scrubrates.patch
cgroup-notify_on_release-may-not-be-triggered-in-some-cases.patch

queue-3.0/amd64_edac-__amd64_set_scrub_rate-avoid-overindexing-scrubrates.patch [new file with mode: 0644]
queue-3.0/cgroup-notify_on_release-may-not-be-triggered-in-some-cases.patch [new file with mode: 0644]
queue-3.0/series

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 (file)
index 0000000..738c5fc
--- /dev/null
@@ -0,0 +1,59 @@
+From 168bfeef7bba3f9784f7540b053e4ac72b769ce9 Mon Sep 17 00:00:00 2001
+From: Andrew Morton <akpm@linux-foundation.org>
+Date: Tue, 23 Oct 2012 14:09:39 -0700
+Subject: amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[]
+
+From: Andrew Morton <akpm@linux-foundation.org>
+
+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 <kirjanov@gmail.com>
+Cc: Doug Thompson <dougthompson@xmission.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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 (file)
index 0000000..868aa8e
--- /dev/null
@@ -0,0 +1,55 @@
+From 1f5320d5972aa50d3e8d2b227b636b370e608359 Mon Sep 17 00:00:00 2001
+From: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
+Date: Thu, 4 Oct 2012 16:37:16 +0900
+Subject: cgroup: notify_on_release may not be triggered in some cases
+
+From: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
+
+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 <lizefan@huawei.com>
+Cc: Ben Blum <bblum@andrew.cmu.edu>
+Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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;
+ }
index d5c885f2808f4565f769da4a3ac3e7e882eeac84..80b91959aff112cb0797aeaa83f0909e19e3febd 100644 (file)
@@ -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