]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
remove queue-3.4/genetlink-fix-family-dump-race.patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Aug 2013 15:27:47 +0000 (08:27 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Aug 2013 15:27:47 +0000 (08:27 -0700)
queue-3.4/genetlink-fix-family-dump-race.patch [deleted file]
queue-3.4/series

diff --git a/queue-3.4/genetlink-fix-family-dump-race.patch b/queue-3.4/genetlink-fix-family-dump-race.patch
deleted file mode 100644 (file)
index e5bb356..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-From 58ad436fcf49810aa006016107f494c9ac9013db Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg@intel.com>
-Date: Tue, 13 Aug 2013 09:04:05 +0200
-Subject: genetlink: fix family dump race
-
-From: Johannes Berg <johannes.berg@intel.com>
-
-commit 58ad436fcf49810aa006016107f494c9ac9013db upstream.
-
-When dumping generic netlink families, only the first dump call
-is locked with genl_lock(), which protects the list of families,
-and thus subsequent calls can access the data without locking,
-racing against family addition/removal. This can cause a crash.
-Fix it - the locking needs to be conditional because the first
-time around it's already locked.
-
-A similar bug was reported to me on an old kernel (3.4.47) but
-the exact scenario that happened there is no longer possible,
-on those kernels the first round wasn't locked either. Looking
-at the current code I found the race described above, which had
-also existed on the old kernel.
-
-Reported-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- net/netlink/genetlink.c |    7 +++++++
- 1 file changed, 7 insertions(+)
-
---- a/net/netlink/genetlink.c
-+++ b/net/netlink/genetlink.c
-@@ -744,6 +744,10 @@ static int ctrl_dumpfamily(struct sk_buf
-       struct net *net = sock_net(skb->sk);
-       int chains_to_skip = cb->args[0];
-       int fams_to_skip = cb->args[1];
-+      bool need_locking = chains_to_skip || fams_to_skip;
-+
-+      if (need_locking)
-+              genl_lock();
-       for (i = chains_to_skip; i < GENL_FAM_TAB_SIZE; i++) {
-               n = 0;
-@@ -765,6 +769,9 @@ errout:
-       cb->args[0] = i;
-       cb->args[1] = n;
-+      if (need_locking)
-+              genl_unlock();
-+
-       return skb->len;
- }
index 39ff1ebd971355f171a90d399e24a0b5257b8f77..8290f9ec571bf088a761774a05e01952fe1f7899 100644 (file)
@@ -23,7 +23,6 @@ af_key-initialize-satype-in-key_notify_policy_flush.patch
 iwl4965-set-power-mode-early.patch
 iwl4965-reset-firmware-after-rfkill-off.patch
 can-pcan_usb-fix-wrong-memcpy-bytes-length.patch
-genetlink-fix-family-dump-race.patch
 usb-add-two-quirky-touchscreen.patch
 usb-mos7720-fix-broken-control-requests.patch
 xtensa-fix-linker-script-transformation-for-.text.unlikely.patch