Update to 3.1.8

svn path=/dists/sid/linux-2.6/; revision=18457
This commit is contained in:
Ben Hutchings 2012-01-08 00:24:03 +00:00
parent 7193956cc5
commit 85136b37c3
6 changed files with 17 additions and 263 deletions

22
debian/changelog vendored
View File

@ -1,17 +1,29 @@
linux-2.6 (3.1.6-2) UNRELEASED; urgency=low
linux-2.6 (3.1.8-1) UNRELEASED; urgency=low
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.7
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.1.8
- Revert "clockevents: Set noop handler in clockevents_exchange_device()",
included in stable update 3.1.5 (Closes: #653398)
- cfq-iosched: fix cfq_cic_link() race condition
- binary_sysctl(): fix memory leak
- cgroups: fix a css_set not found bug in cgroup_attach_proc
- iwlwifi: allow to switch to HT40 if not associated (Closes: #653423)
- futex: Fix uninterruptible loop due to gate_area
- drm/radeon/kms: bail on BTC parts if MC ucode is missing
- [sparc] sparc64: Fix masking and shifting in VIS fpcmp emulation.
- llc: llc_cmsg_rcv was getting called after sk_eat_skb.
- ipv4: reintroduce route cache garbage collector
- Revert "rtc: Disable the alarm in the hardware" (Closes: #652869)
[ Ben Hutchings ]
* snapshot: Implement compat_ioctl (Closes: #502816)
* iwlwifi: allow to switch to HT40 if not associated (Closes: #653423)
* drm/radeon: flush read cache for gtt with fence on r6xx and newer GPU
(Closes: #646376)
* net: introduce DST_NOPEER dst flag (fixes crash when using br_netfilter)
* rtc: Fix alarm rollover when day or month is out-of-range (Closes: #646429)
* l2tp: ensure sk->dst is still valid (Closes: #652503)
* Update Russian debconf template translations (Yuri Kozlov)
(Closes: #653716)
* Revert "clockevents: Set noop handler in clockevents_exchange_device()",
included in stable update 3.1.5 (Closes: #653398)
[ Jonathan Nieder ]
* prerm: Print an error message when aborting removal of the running

View File

@ -1,39 +0,0 @@
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Date: Wed, 14 Dec 2011 08:22:36 -0800
Subject: iwlwifi: allow to switch to HT40 if not associated
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
commit 78feb35b8161acd95c33a703ed6ab6f554d29387 upstream.
My previous patch
34a5b4b6af104cf18eb50748509528b9bdbc4036 iwlwifi: do not re-configure
HT40 after associated
Fix the case of HT40 after association on specified AP, but it break the
association for some APs and cause not able to establish connection.
We need to address HT40 before and after addociation.
Reported-by: Andrej Gelenberg <andrej.gelenberg@udo.edu>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Tested-by: Andrej Gelenberg <andrej.gelenberg@udo.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
@@ -620,8 +620,8 @@ int iwlagn_mac_config(struct ieee80211_h
if (ctx->ht.enabled) {
/* if HT40 is used, it should not change
* after associated except channel switch */
- if (iwl_is_associated_ctx(ctx) &&
- !ctx->ht.is_40mhz)
+ if (!ctx->ht.is_40mhz ||
+ !iwl_is_associated_ctx(ctx))
iwlagn_config_ht40(conf, ctx);
} else
ctx->ht.is_40mhz = false;

View File

@ -1,135 +0,0 @@
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Thu, 22 Dec 2011 04:15:53 +0000
Subject: [PATCH 2/2] net: introduce DST_NOPEER dst flag
commit e688a604807647c9450f9c12a7cb6d027150a895 upstream.
Chris Boot reported crashes occurring in ipv6_select_ident().
[ 461.457562] RIP: 0010:[<ffffffff812dde61>] [<ffffffff812dde61>]
ipv6_select_ident+0x31/0xa7
[ 461.578229] Call Trace:
[ 461.580742] <IRQ>
[ 461.582870] [<ffffffff812efa7f>] ? udp6_ufo_fragment+0x124/0x1a2
[ 461.589054] [<ffffffff812dbfe0>] ? ipv6_gso_segment+0xc0/0x155
[ 461.595140] [<ffffffff812700c6>] ? skb_gso_segment+0x208/0x28b
[ 461.601198] [<ffffffffa03f236b>] ? ipv6_confirm+0x146/0x15e
[nf_conntrack_ipv6]
[ 461.608786] [<ffffffff81291c4d>] ? nf_iterate+0x41/0x77
[ 461.614227] [<ffffffff81271d64>] ? dev_hard_start_xmit+0x357/0x543
[ 461.620659] [<ffffffff81291cf6>] ? nf_hook_slow+0x73/0x111
[ 461.626440] [<ffffffffa0379745>] ? br_parse_ip_options+0x19a/0x19a
[bridge]
[ 461.633581] [<ffffffff812722ff>] ? dev_queue_xmit+0x3af/0x459
[ 461.639577] [<ffffffffa03747d2>] ? br_dev_queue_push_xmit+0x72/0x76
[bridge]
[ 461.646887] [<ffffffffa03791e3>] ? br_nf_post_routing+0x17d/0x18f
[bridge]
[ 461.653997] [<ffffffff81291c4d>] ? nf_iterate+0x41/0x77
[ 461.659473] [<ffffffffa0374760>] ? br_flood+0xfa/0xfa [bridge]
[ 461.665485] [<ffffffff81291cf6>] ? nf_hook_slow+0x73/0x111
[ 461.671234] [<ffffffffa0374760>] ? br_flood+0xfa/0xfa [bridge]
[ 461.677299] [<ffffffffa0379215>] ?
nf_bridge_update_protocol+0x20/0x20 [bridge]
[ 461.684891] [<ffffffffa03bb0e5>] ? nf_ct_zone+0xa/0x17 [nf_conntrack]
[ 461.691520] [<ffffffffa0374760>] ? br_flood+0xfa/0xfa [bridge]
[ 461.697572] [<ffffffffa0374812>] ? NF_HOOK.constprop.8+0x3c/0x56
[bridge]
[ 461.704616] [<ffffffffa0379031>] ?
nf_bridge_push_encap_header+0x1c/0x26 [bridge]
[ 461.712329] [<ffffffffa037929f>] ? br_nf_forward_finish+0x8a/0x95
[bridge]
[ 461.719490] [<ffffffffa037900a>] ?
nf_bridge_pull_encap_header+0x1c/0x27 [bridge]
[ 461.727223] [<ffffffffa0379974>] ? br_nf_forward_ip+0x1c0/0x1d4 [bridge]
[ 461.734292] [<ffffffff81291c4d>] ? nf_iterate+0x41/0x77
[ 461.739758] [<ffffffffa03748cc>] ? __br_deliver+0xa0/0xa0 [bridge]
[ 461.746203] [<ffffffff81291cf6>] ? nf_hook_slow+0x73/0x111
[ 461.751950] [<ffffffffa03748cc>] ? __br_deliver+0xa0/0xa0 [bridge]
[ 461.758378] [<ffffffffa037533a>] ? NF_HOOK.constprop.4+0x56/0x56
[bridge]
This is caused by bridge netfilter special dst_entry (fake_rtable), a
special shared entry, where attaching an inetpeer makes no sense.
Problem is present since commit 87c48fa3b46 (ipv6: make fragment
identifications less predictable)
Introduce DST_NOPEER dst flag and make sure ipv6_select_ident() and
__ip_select_ident() fallback to the 'no peer attached' handling.
Reported-by: Chris Boot <bootc@bootc.net>
Tested-by: Chris Boot <bootc@bootc.net>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
include/net/dst.h | 1 +
net/bridge/br_netfilter.c | 2 +-
net/ipv4/route.c | 4 ++--
net/ipv6/ip6_output.c | 2 +-
4 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/include/net/dst.h b/include/net/dst.h
index 6faec1a..75766b4 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -53,6 +53,7 @@ struct dst_entry {
#define DST_NOHASH 0x0008
#define DST_NOCACHE 0x0010
#define DST_NOCOUNT 0x0020
+#define DST_NOPEER 0x0040
short error;
short obsolete;
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index 08757dc..fa8b8f7 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -147,7 +147,7 @@ void br_netfilter_rtable_init(struct net_bridge *br)
rt->dst.dev = br->dev;
rt->dst.path = &rt->dst;
dst_init_metrics(&rt->dst, br_dst_default_metrics, true);
- rt->dst.flags = DST_NOXFRM;
+ rt->dst.flags = DST_NOXFRM | DST_NOPEER;
rt->dst.ops = &fake_dst_ops;
}
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 85cc053..94cdbc5 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1367,7 +1367,7 @@ void __ip_select_ident(struct iphdr *iph, struct dst_entry *dst, int more)
{
struct rtable *rt = (struct rtable *) dst;
- if (rt) {
+ if (rt && !(rt->dst.flags & DST_NOPEER)) {
if (rt->peer == NULL)
rt_bind_peer(rt, rt->rt_dst, 1);
@@ -1378,7 +1378,7 @@ void __ip_select_ident(struct iphdr *iph, struct dst_entry *dst, int more)
iph->id = htons(inet_getid(rt->peer, more));
return;
}
- } else
+ } else if (!rt)
printk(KERN_DEBUG "rt_bind_peer(0) @%p\n",
__builtin_return_address(0));
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 84d0bd5..ec56271 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -603,7 +603,7 @@ void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt)
static atomic_t ipv6_fragmentation_id;
int old, new;
- if (rt) {
+ if (rt && !(rt->dst.flags & DST_NOPEER)) {
struct inet_peer *peer;
if (!rt->rt6i_peer)
--
1.7.7.3

View File

@ -1,54 +0,0 @@
From: Frantisek Hrbata <fhrbata@redhat.com>
Subject: [PATCH v2] oom: fix integer overflow of points in oom_badness
Date: Mon, 31 Oct 2011 16:56:09 +0100
An integer overflow will happen on 64bit archs if task's sum of rss, swapents
and nr_ptes exceeds (2^31)/1000 value. This was introduced by commit
f755a04 oom: use pte pages in OOM score
where the oom score computation was divided into several steps and it's no
longer computed as one expression in unsigned long(rss, swapents, nr_pte are
unsigned long), where the result value assigned to points(int) is in
range(1..1000). So there could be an int overflow while computing
176 points *= 1000;
and points may have negative value. Meaning the oom score for a mem hog task
will be one.
196 if (points <= 0)
197 return 1;
For example:
[ 3366] 0 3366 35390480 24303939 5 0 0 oom01
Out of memory: Kill process 3366 (oom01) score 1 or sacrifice child
Here the oom1 process consumes more than 24303939(rss)*4096~=92GB physical
memory, but it's oom score is one.
In this situation the mem hog task is skipped and oom killer kills another and
most probably innocent task with oom score greater than one.
The points variable should be of type long instead of int to prevent the int
overflow.
Signed-off-by: Frantisek Hrbata <fhrbata@redhat.com>
---
mm/oom_kill.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 626303b..e9a1785 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -162,7 +162,7 @@ static bool oom_unkillable_task(struct task_struct *p,
unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem,
const nodemask_t *nodemask, unsigned long totalpages)
{
- int points;
+ long points;
if (oom_unkillable_task(p, mem, nodemask))
return 0;
--
1.7.6.4

View File

@ -1,26 +0,0 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Fri, 30 Dec 2011 17:48:49 +0100
Subject: [PATCH] Revert "clockevents: Set noop handler in
clockevents_exchange_device()"
This reverts commit aeed6baa702a285cf03b7dc4182ffc1a7f4e4ed6.
It caused some systems to hang on resume (e.g. #653398).
---
kernel/time/clockevents.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
index 13dfaab..e4c699d 100644
--- a/kernel/time/clockevents.c
+++ b/kernel/time/clockevents.c
@@ -286,7 +286,6 @@ void clockevents_exchange_device(struct clock_event_device *old,
* released list and do a notify add later.
*/
if (old) {
- old->event_handler = clockevents_handle_noop;
clockevents_set_mode(old, CLOCK_EVT_MODE_UNUSED);
list_del(&old->list);
list_add(&old->list, &clockevents_released);
--
1.7.7.3

View File

@ -43,7 +43,6 @@
+ bugfix/ia64/ia64-gpio-GENERIC_GPIO-default-must-be-n.patch
+ features/x86/libertas-prioritize-usb8388_olpc.bin-firmware-on-OLPC-machines.patch
+ bugfix/arm/ARM-ixp4xx-gpiolib-support.patch
+ bugfix/all/oom-fix-integer-overflow-of-points-in-oom_badness.patch
+ bugfix/alpha/alpha-wire-up-accept4-syscall.patch
+ bugfix/all/iwlagn-fix-modinfo-display-for-135-ucode.patch
+ bugfix/powerpc/powerpc-ptrace-Fix-build-with-gcc-4.6.patch
@ -87,9 +86,6 @@
+ debian/inetpeer-hide-ABI-change-in-3.1.5.patch
+ bugfix/all/cciss-Add-IRQF_SHARED-back-in-for-the-non-MSI-X-inte.patch
+ bugfix/all/snapshot-Implement-compat_ioctl.patch
+ bugfix/all/iwlwifi-allow-to-switch-to-ht40-if-not-associated.patch
+ bugfix/all/drm-radeon-flush-read-cache-for-gtt-with-fence-on-r6.patch
+ bugfix/all/net-introduce-DST_NOPEER-dst-flag.patch
+ bugfix/all/rtc-Fix-alarm-rollover-when-day-or-month-is-out-of-r.patch
+ bugfix/all/l2tp-ensure-sk-dst-is-still-valid.patch
+ bugfix/all/revert-clockevents-Set-noop-handler-in-clockevents_e.patch