[kernel] r17184 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series
Ben Hutchings
benh at alioth.debian.org
Sun Apr 3 04:14:13 UTC 2011
Author: benh
Date: Sun Apr 3 04:14:00 2011
New Revision: 17184
Log:
appletalk: Fix bugs introduced when removing use of BKL
Added:
dists/sid/linux-2.6/debian/patches/bugfix/all/appletalk-Fix-OOPS-in-atalk_release.patch
dists/sid/linux-2.6/debian/patches/bugfix/all/net-appletalk-fix-atalk_release-use-after-free.patch
Modified:
dists/sid/linux-2.6/debian/changelog
dists/sid/linux-2.6/debian/patches/series/3
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog Sun Apr 3 01:59:46 2011 (r17183)
+++ dists/sid/linux-2.6/debian/changelog Sun Apr 3 04:14:00 2011 (r17184)
@@ -3,6 +3,7 @@
[ Ben Hutchings ]
* [ppc64] Add to linux-tools package architectures (Closes: #620124)
* [amd64] Save cr4 to mmu_cr4_features at boot time (Closes: #620284)
+ * appletalk: Fix bugs introduced when removing use of BKL
[ Aurelien Jarno ]
* rtlwifi: fix build when PCI is not enabled.
Added: dists/sid/linux-2.6/debian/patches/bugfix/all/appletalk-Fix-OOPS-in-atalk_release.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/appletalk-Fix-OOPS-in-atalk_release.patch Sun Apr 3 04:14:00 2011 (r17184)
@@ -0,0 +1,49 @@
+From: David S. Miller <davem at davemloft.net>
+Date: Thu, 31 Mar 2011 18:59:10 -0700
+Subject: [PATCH 3/3] appletalk: Fix OOPS in atalk_release().
+
+commit c100c8f4c3c6f2a407bdbaaad2c4f1062e6a473a upstream.
+
+Commit 60d9f461a20ba59219fdcdc30cbf8e3a4ad3f625 ("appletalk: remove
+the BKL") added a dereference of "sk" before checking for NULL in
+atalk_release().
+
+Guard the code block completely, rather than partially, with the
+NULL check.
+
+Reported-by: Dave Jones <davej at redhat.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ net/appletalk/ddp.c | 11 ++++++-----
+ 1 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
+index 206e771..956a530 100644
+--- a/net/appletalk/ddp.c
++++ b/net/appletalk/ddp.c
+@@ -1051,16 +1051,17 @@ static int atalk_release(struct socket *sock)
+ {
+ struct sock *sk = sock->sk;
+
+- sock_hold(sk);
+- lock_sock(sk);
+ if (sk) {
++ sock_hold(sk);
++ lock_sock(sk);
++
+ sock_orphan(sk);
+ sock->sk = NULL;
+ atalk_destroy_socket(sk);
+- }
+- release_sock(sk);
+- sock_put(sk);
+
++ release_sock(sk);
++ sock_put(sk);
++ }
+ return 0;
+ }
+
+--
+1.7.4.1
+
Added: dists/sid/linux-2.6/debian/patches/bugfix/all/net-appletalk-fix-atalk_release-use-after-free.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/net-appletalk-fix-atalk_release-use-after-free.patch Sun Apr 3 04:14:00 2011 (r17184)
@@ -0,0 +1,43 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Date: Mon, 21 Mar 2011 18:18:00 -0700
+Subject: [PATCH 2/3] net/appletalk: fix atalk_release use after free
+
+commit b20e7bbfc7a15a4182730f0936433145992b4b06 upstream.
+
+The BKL removal in appletalk introduced a use-after-free problem,
+where atalk_destroy_socket frees a sock, but we still release
+the socket lock on it.
+
+An easy fix is to take an extra reference on the sock and sock_put
+it when returning from atalk_release.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ net/appletalk/ddp.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
+index 3d4f4b0..206e771 100644
+--- a/net/appletalk/ddp.c
++++ b/net/appletalk/ddp.c
+@@ -1051,6 +1051,7 @@ static int atalk_release(struct socket *sock)
+ {
+ struct sock *sk = sock->sk;
+
++ sock_hold(sk);
+ lock_sock(sk);
+ if (sk) {
+ sock_orphan(sk);
+@@ -1058,6 +1059,8 @@ static int atalk_release(struct socket *sock)
+ atalk_destroy_socket(sk);
+ }
+ release_sock(sk);
++ sock_put(sk);
++
+ return 0;
+ }
+
+--
+1.7.4.1
+
Modified: dists/sid/linux-2.6/debian/patches/series/3
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/3 Sun Apr 3 01:59:46 2011 (r17183)
+++ dists/sid/linux-2.6/debian/patches/series/3 Sun Apr 3 04:14:00 2011 (r17184)
@@ -1,3 +1,5 @@
+ bugfix/all/rtlwifi-Let-rtlwifi-build-when-PCI-is-not-enabled.patch
+ bugfix/all/rtlwifi-remove-bogus-udelay-calls.patch
+ bugfix/x86/Save-cr4-to-mmu_cr4_features-at-boot-time.patch
++ bugfix/all/net-appletalk-fix-atalk_release-use-after-free.patch
++ bugfix/all/appletalk-Fix-OOPS-in-atalk_release.patch
More information about the Kernel-svn-changes
mailing list