[Glibc-bsd-commits] r4904 - in trunk/kfreebsd-9/debian: . patches

Robert Millan rmh at alioth.debian.org
Thu Aug 22 22:01:13 UTC 2013


Author: rmh
Date: 2013-08-22 22:01:12 +0000 (Thu, 22 Aug 2013)
New Revision: 4904

Added:
   trunk/kfreebsd-9/debian/patches/svn_update.diff
Modified:
   trunk/kfreebsd-9/debian/changelog
   trunk/kfreebsd-9/debian/patches/series
Log:
  * svn_update.diff: Update to rev 254630.
    - Fix for CVE-2013-3077. (Closes: #720468)
    - Fix for CVE-2013-5209. (Closes: #720475)

Modified: trunk/kfreebsd-9/debian/changelog
===================================================================
--- trunk/kfreebsd-9/debian/changelog	2013-08-22 20:02:18 UTC (rev 4903)
+++ trunk/kfreebsd-9/debian/changelog	2013-08-22 22:01:12 UTC (rev 4904)
@@ -1,3 +1,11 @@
+kfreebsd-9 (9.2~svn254368-2) unstable; urgency=high
+
+  * svn_update.diff: Update to rev 254630.
+    - Fix for CVE-2013-3077. (Closes: #720468)
+    - Fix for CVE-2013-5209. (Closes: #720475)
+
+ -- Robert Millan <rmh at debian.org>  Thu, 22 Aug 2013 22:47:02 +0200
+
 kfreebsd-9 (9.2~svn254368-1) unstable; urgency=medium
 
   * New upstream release (9.2-RC2).

Modified: trunk/kfreebsd-9/debian/patches/series
===================================================================
--- trunk/kfreebsd-9/debian/patches/series	2013-08-22 20:02:18 UTC (rev 4903)
+++ trunk/kfreebsd-9/debian/patches/series	2013-08-22 22:01:12 UTC (rev 4904)
@@ -1,5 +1,5 @@
 # Patches from (or merged in) upstream
-
+svn_update.diff
 000_cpuclockid2_syscall.diff
 000_cpuclockid2_compat32.diff
 

Added: trunk/kfreebsd-9/debian/patches/svn_update.diff
===================================================================
--- trunk/kfreebsd-9/debian/patches/svn_update.diff	                        (rev 0)
+++ trunk/kfreebsd-9/debian/patches/svn_update.diff	2013-08-22 22:01:12 UTC (rev 4904)
@@ -0,0 +1,455 @@
+
+svn diff -r 254368:254630
+
+--- a/sys/boot/forth/beastie.4th
++++ b/sys/boot/forth/beastie.4th
+@@ -123,6 +123,76 @@
+ 	0 25 at-xy
+ ;
+ 
++: tribute-art ( x y -- ) \ see tribute[bw]-logo
++
++	\ Disable the brand art (we're going to use that space)
++	s" set loader_brand=none" evaluate
++
++	\ Blank out the frame of the menu and move the title to left
++	s" set loader_menu_title=" evaluate
++	s" set loader_menu_frame=none" evaluate
++
++	\ Move the menu to the center of the screen
++	s" set loader_menu_x=26" evaluate
++	s" set loader_menu_y=13" evaluate
++	s" set loader_menu_timeout_x=21" evaluate
++	s" set loader_menu_timeout_y=24" evaluate
++
++	2 - swap 39 - swap \ top-left (see `fbsdbw-logo' comments above)
++
++	2dup at-xy 11 spaces ." ,d      b." 1+
++	2dup at-xy ."         ,d88]      [88b." 1+
++	2dup at-xy ."      ,d888P" 34 emit ."  ,d88b. " 34 emit ." Y888b." 1+
++	2dup at-xy ."  , <888P" 34 emit ."  ,dP" 34 emit ." ,db." 34 emit
++	           ." Yb. " 34 emit ." Y888> ," 1+
++	2dup at-xy ." <88b.~ ,d888  " 34 emit ." YP" 34 emit
++	           ."   888b. ~,d88>" 1+
++	2dup at-xy ."  ," 34 emit ." Y888888P" 34 emit ." ,db.,db." 34 emit
++	           ." Y888888P" 34 emit ." ," 1+
++	2dup at-xy ." <88b." 34 emit ." YP" 34 emit ."  _ " 34 emit
++	           ." YP" 34 emit 34 emit ." YP" 34 emit ."  _ " 34 emit
++	           ." YP" 34 emit ." ,d88>" 1+
++	2dup at-xy ."   " 34 emit ." Y88b.,dP          Yb.,d88P" 34 emit 1+
++	     at-xy ."      " 34 emit ." YP" 34 emit ."               " 34 emit
++	           ." YP" 34 emit ." "
++;
++
++: tribute-text ( x y -- ) \ see tribute[bw]-logo
++
++	swap 2 - swap \ beastie adjustment (see `fbsdbw-logo' comments above)
++
++	2dup at-xy ." CEO Workstation" 1+
++	1+
++	2dup at-xy ." Nakatomi Socrates FreeBSD 9.2" 1+
++	2dup at-xy ." Z-Level Central Core" 1+
++	1+
++	     at-xy ." Preliminary Clearance Approved."
++;
++
++: tribute-logo ( x y -- ) \ color Socrates tribute (16 rows x 32 columns)
++
++	\ Produce the tribute art in bright green
++	2dup at-xy ." " 2dup tribute-art ." "
++
++	\ Produce the tribute text in regular green
++	2dup at-xy ." " 2dup tribute-text ." "
++
++	\ Distinguish the ``Free'' in tribute-text
++	2 + swap 16 + swap at-xy ." Free"
++
++ 	\ Put the cursor back at the bottom
++ 	0 25 at-xy
++;
++
++: tributebw-logo ( x y -- ) \ Socrates tribute (16 rows x 32 columns)
++
++	\ Produce the tribute art and text
++	2dup tribute-art tribute-text
++
++ 	\ Put the cursor back at the bottom
++ 	0 25 at-xy
++;
++
+ : orb-logo ( x y -- ) \ color Orb mascot (15 rows x 30 columns)
+ 
+ 	3 + \ beastie adjustment (see `fbsdbw-logo' comments above)
+@@ -181,8 +251,10 @@
+ \ 	beastie     Color ``Helper Daemon'' mascot (19 rows x 34 columns)
+ \ 	beastiebw   B/W ``Helper Daemon'' mascot (19 rows x 34 columns)
+ \ 	fbsdbw      "FreeBSD" logo in B/W (13 rows x 21 columns)
+-\ 	orb         Color ``Orb'' mascot (15 rows x 30 columns) (default)
++\ 	orb         Color ``Orb'' mascot (15 rows x 30 columns) (2nd default)
+ \ 	orbbw       B/W ``Orb'' mascot (15 rows x 32 columns)
++\ 	tribute     Color ``Tribute'' (must fit 19 rows x 34 columns) (default)
++\ 	tributebw   B/W ``Tribute'' (must fit 19 rows x 34 columns)
+ \ 
+ \ NOTE: Setting `loader_logo' to an undefined value (such as "none") will
+ \       prevent beastie from being drawn.
+@@ -203,9 +275,21 @@
+ 	s" loader_logo" getenv dup -1 = if
+ 		logoX @ logoY @
+ 		loader_color? if
+-			orb-logo
++			s" tribute-logo"
++			sfind if
++				execute
++			else
++				drop
++				orb-logo
++			then
+ 		else
+-			orbbw-logo
++			s" tributebw-logo"
++			sfind if
++				execute
++			else
++				drop
++				orbbw-logo
++			then
+ 		then
+ 		drop exit
+ 	then
+@@ -230,6 +314,24 @@
+ 		logoX @ logoY @ orbbw-logo
+ 		2drop exit
+ 	then
++	2dup s" tribute" compare-insensitive 0= if
++		logoX @ logoY @
++		s" tribute-logo" sfind if
++			execute
++		else
++			orb-logo
++		then
++		2drop exit
++	then
++	2dup s" tributebw" compare-insensitive 0= if
++		logoX @ logoY @
++		s" tributebw-logo" sfind if
++			execute
++		else
++			orbbw-logo
++		then
++		2drop exit
++	then
+ 
+ 	2drop
+ ;
+--- a/sys/dev/e1000/if_em.c
++++ b/sys/dev/e1000/if_em.c
+@@ -2277,7 +2277,7 @@
+ 
+ 	/* Mask to use in the irq trigger */
+ 	if (adapter->msix_mem)
+-		trigger = rxr->ims; /* RX for 82574 */
++		trigger = rxr->ims;
+ 	else
+ 		trigger = E1000_ICS_RXDMT0;
+ 
+@@ -2742,7 +2742,7 @@
+ em_setup_msix(struct adapter *adapter)
+ {
+ 	device_t dev = adapter->dev;
+-	int val = 0;
++	int val;
+ 
+ 	/*
+ 	** Setup MSI/X for Hartwell: tests have shown
+@@ -2756,37 +2756,43 @@
+ 		int rid = PCIR_BAR(EM_MSIX_BAR);
+ 		adapter->msix_mem = bus_alloc_resource_any(dev,
+ 		    SYS_RES_MEMORY, &rid, RF_ACTIVE);
+-       		if (!adapter->msix_mem) {
++       		if (adapter->msix_mem == NULL) {
+ 			/* May not be enabled */
+                		device_printf(adapter->dev,
+ 			    "Unable to map MSIX table \n");
+ 			goto msi;
+        		}
+ 		val = pci_msix_count(dev); 
+-		/* We only need 3 vectors */
+-		if (val > 3)
++		/* We only need/want 3 vectors */
++		if (val >= 3)
+ 			val = 3;
+-		if ((val != 3) && (val != 5)) {
+-			bus_release_resource(dev, SYS_RES_MEMORY,
+-			    PCIR_BAR(EM_MSIX_BAR), adapter->msix_mem);
+-			adapter->msix_mem = NULL;
++		else {
+                		device_printf(adapter->dev,
+-			    "MSIX: incorrect vectors, using MSI\n");
++			    "MSIX: insufficient vectors, using MSI\n");
+ 			goto msi;
+ 		}
+ 
+-		if (pci_alloc_msix(dev, &val) == 0) {
++		if ((pci_alloc_msix(dev, &val) == 0) && (val == 3)) {
+ 			device_printf(adapter->dev,
+ 			    "Using MSIX interrupts "
+ 			    "with %d vectors\n", val);
++			return (val);
+ 		}
+ 
+-		return (val);
++		/*
++		** If MSIX alloc failed or provided us with
++		** less than needed, free and fall through to MSI
++		*/
++		pci_release_msi(dev);
+ 	}
+ msi:
+-       	val = pci_msi_count(dev);
+-       	if (val == 1 && pci_alloc_msi(dev, &val) == 0) {
+-               	adapter->msix = 1;
++	if (adapter->msix_mem != NULL) {
++		bus_release_resource(dev, SYS_RES_MEMORY,
++		    PCIR_BAR(EM_MSIX_BAR), adapter->msix_mem);
++		adapter->msix_mem = NULL;
++	}
++       	val = 1;
++       	if (pci_alloc_msi(dev, &val) == 0) {
+                	device_printf(adapter->dev,"Using an MSI interrupt\n");
+ 		return (val);
+ 	} 
+--- a/sys/dev/e1000/if_igb.c
++++ b/sys/dev/e1000/if_igb.c
+@@ -972,7 +972,13 @@
+ 	que = &adapter->queues[i];
+ 
+ 	err = drbr_enqueue(ifp, txr->br, m);
+-	taskqueue_enqueue(que->tq, &txr->txq_task);
++	if (err)
++		return (err);
++	if (IGB_TX_TRYLOCK(txr)) {
++		err = igb_mq_start_locked(ifp, txr);
++		IGB_TX_UNLOCK(txr);
++	} else
++		taskqueue_enqueue(que->tq, &txr->txq_task);
+ 
+ 	return (err);
+ }
+@@ -2834,24 +2840,19 @@
+ 		goto msi;
+ 
+ 	/* First try MSI/X */
++	msgs = pci_msix_count(dev); 
++	if (msgs == 0)
++		goto msi;
+ 	rid = PCIR_BAR(IGB_MSIX_BAR);
+ 	adapter->msix_mem = bus_alloc_resource_any(dev,
+ 	    SYS_RES_MEMORY, &rid, RF_ACTIVE);
+-       	if (!adapter->msix_mem) {
++       	if (adapter->msix_mem == NULL) {
+ 		/* May not be enabled */
+ 		device_printf(adapter->dev,
+ 		    "Unable to map MSIX table \n");
+ 		goto msi;
+ 	}
+ 
+-	msgs = pci_msix_count(dev); 
+-	if (msgs == 0) { /* system has msix disabled */
+-		bus_release_resource(dev, SYS_RES_MEMORY,
+-		    PCIR_BAR(IGB_MSIX_BAR), adapter->msix_mem);
+-		adapter->msix_mem = NULL;
+-		goto msi;
+-	}
+-
+ 	/* Figure out a reasonable auto config value */
+ 	queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
+ 
+@@ -2894,20 +2895,32 @@
+ 		    "MSIX Configuration Problem, "
+ 		    "%d vectors configured, but %d queues wanted!\n",
+ 		    msgs, want);
+-		return (0);
++		goto msi;
+ 	}
+-	if ((msgs) && pci_alloc_msix(dev, &msgs) == 0) {
++	if ((pci_alloc_msix(dev, &msgs) == 0) && (msgs == want)) {
+                	device_printf(adapter->dev,
+ 		    "Using MSIX interrupts with %d vectors\n", msgs);
+ 		adapter->num_queues = queues;
+ 		return (msgs);
+ 	}
++	/*
++	** If MSIX alloc failed or provided us with
++	** less than needed, free and fall through to MSI
++	*/
++	pci_release_msi(dev);
++
+ msi:
+-       	msgs = pci_msi_count(dev);
+-	if (msgs == 1 && pci_alloc_msi(dev, &msgs) == 0) {
+-		device_printf(adapter->dev," Using MSI interrupt\n");
++       	if (adapter->msix_mem != NULL) {
++		bus_release_resource(dev, SYS_RES_MEMORY,
++		    PCIR_BAR(IGB_MSIX_BAR), adapter->msix_mem);
++		adapter->msix_mem = NULL;
++	}
++       	msgs = 1;
++	if (pci_alloc_msi(dev, &msgs) == 0) {
++		device_printf(adapter->dev," Using an MSI interrupt\n");
+ 		return (msgs);
+ 	}
++	device_printf(adapter->dev," Using a Legacy interrupt\n");
+ 	return (0);
+ }
+ 
+--- a/sys/dev/ixgbe/ixgbe.c
++++ b/sys/dev/ixgbe/ixgbe.c
+@@ -2415,29 +2415,24 @@
+ 		goto msi;
+ 
+ 	/* First try MSI/X */
++	msgs = pci_msix_count(dev); 
++	if (msgs == 0)
++		goto msi;
+ 	rid = PCIR_BAR(MSIX_82598_BAR);
+ 	adapter->msix_mem = bus_alloc_resource_any(dev,
+ 	    SYS_RES_MEMORY, &rid, RF_ACTIVE);
+-       	if (!adapter->msix_mem) {
++       	if (adapter->msix_mem == NULL) {
+ 		rid += 4;	/* 82599 maps in higher BAR */
+ 		adapter->msix_mem = bus_alloc_resource_any(dev,
+ 		    SYS_RES_MEMORY, &rid, RF_ACTIVE);
+ 	}
+-       	if (!adapter->msix_mem) {
++       	if (adapter->msix_mem == NULL) {
+ 		/* May not be enabled */
+ 		device_printf(adapter->dev,
+ 		    "Unable to map MSIX table \n");
+ 		goto msi;
+ 	}
+ 
+-	msgs = pci_msix_count(dev); 
+-	if (msgs == 0) { /* system has msix disabled */
+-		bus_release_resource(dev, SYS_RES_MEMORY,
+-		    rid, adapter->msix_mem);
+-		adapter->msix_mem = NULL;
+-		goto msi;
+-	}
+-
+ 	/* Figure out a reasonable auto config value */
+ 	queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
+ 
+@@ -2459,21 +2454,33 @@
+ 		    "MSIX Configuration Problem, "
+ 		    "%d vectors but %d queues wanted!\n",
+ 		    msgs, want);
+-		return (0); /* Will go to Legacy setup */
++		goto msi;
+ 	}
+-	if ((msgs) && pci_alloc_msix(dev, &msgs) == 0) {
++	if ((pci_alloc_msix(dev, &msgs) == 0) && (msgs == want)) {
+                	device_printf(adapter->dev,
+ 		    "Using MSIX interrupts with %d vectors\n", msgs);
+ 		adapter->num_queues = queues;
+ 		return (msgs);
+ 	}
++	/*
++	** If MSIX alloc failed or provided us with
++	** less than needed, free and fall through to MSI
++	*/
++	pci_release_msi(dev);
++
+ msi:
+-       	msgs = pci_msi_count(dev);
+-       	if (msgs == 1 && pci_alloc_msi(dev, &msgs) == 0)
++       	if (adapter->msix_mem != NULL) {
++		bus_release_resource(dev, SYS_RES_MEMORY,
++		    rid, adapter->msix_mem);
++		adapter->msix_mem = NULL;
++	}
++       	msgs = 1;
++       	if (pci_alloc_msi(dev, &msgs) == 0) {
+                	device_printf(adapter->dev,"Using an MSI interrupt\n");
+-	else
+-               	device_printf(adapter->dev,"Using a Legacy interrupt\n");
+-	return (msgs);
++		return (msgs);
++	}
++	device_printf(adapter->dev,"Using a Legacy interrupt\n");
++	return (0);
+ }
+ 
+ 
+--- a/sys/dev/ixgbe/ixv.c
++++ b/sys/dev/ixgbe/ixv.c
+@@ -1680,37 +1680,37 @@
+ ixv_setup_msix(struct adapter *adapter)
+ {
+ 	device_t dev = adapter->dev;
+-	int rid, vectors, want = 2;
++	int rid, want;
+ 
+ 
+ 	/* First try MSI/X */
+ 	rid = PCIR_BAR(3);
+ 	adapter->msix_mem = bus_alloc_resource_any(dev,
+ 	    SYS_RES_MEMORY, &rid, RF_ACTIVE);
+-       	if (!adapter->msix_mem) {
++       	if (adapter->msix_mem == NULL) {
+ 		device_printf(adapter->dev,
+ 		    "Unable to map MSIX table \n");
+ 		goto out;
+ 	}
+ 
+-	vectors = pci_msix_count(dev); 
+-	if (vectors < 2) {
+-		bus_release_resource(dev, SYS_RES_MEMORY,
+-		    rid, adapter->msix_mem);
+-		adapter->msix_mem = NULL;
+-		goto out;
+-	}
+-
+ 	/*
+ 	** Want two vectors: one for a queue,
+ 	** plus an additional for mailbox.
+ 	*/
+-	if (pci_alloc_msix(dev, &want) == 0) {
++	want = 2;
++	if ((pci_alloc_msix(dev, &want) == 0) && (want == 2)) {
+                	device_printf(adapter->dev,
+ 		    "Using MSIX interrupts with %d vectors\n", want);
+ 		return (want);
+ 	}
++	/* Release in case alloc was insufficient */
++	pci_release_msi(dev);
+ out:
++       	if (adapter->msix_mem != NULL) {
++		bus_release_resource(dev, SYS_RES_MEMORY,
++		    rid, adapter->msix_mem);
++		adapter->msix_mem = NULL;
++	}
+ 	device_printf(adapter->dev,"MSIX config error\n");
+ 	return (ENXIO);
+ }
+--- a/sys/netinet/in_mcast.c
++++ b/sys/netinet/in_mcast.c
+@@ -1614,6 +1614,8 @@
+ 	 * has asked for, but we always tell userland how big the
+ 	 * buffer really needs to be.
+ 	 */
++	if (msfr.msfr_nsrcs > in_mcast_maxsocksrc)
++		msfr.msfr_nsrcs = in_mcast_maxsocksrc;
+ 	tss = NULL;
+ 	if (msfr.msfr_srcs != NULL && msfr.msfr_nsrcs > 0) {
+ 		tss = malloc(sizeof(struct sockaddr_storage) * msfr.msfr_nsrcs,
+--- a/sys/netinet6/in6_mcast.c
++++ b/sys/netinet6/in6_mcast.c
+@@ -1625,6 +1625,8 @@
+ 	 * has asked for, but we always tell userland how big the
+ 	 * buffer really needs to be.
+ 	 */
++	if (msfr.msfr_nsrcs > in6_mcast_maxsocksrc)
++		msfr.msfr_nsrcs = in6_mcast_maxsocksrc;
+ 	tss = NULL;
+ 	if (msfr.msfr_srcs != NULL && msfr.msfr_nsrcs > 0) {
+ 		tss = malloc(sizeof(struct sockaddr_storage) * msfr.msfr_nsrcs,




More information about the Glibc-bsd-commits mailing list