diff --git a/debian/changelog b/debian/changelog index b004bb3cb..0de29209a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,8 @@ linux-2.6 (2.6.39-3) UNRELEASED; urgency=low instead of libqt3-mt-dev (Closes: #631666) * [armhf] Add omap flavour, thanks to Sebastian Reichel * [armhf] rtc-twl: Switch to using threaded irq + * bridge/netfilter: provide a cow_metrics method for fake_ops + (Closes: #629932) [ maximilian attems ] * Add stable 2.6.39.2, including: diff --git a/debian/patches/bugfix/all/bridge-provide-a-cow_metrics-method-for-fake_ops.patch b/debian/patches/bugfix/all/bridge-provide-a-cow_metrics-method-for-fake_ops.patch new file mode 100644 index 000000000..6d5e67621 --- /dev/null +++ b/debian/patches/bugfix/all/bridge-provide-a-cow_metrics-method-for-fake_ops.patch @@ -0,0 +1,100 @@ +From: Alexander Holler +Date: Tue, 7 Jun 2011 00:51:35 -0700 +Subject: [PATCH] bridge: provide a cow_metrics method for fake_ops + +commit 6407d74c5106bb362b4087693688afd34942b094 upstream. + +Like in commit 0972ddb237 (provide cow_metrics() methods to blackhole +dst_ops), we must provide a cow_metrics for bridges fake_dst_ops as +well. + +This fixes a regression coming from commits 62fa8a846d7d (net: Implement +read-only protection and COW'ing of metrics.) and 33eb9873a28 (bridge: +initialize fake_rtable metrics) + +ip link set mybridge mtu 1234 +--> +[ 136.546243] Pid: 8415, comm: ip Tainted: P +2.6.39.1-00006-g40545b7 #103 ASUSTeK Computer Inc. V1Sn + /V1Sn +[ 136.546256] EIP: 0060:[<00000000>] EFLAGS: 00010202 CPU: 0 +[ 136.546268] EIP is at 0x0 +[ 136.546273] EAX: f14a389c EBX: 000005d4 ECX: f80d32c0 EDX: f80d1da1 +[ 136.546279] ESI: f14a3000 EDI: f255bf10 EBP: f15c3b54 ESP: f15c3b48 +[ 136.546285] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 +[ 136.546293] Process ip (pid: 8415, ti=f15c2000 task=f4741f80 +task.ti=f15c2000) +[ 136.546297] Stack: +[ 136.546301] f80c658f f14a3000 ffffffed f15c3b64 c12cb9c8 f80d1b80 +ffffffa1 f15c3bbc +[ 136.546315] c12da347 c12d9c7d 00000000 f7670b00 00000000 f80d1b80 +ffffffa6 f15c3be4 +[ 136.546329] 00000004 f14a3000 f255bf20 00000008 f15c3bbc c11d6cae +00000000 00000000 +[ 136.546343] Call Trace: +[ 136.546359] [] ? br_change_mtu+0x5f/0x80 [bridge] +[ 136.546372] [] dev_set_mtu+0x38/0x80 +[ 136.546381] [] do_setlink+0x1a7/0x860 +[ 136.546390] [] ? rtnl_fill_ifinfo+0x9bd/0xc70 +[ 136.546400] [] ? nla_parse+0x6e/0xb0 +[ 136.546409] [] rtnl_newlink+0x361/0x510 +[ 136.546420] [] ? vmalloc_sync_all+0x100/0x100 +[ 136.546429] [] ? error_code+0x5a/0x60 +[ 136.546438] [] ? rtnl_configure_link+0x80/0x80 +[ 136.546446] [] rtnetlink_rcv_msg+0xfa/0x210 +[ 136.546454] [] ? __rtnl_unlock+0x20/0x20 +[ 136.546463] [] netlink_rcv_skb+0x8e/0xb0 +[ 136.546471] [] rtnetlink_rcv+0x1c/0x30 +[ 136.546479] [] netlink_unicast+0x23a/0x280 +[ 136.546487] [] netlink_sendmsg+0x26b/0x2f0 +[ 136.546497] [] sock_sendmsg+0xc8/0x100 +[ 136.546508] [] ? __alloc_pages_nodemask+0xe1/0x750 +[ 136.546517] [] ? _copy_from_user+0x42/0x60 +[ 136.546525] [] ? verify_iovec+0x4c/0xc0 +[ 136.546534] [] sys_sendmsg+0x1c5/0x200 +[ 136.546542] [] ? __do_fault+0x310/0x410 +[ 136.546549] [] ? do_wp_page+0x1d6/0x6b0 +[ 136.546557] [] ? handle_pte_fault+0xe1/0x720 +[ 136.546565] [] ? sys_getsockname+0x7f/0x90 +[ 136.546574] [] ? handle_mm_fault+0xb1/0x180 +[ 136.546582] [] ? vmalloc_sync_all+0x100/0x100 +[ 136.546589] [] ? do_page_fault+0x173/0x3d0 +[ 136.546596] [] ? sys_recvmsg+0x3b/0x60 +[ 136.546605] [] sys_socketcall+0x293/0x2d0 +[ 136.546614] [] sysenter_do_call+0x12/0x26 +[ 136.546619] Code: Bad EIP value. +[ 136.546627] EIP: [<00000000>] 0x0 SS:ESP 0068:f15c3b48 +[ 136.546645] CR2: 0000000000000000 +[ 136.546652] ---[ end trace 6909b560e78934fa ]--- + +Signed-off-by: Alexander Holler +Signed-off-by: Eric Dumazet +Signed-off-by: David S. Miller +--- + net/bridge/br_netfilter.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c +index 3fa1231..56149ec 100644 +--- a/net/bridge/br_netfilter.c ++++ b/net/bridge/br_netfilter.c +@@ -104,10 +104,16 @@ static void fake_update_pmtu(struct dst_entry *dst, u32 mtu) + { + } + ++static u32 *fake_cow_metrics(struct dst_entry *dst, unsigned long old) ++{ ++ return NULL; ++} ++ + static struct dst_ops fake_dst_ops = { + .family = AF_INET, + .protocol = cpu_to_be16(ETH_P_IP), + .update_pmtu = fake_update_pmtu, ++ .cow_metrics = fake_cow_metrics, + }; + + /* +-- +1.7.5.4 + diff --git a/debian/patches/series/3 b/debian/patches/series/3 index 775d99b6c..f7a6f9488 100644 --- a/debian/patches/series/3 +++ b/debian/patches/series/3 @@ -1,3 +1,4 @@ + bugfix/x86/Revert-drm-i915-Enable-GMBUS-for-post-gen2-chipsets.patch + bugfix/all/stable/2.6.39.2 + bugfix/arm/rtc-twl-Switch-to-using-threaded_irq.patch ++ bugfix/all/bridge-provide-a-cow_metrics-method-for-fake_ops.patch