stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Paul Moore <pmoore@redhat.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: [ 36/40] netlabel: correctly list all the static label mappings
Date: Mon, 18 Mar 2013 14:11:14 -0700	[thread overview]
Message-ID: <20130318211018.857192841@linuxfoundation.org> (raw)
In-Reply-To: <20130318211016.254453918@linuxfoundation.org>

3.0-stable review patch.  If anyone has any objections, please let me know.

------------------


From: Paul Moore <pmoore@redhat.com>

[ Upstream commits 0c1233aba1e948c37f6dc7620cb7c253fcd71ce9 and
  a6a8fe950e1b8596bb06f2c89c3a1a4bf2011ba9 ]

When we have a large number of static label mappings that spill across
the netlink message boundary we fail to properly save our state in the
netlink_callback struct which causes us to repeat the same listings.
This patch fixes this problem by saving the state correctly between
calls to the NetLabel static label netlink "dumpit" routines.

Signed-off-by: Paul Moore <pmoore@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/netlabel/netlabel_unlabeled.c |   27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

--- a/net/netlabel/netlabel_unlabeled.c
+++ b/net/netlabel/netlabel_unlabeled.c
@@ -1192,8 +1192,6 @@ static int netlbl_unlabel_staticlist(str
 	struct netlbl_unlhsh_walk_arg cb_arg;
 	u32 skip_bkt = cb->args[0];
 	u32 skip_chain = cb->args[1];
-	u32 skip_addr4 = cb->args[2];
-	u32 skip_addr6 = cb->args[3];
 	u32 iter_bkt;
 	u32 iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0;
 	struct netlbl_unlhsh_iface *iface;
@@ -1218,7 +1216,7 @@ static int netlbl_unlabel_staticlist(str
 				continue;
 			netlbl_af4list_foreach_rcu(addr4,
 						   &iface->addr4_list) {
-				if (iter_addr4++ < skip_addr4)
+				if (iter_addr4++ < cb->args[2])
 					continue;
 				if (netlbl_unlabel_staticlist_gen(
 					      NLBL_UNLABEL_C_STATICLIST,
@@ -1234,7 +1232,7 @@ static int netlbl_unlabel_staticlist(str
 #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
 			netlbl_af6list_foreach_rcu(addr6,
 						   &iface->addr6_list) {
-				if (iter_addr6++ < skip_addr6)
+				if (iter_addr6++ < cb->args[3])
 					continue;
 				if (netlbl_unlabel_staticlist_gen(
 					      NLBL_UNLABEL_C_STATICLIST,
@@ -1253,10 +1251,10 @@ static int netlbl_unlabel_staticlist(str
 
 unlabel_staticlist_return:
 	rcu_read_unlock();
-	cb->args[0] = skip_bkt;
-	cb->args[1] = skip_chain;
-	cb->args[2] = skip_addr4;
-	cb->args[3] = skip_addr6;
+	cb->args[0] = iter_bkt;
+	cb->args[1] = iter_chain;
+	cb->args[2] = iter_addr4;
+	cb->args[3] = iter_addr6;
 	return skb->len;
 }
 
@@ -1276,12 +1274,9 @@ static int netlbl_unlabel_staticlistdef(
 {
 	struct netlbl_unlhsh_walk_arg cb_arg;
 	struct netlbl_unlhsh_iface *iface;
-	u32 skip_addr4 = cb->args[0];
-	u32 skip_addr6 = cb->args[1];
-	u32 iter_addr4 = 0;
+	u32 iter_addr4 = 0, iter_addr6 = 0;
 	struct netlbl_af4list *addr4;
 #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-	u32 iter_addr6 = 0;
 	struct netlbl_af6list *addr6;
 #endif
 
@@ -1295,7 +1290,7 @@ static int netlbl_unlabel_staticlistdef(
 		goto unlabel_staticlistdef_return;
 
 	netlbl_af4list_foreach_rcu(addr4, &iface->addr4_list) {
-		if (iter_addr4++ < skip_addr4)
+		if (iter_addr4++ < cb->args[0])
 			continue;
 		if (netlbl_unlabel_staticlist_gen(NLBL_UNLABEL_C_STATICLISTDEF,
 					      iface,
@@ -1308,7 +1303,7 @@ static int netlbl_unlabel_staticlistdef(
 	}
 #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
 	netlbl_af6list_foreach_rcu(addr6, &iface->addr6_list) {
-		if (iter_addr6++ < skip_addr6)
+		if (iter_addr6++ < cb->args[1])
 			continue;
 		if (netlbl_unlabel_staticlist_gen(NLBL_UNLABEL_C_STATICLISTDEF,
 					      iface,
@@ -1323,8 +1318,8 @@ static int netlbl_unlabel_staticlistdef(
 
 unlabel_staticlistdef_return:
 	rcu_read_unlock();
-	cb->args[0] = skip_addr4;
-	cb->args[1] = skip_addr6;
+	cb->args[0] = iter_addr4;
+	cb->args[1] = iter_addr6;
 	return skb->len;
 }
 



  parent reply	other threads:[~2013-03-18 21:11 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-18 21:10 [ 00/40] 3.0.70-stable review Greg Kroah-Hartman
2013-03-18 21:10 ` [ 01/40] qcaux: add Franklin U600 Greg Kroah-Hartman
2013-03-18 21:10 ` [ 02/40] virtio: rng: disallow multiple device registrations, fixes crashes Greg Kroah-Hartman
2013-03-18 21:10 ` [ 03/40] USB: option: add Huawei E5331 Greg Kroah-Hartman
2013-03-18 21:10 ` [ 04/40] USB: cdc-wdm: fix buffer overflow Greg Kroah-Hartman
2013-03-18 21:10 ` [ 05/40] usb: cp210x new Vendor/Device IDs Greg Kroah-Hartman
2013-03-18 21:10 ` [ 06/40] USB: added support for Cinterions products AH6 and PLS8 Greg Kroah-Hartman
2013-03-18 21:10 ` [ 07/40] usb: serial: Add Rigblaster Advantage to device table Greg Kroah-Hartman
2013-03-18 21:10 ` [ 08/40] USB: storage: fix Huawei mode switching regression Greg Kroah-Hartman
2013-03-18 21:10 ` [ 09/40] USB: EHCI: dont check DMA values in QH overlays Greg Kroah-Hartman
2013-03-18 21:10 ` [ 10/40] staging: vt6656: Fix oops on resume from suspend Greg Kroah-Hartman
2013-03-18 21:10 ` [ 11/40] signal: always clear sa_restorer on execve Greg Kroah-Hartman
2013-03-18 21:10 ` [ 12/40] ext3: Fix format string issues Greg Kroah-Hartman
2013-03-18 21:10 ` [ 13/40] tty: serial: fix typo "ARCH_S5P6450" Greg Kroah-Hartman
2013-03-18 21:10 ` [ 14/40] TTY: do not reset masters packet mode Greg Kroah-Hartman
2013-03-18 21:10 ` [ 15/40] md: protect against crash upon fsync on ro array Greg Kroah-Hartman
2013-03-18 21:10 ` [ 16/40] Revert duplicated perf commit Greg Kroah-Hartman
2013-03-21  3:31   ` Ben Hutchings
2013-03-18 21:10 ` [ 17/40] ALSA: seq: Fix missing error handling in snd_seq_timer_open() Greg Kroah-Hartman
2013-03-18 21:10 ` [ 18/40] hwmon: (lineage-pem) Add missing terminating entry for pem_[input|fan]_attributes Greg Kroah-Hartman
2013-03-18 21:10 ` [ 19/40] w1: fix oops when w1_search is called from netlink connector Greg Kroah-Hartman
2013-03-18 21:10 ` [ 20/40] powerpc: Fix cputable entry for 970MP rev 1.0 Greg Kroah-Hartman
2013-03-18 21:10 ` [ 21/40] selinux: use GFP_ATOMIC under spin_lock Greg Kroah-Hartman
2013-03-18 21:11 ` [ 22/40] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume Greg Kroah-Hartman
2013-03-18 21:11 ` [ 23/40] perf,x86: fix wrmsr_on_cpu() warning on suspend/resume Greg Kroah-Hartman
2013-03-18 21:11 ` [ 24/40] perf,x86: fix link failure for non-Intel configs Greg Kroah-Hartman
2013-03-18 21:11 ` [ 25/40] s390/mm: fix flush_tlb_kernel_range() Greg Kroah-Hartman
2013-03-18 21:11 ` [ 26/40] btrfs: use rcu_barrier() to wait for bdev puts at unmount Greg Kroah-Hartman
2013-03-18 21:11 ` [ 27/40] drm/i915: EBUSY status handling added to i915_gem_fault() Greg Kroah-Hartman
2013-03-18 21:11 ` [ 28/40] hwmon: (sht15) Fix memory leak if regulator_enable() fails Greg Kroah-Hartman
2013-03-18 21:11 ` [ 29/40] block: use i_size_write() in bd_set_size() Greg Kroah-Hartman
2013-03-18 21:11 ` [ 30/40] loopdev: fix a deadlock Greg Kroah-Hartman
2013-03-18 21:11 ` [ 31/40] l2tp: Restore socket refcount when sendmsg succeeds Greg Kroah-Hartman
2013-03-18 21:11 ` [ 32/40] rds: limit the size allocated by rds_message_alloc() Greg Kroah-Hartman
2013-03-18 21:11 ` [ 33/40] net: ipv6: Dont purge default router if accept_ra=2 Greg Kroah-Hartman
2013-03-18 21:11 ` [ 34/40] tcp: fix double-counted receiver RTT when leaving receiver fast path Greg Kroah-Hartman
2013-03-18 21:11 ` [ 35/40] tun: add a missing nf_reset() in tun_net_xmit() Greg Kroah-Hartman
2013-03-18 21:11 ` Greg Kroah-Hartman [this message]
2013-03-18 21:11 ` [ 37/40] bridging: fix rx_handlers return code Greg Kroah-Hartman
2013-03-18 21:11 ` [ 38/40] ipv6: stop multicast forwarding to process interface scoped addresses Greg Kroah-Hartman
2013-03-18 21:11 ` [ 39/40] rtnl: fix info leak on RTM_GETLINK request for VF devices Greg Kroah-Hartman
2013-03-18 21:11 ` [ 40/40] dcbnl: fix various netlink info leaks Greg Kroah-Hartman
2013-03-19  0:47 ` [ 00/40] 3.0.70-stable review Shuah Khan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130318211018.857192841@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmoore@redhat.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).