Rebase to 3.10.4
This commit is contained in:
parent
5499ee0c2b
commit
85ccd6f576
|
@ -1,83 +0,0 @@
|
|||
From b05ceba560e094d27ff716f6df1e2d5ef670d4d3 Mon Sep 17 00:00:00 2001
|
||||
From: Kent Yoder <key@linux.vnet.ibm.com>
|
||||
Date: Wed, 27 Feb 2013 15:50:27 -0600
|
||||
Subject: [PATCH] drivers/crypto/nx: fix init race, alignmasks and GCM bug
|
||||
|
||||
Fixes a race on driver init with registering algorithms where the
|
||||
driver status flag wasn't being set before self testing started.
|
||||
|
||||
Added the cra_alignmask field for CBC and ECB modes.
|
||||
|
||||
Fixed a bug in GCM where AES block size was being used instead of
|
||||
authsize.
|
||||
|
||||
Signed-off-by: Kent Yoder <key@linux.vnet.ibm.com>
|
||||
---
|
||||
drivers/crypto/nx/nx-aes-cbc.c | 1 +
|
||||
drivers/crypto/nx/nx-aes-ecb.c | 1 +
|
||||
drivers/crypto/nx/nx-aes-gcm.c | 2 +-
|
||||
drivers/crypto/nx/nx.c | 4 ++--
|
||||
4 files changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/crypto/nx/nx-aes-cbc.c b/drivers/crypto/nx/nx-aes-cbc.c
|
||||
index a76d4c4..35d483f 100644
|
||||
--- a/drivers/crypto/nx/nx-aes-cbc.c
|
||||
+++ b/drivers/crypto/nx/nx-aes-cbc.c
|
||||
@@ -126,6 +126,7 @@ struct crypto_alg nx_cbc_aes_alg = {
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct nx_crypto_ctx),
|
||||
.cra_type = &crypto_blkcipher_type,
|
||||
+ .cra_alignmask = 0xf,
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_init = nx_crypto_ctx_aes_cbc_init,
|
||||
.cra_exit = nx_crypto_ctx_exit,
|
||||
diff --git a/drivers/crypto/nx/nx-aes-ecb.c b/drivers/crypto/nx/nx-aes-ecb.c
|
||||
index ba5f161..7bbc9a8 100644
|
||||
--- a/drivers/crypto/nx/nx-aes-ecb.c
|
||||
+++ b/drivers/crypto/nx/nx-aes-ecb.c
|
||||
@@ -123,6 +123,7 @@ struct crypto_alg nx_ecb_aes_alg = {
|
||||
.cra_priority = 300,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
|
||||
.cra_blocksize = AES_BLOCK_SIZE,
|
||||
+ .cra_alignmask = 0xf,
|
||||
.cra_ctxsize = sizeof(struct nx_crypto_ctx),
|
||||
.cra_type = &crypto_blkcipher_type,
|
||||
.cra_module = THIS_MODULE,
|
||||
diff --git a/drivers/crypto/nx/nx-aes-gcm.c b/drivers/crypto/nx/nx-aes-gcm.c
|
||||
index c8109ed..6cca6c3 100644
|
||||
--- a/drivers/crypto/nx/nx-aes-gcm.c
|
||||
+++ b/drivers/crypto/nx/nx-aes-gcm.c
|
||||
@@ -219,7 +219,7 @@ static int gcm_aes_nx_crypt(struct aead_request *req, int enc)
|
||||
if (enc)
|
||||
NX_CPB_FDM(csbcpb) |= NX_FDM_ENDE_ENCRYPT;
|
||||
else
|
||||
- nbytes -= AES_BLOCK_SIZE;
|
||||
+ nbytes -= crypto_aead_authsize(crypto_aead_reqtfm(req));
|
||||
|
||||
csbcpb->cpb.aes_gcm.bit_length_data = nbytes * 8;
|
||||
|
||||
diff --git a/drivers/crypto/nx/nx.c b/drivers/crypto/nx/nx.c
|
||||
index c767f23..7621d05 100644
|
||||
--- a/drivers/crypto/nx/nx.c
|
||||
+++ b/drivers/crypto/nx/nx.c
|
||||
@@ -454,6 +454,8 @@ static int nx_register_algs(void)
|
||||
if (rc)
|
||||
goto out;
|
||||
|
||||
+ nx_driver.of.status = NX_OKAY;
|
||||
+
|
||||
rc = crypto_register_alg(&nx_ecb_aes_alg);
|
||||
if (rc)
|
||||
goto out;
|
||||
@@ -498,8 +500,6 @@ static int nx_register_algs(void)
|
||||
if (rc)
|
||||
goto out_unreg_s512;
|
||||
|
||||
- nx_driver.of.status = NX_OKAY;
|
||||
-
|
||||
goto out;
|
||||
|
||||
out_unreg_s512:
|
||||
--
|
||||
1.7.11.7
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
@@ -, +, @@
|
||||
VMX: x86: handle host TSC calibration failure
|
||||
|
||||
If the host TSC calibration fails, tsc_khz is zero (see tsc_init.c).
|
||||
Handle such case properly in KVM (instead of dividing by zero).
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=859282
|
||||
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
Signed-off-by: Gleb Natapov <gleb@redhat.com>
|
||||
--- a/arch/x86/kvm/x86.c
|
||||
+++ a/arch/x86/kvm/x86.c
|
||||
@@ -1079,6 +1079,10 @@ static void kvm_set_tsc_khz(struct kvm_vcpu *vcpu, u32 this_tsc_khz)
|
||||
u32 thresh_lo, thresh_hi;
|
||||
int use_scaling = 0;
|
||||
|
||||
+ /* tsc_khz can be zero if TSC calibration fails */
|
||||
+ if (this_tsc_khz == 0)
|
||||
+ return;
|
||||
+
|
||||
/* Compute a scale to convert nanoseconds in TSC cycles */
|
||||
kvm_get_time_scale(this_tsc_khz, NSEC_PER_SEC / 1000,
|
||||
&vcpu->arch.virtual_tsc_shift,
|
||||
@@ -1156,20 +1160,23 @@ void kvm_write_tsc(struct kvm_vcpu *vcpu, struct msr_data *msr)
|
||||
ns = get_kernel_ns();
|
||||
elapsed = ns - kvm->arch.last_tsc_nsec;
|
||||
|
||||
- /* n.b - signed multiplication and division required */
|
||||
- usdiff = data - kvm->arch.last_tsc_write;
|
||||
+ if (vcpu->arch.virtual_tsc_khz) {
|
||||
+ /* n.b - signed multiplication and division required */
|
||||
+ usdiff = data - kvm->arch.last_tsc_write;
|
||||
#ifdef CONFIG_X86_64
|
||||
- usdiff = (usdiff * 1000) / vcpu->arch.virtual_tsc_khz;
|
||||
+ usdiff = (usdiff * 1000) / vcpu->arch.virtual_tsc_khz;
|
||||
#else
|
||||
- /* do_div() only does unsigned */
|
||||
- asm("idivl %2; xor %%edx, %%edx"
|
||||
- : "=A"(usdiff)
|
||||
- : "A"(usdiff * 1000), "rm"(vcpu->arch.virtual_tsc_khz));
|
||||
+ /* do_div() only does unsigned */
|
||||
+ asm("idivl %2; xor %%edx, %%edx"
|
||||
+ : "=A"(usdiff)
|
||||
+ : "A"(usdiff * 1000), "rm"(vcpu->arch.virtual_tsc_khz));
|
||||
#endif
|
||||
- do_div(elapsed, 1000);
|
||||
- usdiff -= elapsed;
|
||||
- if (usdiff < 0)
|
||||
- usdiff = -usdiff;
|
||||
+ do_div(elapsed, 1000);
|
||||
+ usdiff -= elapsed;
|
||||
+ if (usdiff < 0)
|
||||
+ usdiff = -usdiff;
|
||||
+ } else
|
||||
+ usdiff = USEC_PER_SEC; /* disable TSC match window below */
|
||||
|
||||
/*
|
||||
* Special case: TSC write with a small delta (1 second) of virtual
|
|
@ -1,37 +0,0 @@
|
|||
From a5cc68f3d63306d0d288f31edfc2ae6ef8ecd887 Mon Sep 17 00:00:00 2001
|
||||
From: Mathias Krause <minipli@googlemail.com>
|
||||
Date: Wed, 26 Jun 2013 21:52:30 +0000
|
||||
Subject: af_key: fix info leaks in notify messages
|
||||
|
||||
key_notify_sa_flush() and key_notify_policy_flush() miss to initialize
|
||||
the sadb_msg_reserved member of the broadcasted message and thereby
|
||||
leak 2 bytes of heap memory to listeners. Fix that.
|
||||
|
||||
Signed-off-by: Mathias Krause <minipli@googlemail.com>
|
||||
Cc: Steffen Klassert <steffen.klassert@secunet.com>
|
||||
Cc: "David S. Miller" <davem@davemloft.net>
|
||||
Cc: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
diff --git a/net/key/af_key.c b/net/key/af_key.c
|
||||
index c5fbd75..9da8620 100644
|
||||
--- a/net/key/af_key.c
|
||||
+++ b/net/key/af_key.c
|
||||
@@ -1710,6 +1710,7 @@ static int key_notify_sa_flush(const struct km_event *c)
|
||||
hdr->sadb_msg_version = PF_KEY_V2;
|
||||
hdr->sadb_msg_errno = (uint8_t) 0;
|
||||
hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
|
||||
+ hdr->sadb_msg_reserved = 0;
|
||||
|
||||
pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net);
|
||||
|
||||
@@ -2699,6 +2700,7 @@ static int key_notify_policy_flush(const struct km_event *c)
|
||||
hdr->sadb_msg_errno = (uint8_t) 0;
|
||||
hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC;
|
||||
hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
|
||||
+ hdr->sadb_msg_reserved = 0;
|
||||
pfkey_broadcast(skb_out, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net);
|
||||
return 0;
|
||||
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -1,190 +0,0 @@
|
|||
From 54a419668b0f27b7982807fb2376d237e0a0ce05 Mon Sep 17 00:00:00 2001
|
||||
From: Alan Stern <stern@rowland.harvard.edu>
|
||||
Date: Tue, 12 Mar 2013 10:44:39 +0000
|
||||
Subject: USB: EHCI: split ehci-omap out to a separate driver
|
||||
|
||||
This patch (as1645) converts ehci-omap over to the new "ehci-hcd is a
|
||||
library" approach, so that it can coexist peacefully with other EHCI
|
||||
platform drivers and can make use of the private area allocated at
|
||||
the end of struct ehci_hcd.
|
||||
|
||||
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
|
||||
index c59a112..62f4e9a 100644
|
||||
--- a/drivers/usb/host/Kconfig
|
||||
+++ b/drivers/usb/host/Kconfig
|
||||
@@ -155,7 +155,7 @@ config USB_EHCI_MXC
|
||||
Variation of ARC USB block used in some Freescale chips.
|
||||
|
||||
config USB_EHCI_HCD_OMAP
|
||||
- bool "EHCI support for OMAP3 and later chips"
|
||||
+ tristate "EHCI support for OMAP3 and later chips"
|
||||
depends on USB_EHCI_HCD && ARCH_OMAP
|
||||
default y
|
||||
---help---
|
||||
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
|
||||
index 001fbff..56de410 100644
|
||||
--- a/drivers/usb/host/Makefile
|
||||
+++ b/drivers/usb/host/Makefile
|
||||
@@ -27,6 +27,7 @@ obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o
|
||||
obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o
|
||||
obj-$(CONFIG_USB_EHCI_HCD_PLATFORM) += ehci-platform.o
|
||||
obj-$(CONFIG_USB_EHCI_MXC) += ehci-mxc.o
|
||||
+obj-$(CONFIG_USB_EHCI_HCD_OMAP) += ehci-omap.o
|
||||
|
||||
obj-$(CONFIG_USB_OXU210HP_HCD) += oxu210hp-hcd.o
|
||||
obj-$(CONFIG_USB_ISP116X_HCD) += isp116x-hcd.o
|
||||
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
|
||||
index b416a3f..303b022 100644
|
||||
--- a/drivers/usb/host/ehci-hcd.c
|
||||
+++ b/drivers/usb/host/ehci-hcd.c
|
||||
@@ -1252,11 +1252,6 @@ MODULE_LICENSE ("GPL");
|
||||
#define PLATFORM_DRIVER ehci_hcd_sh_driver
|
||||
#endif
|
||||
|
||||
-#ifdef CONFIG_USB_EHCI_HCD_OMAP
|
||||
-#include "ehci-omap.c"
|
||||
-#define PLATFORM_DRIVER ehci_hcd_omap_driver
|
||||
-#endif
|
||||
-
|
||||
#ifdef CONFIG_PPC_PS3
|
||||
#include "ehci-ps3.c"
|
||||
#define PS3_SYSTEM_BUS_DRIVER ps3_ehci_driver
|
||||
@@ -1346,6 +1341,7 @@ MODULE_LICENSE ("GPL");
|
||||
!IS_ENABLED(CONFIG_USB_EHCI_HCD_PLATFORM) && \
|
||||
!IS_ENABLED(CONFIG_USB_CHIPIDEA_HOST) && \
|
||||
!IS_ENABLED(CONFIG_USB_EHCI_MXC) && \
|
||||
+ !IS_ENABLED(CONFIG_USB_EHCI_HCD_OMAP) && \
|
||||
!defined(PLATFORM_DRIVER) && \
|
||||
!defined(PS3_SYSTEM_BUS_DRIVER) && \
|
||||
!defined(OF_PLATFORM_DRIVER) && \
|
||||
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
|
||||
index 0555ee4..fa66757 100644
|
||||
--- a/drivers/usb/host/ehci-omap.c
|
||||
+++ b/drivers/usb/host/ehci-omap.c
|
||||
@@ -36,6 +36,9 @@
|
||||
* - convert to use hwmod and runtime PM
|
||||
*/
|
||||
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/io.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/usb/ulpi.h>
|
||||
@@ -43,6 +46,10 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/clk.h>
|
||||
+#include <linux/usb.h>
|
||||
+#include <linux/usb/hcd.h>
|
||||
+
|
||||
+#include "ehci.h"
|
||||
|
||||
#include <linux/platform_data/usb-omap.h>
|
||||
|
||||
@@ -57,9 +64,11 @@
|
||||
#define EHCI_INSNREG05_ULPI_EXTREGADD_SHIFT 8
|
||||
#define EHCI_INSNREG05_ULPI_WRDATA_SHIFT 0
|
||||
|
||||
-/*-------------------------------------------------------------------------*/
|
||||
+#define DRIVER_DESC "OMAP-EHCI Host Controller driver"
|
||||
|
||||
-static const struct hc_driver ehci_omap_hc_driver;
|
||||
+static const char hcd_name[] = "ehci-omap";
|
||||
+
|
||||
+/*-------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
static inline void ehci_write(void __iomem *base, u32 reg, u32 val)
|
||||
@@ -166,6 +175,12 @@ static void disable_put_regulator(
|
||||
/* configure so an HC device and id are always provided */
|
||||
/* always called with process context; sleeping is OK */
|
||||
|
||||
+static struct hc_driver __read_mostly ehci_omap_hc_driver;
|
||||
+
|
||||
+static const struct ehci_driver_overrides ehci_omap_overrides __initdata = {
|
||||
+ .reset = omap_ehci_init,
|
||||
+};
|
||||
+
|
||||
/**
|
||||
* ehci_hcd_omap_probe - initialize TI-based HCDs
|
||||
*
|
||||
@@ -315,56 +330,33 @@ static struct platform_driver ehci_hcd_omap_driver = {
|
||||
/*.suspend = ehci_hcd_omap_suspend, */
|
||||
/*.resume = ehci_hcd_omap_resume, */
|
||||
.driver = {
|
||||
- .name = "ehci-omap",
|
||||
+ .name = hcd_name,
|
||||
}
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
-static const struct hc_driver ehci_omap_hc_driver = {
|
||||
- .description = hcd_name,
|
||||
- .product_desc = "OMAP-EHCI Host Controller",
|
||||
- .hcd_priv_size = sizeof(struct ehci_hcd),
|
||||
-
|
||||
- /*
|
||||
- * generic hardware linkage
|
||||
- */
|
||||
- .irq = ehci_irq,
|
||||
- .flags = HCD_MEMORY | HCD_USB2,
|
||||
-
|
||||
- /*
|
||||
- * basic lifecycle operations
|
||||
- */
|
||||
- .reset = omap_ehci_init,
|
||||
- .start = ehci_run,
|
||||
- .stop = ehci_stop,
|
||||
- .shutdown = ehci_shutdown,
|
||||
-
|
||||
- /*
|
||||
- * managing i/o requests and associated device resources
|
||||
- */
|
||||
- .urb_enqueue = ehci_urb_enqueue,
|
||||
- .urb_dequeue = ehci_urb_dequeue,
|
||||
- .endpoint_disable = ehci_endpoint_disable,
|
||||
- .endpoint_reset = ehci_endpoint_reset,
|
||||
+static int __init ehci_omap_init(void)
|
||||
+{
|
||||
+ if (usb_disabled())
|
||||
+ return -ENODEV;
|
||||
|
||||
- /*
|
||||
- * scheduling support
|
||||
- */
|
||||
- .get_frame_number = ehci_get_frame,
|
||||
+ pr_info("%s: " DRIVER_DESC "\n", hcd_name);
|
||||
|
||||
- /*
|
||||
- * root hub support
|
||||
- */
|
||||
- .hub_status_data = ehci_hub_status_data,
|
||||
- .hub_control = ehci_hub_control,
|
||||
- .bus_suspend = ehci_bus_suspend,
|
||||
- .bus_resume = ehci_bus_resume,
|
||||
+ ehci_init_driver(&ehci_omap_hc_driver, &ehci_omap_overrides);
|
||||
+ return platform_driver_register(&ehci_hcd_omap_driver);
|
||||
+}
|
||||
+module_init(ehci_omap_init);
|
||||
|
||||
- .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
|
||||
-};
|
||||
+static void __exit ehci_omap_cleanup(void)
|
||||
+{
|
||||
+ platform_driver_unregister(&ehci_hcd_omap_driver);
|
||||
+}
|
||||
+module_exit(ehci_omap_cleanup);
|
||||
|
||||
MODULE_ALIAS("platform:ehci-omap");
|
||||
MODULE_AUTHOR("Texas Instruments, Inc.");
|
||||
MODULE_AUTHOR("Felipe Balbi <felipe.balbi@nokia.com>");
|
||||
|
||||
+MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
+MODULE_LICENSE("GPL");
|
||||
--
|
||||
cgit v0.9.1
|
|
@ -1,28 +0,0 @@
|
|||
diff --git a/drivers/clk/tegra/clk-periph.c b/drivers/clk/tegra/clk-periph.c
|
||||
index 788486e..2f4d0e3 100644
|
||||
--- a/drivers/clk/tegra/clk-periph.c
|
||||
+++ b/drivers/clk/tegra/clk-periph.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/err.h>
|
||||
+#include <linux/export.h>
|
||||
|
||||
#include "clk.h"
|
||||
|
||||
@@ -128,6 +129,7 @@ void tegra_periph_reset_deassert(struct clk *c)
|
||||
|
||||
tegra_periph_reset(gate, 0);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(tegra_periph_reset_deassert);
|
||||
|
||||
void tegra_periph_reset_assert(struct clk *c)
|
||||
{
|
||||
@@ -147,6 +149,7 @@ void tegra_periph_reset_assert(struct clk *c)
|
||||
|
||||
tegra_periph_reset(gate, 1);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(tegra_periph_reset_assert);
|
||||
|
||||
const struct clk_ops tegra_clk_periph_ops = {
|
||||
.get_parent = clk_periph_get_parent,
|
|
@ -117,3 +117,7 @@ CONFIG_MAC80211_MESSAGE_TRACING=y
|
|||
CONFIG_EDAC_DEBUG=y
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
|
||||
CONFIG_TEST_STRING_HELPERS=m
|
||||
CONFIG_XFS_WARN=y
|
||||
|
||||
|
|
|
@ -188,6 +188,7 @@ CONFIG_FW_LOADER=y
|
|||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_EXTRA_FIRMWARE=""
|
||||
|
||||
# Give this a try in rawhide for now
|
||||
# CONFIG_FW_LOADER_USER_HELPER is not set
|
||||
|
||||
# CONFIG_CMA is not set
|
||||
|
@ -2309,7 +2310,6 @@ CONFIG_SENSORS_MAX1619=m
|
|||
CONFIG_SENSORS_MAX6650=m
|
||||
CONFIG_SENSORS_MAX6697=m
|
||||
CONFIG_SENSORS_MCP3021=m
|
||||
CONFIG_SENSORS_NCT6775=m
|
||||
CONFIG_SENSORS_NTC_THERMISTOR=m
|
||||
CONFIG_SENSORS_PC87360=m
|
||||
CONFIG_SENSORS_PC87427=m
|
||||
|
@ -3999,7 +3999,8 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y
|
|||
# CONFIG_SECURITY_YAMA is not set
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_AUDITSYSCALL=y
|
||||
# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set
|
||||
# http://lists.fedoraproject.org/pipermail/kernel/2013-February/004125.html
|
||||
CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
|
@ -4712,3 +4713,60 @@ CONFIG_IOMMU_SUPPORT=y
|
|||
# CONFIG_CRYPTO_KEY_TYPE is not set
|
||||
# CONFIG_PGP_LIBRARY is not set
|
||||
# CONFIG_PGP_PRELOAD is not set
|
||||
|
||||
|
||||
# F18 3.10 rebase options below
|
||||
|
||||
# CONFIG_ATH6KL_TRACING is not set
|
||||
CONFIG_BATMAN_ADV_NC=y
|
||||
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
|
||||
# CONFIG_BCACHE_DEBUG is not set
|
||||
# CONFIG_BCACHE_EDEBUG is not set
|
||||
CONFIG_BCACHE=m
|
||||
CONFIG_BINFMT_SCRIPT=y
|
||||
CONFIG_BOUNCE=y
|
||||
# CONFIG_BTRFS_DEBUG is not set
|
||||
# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
|
||||
CONFIG_CRYPTO_CMAC=m
|
||||
# CONFIG_DUMMY_IRQ is not set
|
||||
# CONFIG_FB_SIMPLE is not set
|
||||
# CONFIG_GPIO_GRGPIO is not set
|
||||
CONFIG_HID_APPLEIR=m
|
||||
# CONFIG_INPUT_IMS_PCU is not set
|
||||
CONFIG_LEDS_LP5562=m
|
||||
CONFIG_LEDS_TRIGGER_CAMERA=m
|
||||
# CONFIG_MFD_CROS_EC is not set
|
||||
# CONFIG_MFD_SI476X_CORE is not set
|
||||
CONFIG_NETLINK_DIAG=m
|
||||
CONFIG_NETLINK_MMAP=y
|
||||
CONFIG_NET_TEAM_MODE_RANDOM=m
|
||||
# CONFIG_RCU_USER_QS is not set
|
||||
# CONFIG_RESET_CONTROLLER is not set
|
||||
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
|
||||
CONFIG_RT2800USB_RT55XX=y
|
||||
# CONFIG_SCSI_UFSHCD_PLATFORM is not set
|
||||
CONFIG_SENSORS_ADT7310=m
|
||||
CONFIG_SENSORS_LM95234=m
|
||||
CONFIG_SENSORS_NCT6775=m
|
||||
# CONFIG_SERIO_APBPS2 is not set
|
||||
# CONFIG_SMS_SIANO_DEBUGFS is not set
|
||||
# CONFIG_SRAM is not set
|
||||
# CONFIG_SSBI is not set
|
||||
# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
|
||||
CONFIG_USB_DEFAULT_PERSIST=y
|
||||
CONFIG_USB_PHY=y
|
||||
CONFIG_USB_RTL8152=m
|
||||
# CONFIG_USB_SERIAL_WISHBONE is not set
|
||||
# CONFIG_W1_SLAVE_DS2408_READBACK is not set
|
||||
# CONFIG_SAMSUNG_USB2PHY is not set
|
||||
# CONFIG_SAMSUNG_USB3PHY is not set
|
||||
CONFIG_ALX=m
|
||||
CONFIG_INFINIBAND_ISERT=m
|
||||
CONFIG_QLCNIC_SRIOV=y
|
||||
CONFIG_RTL8188EE=m
|
||||
# CONFIG_SAMSUNG_USBPHY is not set
|
||||
# CONFIG_TIPC_MEDIA_IB is not set
|
||||
# CONFIG_USB_DWC2 is not set
|
||||
CONFIG_VHOST_SCSI=m
|
||||
# CONFIG_MFD_TPS65912 is not set
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
|
|
|
@ -119,3 +119,7 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
|
|||
# CONFIG_SPI_DEBUG is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
|
||||
# CONFIG_TEST_STRING_HELPERS is not set
|
||||
# CONFIG_XFS_WARN is not set
|
||||
|
||||
|
|
|
@ -392,3 +392,5 @@ CONFIG_BACKLIGHT_PWM=m
|
|||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=n
|
||||
|
||||
CONFIG_XZ_DEC_POWERPC=y
|
||||
|
||||
# CONFIG_POWERNV_MSI is not set
|
||||
|
|
|
@ -181,3 +181,6 @@ CONFIG_BPF_JIT=y
|
|||
# CONFIG_PPC_TRANSACTIONAL_MEM is not set
|
||||
# CONFIG_SND_HDA_INTEL is not set
|
||||
CONFIG_BLK_DEV_RSXX=m
|
||||
|
||||
CONFIG_POWERNV_MSI=y
|
||||
CONFIG_KVM_XICS=y
|
||||
|
|
|
@ -171,3 +171,6 @@ CONFIG_BPF_JIT=y
|
|||
# CONFIG_PCIEPORTBUS is not set
|
||||
# CONFIG_SND_HDA_INTEL is not set
|
||||
CONFIG_BLK_DEV_RSXX=m
|
||||
|
||||
CONFIG_POWERNV_MSI=y
|
||||
CONFIG_KVM_XICS=y
|
||||
|
|
|
@ -448,14 +448,27 @@ CONFIG_XZ_DEC_X86=y
|
|||
CONFIG_MPILIB=y
|
||||
CONFIG_PKCS7_MESSAGE_PARSER=y
|
||||
CONFIG_EFI_SIGNATURE_LIST_PARSER=y
|
||||
CONFIG_PE_FILE_PARSER=y
|
||||
CONFIG_MODULE_SIG=y
|
||||
CONFIG_MODULE_SIG_ALL=y
|
||||
# CONFIG_MODULE_SIG_SHA1 is not set
|
||||
CONFIG_MODULE_SIG_SHA256=y
|
||||
# CONFIG_MODULE_SIG_FORCE is not set
|
||||
CONFIG_MODULE_SIG_BLACKLIST=y
|
||||
CONFIG_SYSTEM_BLACKLIST_KEYRING=y
|
||||
|
||||
CONFIG_MODULE_SIG_UEFI=y
|
||||
|
||||
CONFIG_VMXNET3=m
|
||||
CONFIG_VFIO_PCI_VGA=y
|
||||
|
||||
CONFIG_EFIVAR_FS=y
|
||||
CONFIG_HYPERVISOR_GUEST=y
|
||||
CONFIG_KVM_DEVICE_ASSIGNMENT=y
|
||||
CONFIG_NFC_MEI_PHY=m
|
||||
CONFIG_PVPANIC=m
|
||||
CONFIG_X86_AMD_FREQ_SENSITIVITY=m
|
||||
CONFIG_FB_HYPERV=m
|
||||
CONFIG_NFC_MICROREAD_MEI=m
|
||||
CONFIG_NFC_PN544_MEI=m
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@ CONFIG_XEN_MAX_DOMAIN_MEMORY=128
|
|||
CONFIG_XEN_DEV_EVTCHN=m
|
||||
CONFIG_XEN_SYS_HYPERVISOR=y
|
||||
# CONFIG_XEN_MCE_LOG is not set
|
||||
# CONFIG_XEN_STUB is not set
|
||||
|
||||
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
|
||||
|
||||
|
@ -133,6 +134,11 @@ CONFIG_BPF_JIT=y
|
|||
CONFIG_NTB=m
|
||||
CONFIG_NTB_NETDEV=m
|
||||
|
||||
CONFIG_SFC=m
|
||||
CONFIG_SFC_MCDI_MON=y
|
||||
CONFIG_SFC_SRIOV=y
|
||||
CONFIG_SFC_PTP=y
|
||||
|
||||
# 10GigE
|
||||
#
|
||||
CONFIG_IP1000=m
|
||||
|
@ -148,3 +154,8 @@ CONFIG_SFC_MTD=y
|
|||
CONFIG_MTD_CHAR=m
|
||||
CONFIG_MTD_BLOCK=m
|
||||
|
||||
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m
|
||||
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
|
||||
CONFIG_CRYPTO_SHA256_SSSE3=m
|
||||
CONFIG_CRYPTO_SHA512_SSSE3=m
|
||||
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
From 307f2fb95e9b96b3577916e73d92e104f8f26494 Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Date: Fri, 12 Jul 2013 21:46:33 +0000
|
||||
Subject: ipv6: only static routes qualify for equal cost multipathing
|
||||
|
||||
Static routes in this case are non-expiring routes which did not get
|
||||
configured by autoconf or by icmpv6 redirects.
|
||||
|
||||
To make sure we actually get an ecmp route while searching for the first
|
||||
one in this fib6_node's leafs, also make sure it matches the ecmp route
|
||||
assumptions.
|
||||
|
||||
v2:
|
||||
a) Removed RTF_EXPIRE check in dst.from chain. The check of RTF_ADDRCONF
|
||||
already ensures that this route, even if added again without
|
||||
RTF_EXPIRES (in case of a RA announcement with infinite timeout),
|
||||
does not cause the rt6i_nsiblings logic to go wrong if a later RA
|
||||
updates the expiration time later.
|
||||
|
||||
v3:
|
||||
a) Allow RTF_EXPIRES routes to enter the ecmp route set. We have to do so,
|
||||
because an pmtu event could update the RTF_EXPIRES flag and we would
|
||||
not count this route, if another route joins this set. We now filter
|
||||
only for RTF_GATEWAY|RTF_ADDRCONF|RTF_DYNAMIC, which are flags that
|
||||
don't get changed after rt6_info construction.
|
||||
|
||||
Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
|
||||
index 192dd1a..5fc9c7a 100644
|
||||
--- a/net/ipv6/ip6_fib.c
|
||||
+++ b/net/ipv6/ip6_fib.c
|
||||
@@ -632,6 +632,12 @@ insert_above:
|
||||
return ln;
|
||||
}
|
||||
|
||||
+static inline bool rt6_qualify_for_ecmp(struct rt6_info *rt)
|
||||
+{
|
||||
+ return (rt->rt6i_flags & (RTF_GATEWAY|RTF_ADDRCONF|RTF_DYNAMIC)) ==
|
||||
+ RTF_GATEWAY;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Insert routing information in a node.
|
||||
*/
|
||||
@@ -646,6 +652,7 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
|
||||
int add = (!info->nlh ||
|
||||
(info->nlh->nlmsg_flags & NLM_F_CREATE));
|
||||
int found = 0;
|
||||
+ bool rt_can_ecmp = rt6_qualify_for_ecmp(rt);
|
||||
|
||||
ins = &fn->leaf;
|
||||
|
||||
@@ -691,9 +698,8 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
|
||||
* To avoid long list, we only had siblings if the
|
||||
* route have a gateway.
|
||||
*/
|
||||
- if (rt->rt6i_flags & RTF_GATEWAY &&
|
||||
- !(rt->rt6i_flags & RTF_EXPIRES) &&
|
||||
- !(iter->rt6i_flags & RTF_EXPIRES))
|
||||
+ if (rt_can_ecmp &&
|
||||
+ rt6_qualify_for_ecmp(iter))
|
||||
rt->rt6i_nsiblings++;
|
||||
}
|
||||
|
||||
@@ -715,7 +721,8 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
|
||||
/* Find the first route that have the same metric */
|
||||
sibling = fn->leaf;
|
||||
while (sibling) {
|
||||
- if (sibling->rt6i_metric == rt->rt6i_metric) {
|
||||
+ if (sibling->rt6i_metric == rt->rt6i_metric &&
|
||||
+ rt6_qualify_for_ecmp(sibling)) {
|
||||
list_add_tail(&rt->rt6i_siblings,
|
||||
&sibling->rt6i_siblings);
|
||||
break;
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -1,66 +0,0 @@
|
|||
--- linux.orig/include/asm-generic/bug.h
|
||||
+++ linux/include/asm-generic/bug.h
|
||||
@@ -55,6 +55,8 @@ struct bug_entry {
|
||||
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0)
|
||||
#endif
|
||||
|
||||
+void print_hardware_dmi_name(void);
|
||||
+
|
||||
/*
|
||||
* WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report
|
||||
* significant issues that need prompt attention if they should ever
|
||||
--- linux.orig/kernel/panic.c
|
||||
+++ linux/kernel/panic.c
|
||||
@@ -391,6 +391,15 @@ void oops_exit(void)
|
||||
kmsg_dump(KMSG_DUMP_OOPS);
|
||||
}
|
||||
|
||||
+void print_hardware_dmi_name(void)
|
||||
+{
|
||||
+ const char *board;
|
||||
+
|
||||
+ board = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
+ if (board)
|
||||
+ printk(KERN_WARNING "Hardware name: %s\n", board);
|
||||
+}
|
||||
+
|
||||
#ifdef WANT_WARN_ON_SLOWPATH
|
||||
struct slowpath_args {
|
||||
const char *fmt;
|
||||
@@ -400,13 +409,10 @@ struct slowpath_args {
|
||||
static void warn_slowpath_common(const char *file, int line, void *caller,
|
||||
unsigned taint, struct slowpath_args *args)
|
||||
{
|
||||
- const char *board;
|
||||
-
|
||||
printk(KERN_WARNING "------------[ cut here ]------------\n");
|
||||
printk(KERN_WARNING "WARNING: at %s:%d %pS()\n", file, line, caller);
|
||||
- board = dmi_get_system_info(DMI_PRODUCT_NAME);
|
||||
- if (board)
|
||||
- printk(KERN_WARNING "Hardware name: %s\n", board);
|
||||
+
|
||||
+ print_hardware_dmi_name();
|
||||
|
||||
if (args)
|
||||
vprintk(args->fmt, args->args);
|
||||
--- linux.orig/mm/memory.c
|
||||
+++ linux/mm/memory.c
|
||||
@@ -706,6 +706,8 @@ static void print_bad_pte(struct vm_area
|
||||
"BUG: Bad page map in process %s pte:%08llx pmd:%08llx\n",
|
||||
current->comm,
|
||||
(long long)pte_val(pte), (long long)pmd_val(*pmd));
|
||||
+ print_hardware_dmi_name();
|
||||
+
|
||||
if (page)
|
||||
dump_page(page);
|
||||
printk(KERN_ALERT
|
||||
--- linux.orig/mm/page_alloc.c
|
||||
+++ linux/mm/page_alloc.c
|
||||
@@ -321,6 +321,7 @@ static void bad_page(struct page *page)
|
||||
current->comm, page_to_pfn(page));
|
||||
dump_page(page);
|
||||
|
||||
+ print_hardware_dmi_name();
|
||||
print_modules();
|
||||
dump_stack();
|
||||
out:
|
|
@ -1,21 +0,0 @@
|
|||
diff -durpN '--exclude-from=/home/davej/.exclude' /home/davej/src/kernel/git-trees/linux/mm/memory.c linux-dj/mm/memory.c
|
||||
--- /home/davej/src/kernel/git-trees/linux/mm/memory.c 2013-02-26 14:41:18.591116577 -0500
|
||||
+++ linux-dj/mm/memory.c 2013-02-28 20:04:37.678304092 -0500
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <linux/swapops.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/gfp.h>
|
||||
+#include <linux/module.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
--- linux-3.9.0-200.fc18.x86_64/mm/memory.c~ 2013-05-06 15:04:30.324416922 -0400
|
||||
+++ linux-3.9.0-200.fc18.x86_64/mm/memory.c 2013-05-06 15:04:43.933398227 -0400
|
||||
@@ -723,6 +723,7 @@ static void print_bad_pte(struct vm_area
|
||||
if (vma->vm_file && vma->vm_file->f_op)
|
||||
print_symbol(KERN_ALERT "vma->vm_file->f_op->mmap: %s\n",
|
||||
(unsigned long)vma->vm_file->f_op->mmap);
|
||||
+ print_modules();
|
||||
dump_stack();
|
||||
add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,113 @@
|
|||
From 94a335dba34ff47cad3d6d0c29b452d43a1be3c8 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Date: Wed, 17 Jul 2013 14:51:28 +0200
|
||||
Subject: [PATCH] drm/i915: correctly restore fences with objects attached
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
To avoid stalls we delay tiling changes and especially hold of
|
||||
committing the new fence state for as long as possible.
|
||||
Synchronization points are in the execbuf code and in our gtt fault
|
||||
handler.
|
||||
|
||||
Unfortunately we've missed that tricky detail when adding proper fence
|
||||
restore code in
|
||||
|
||||
commit 19b2dbde5732170a03bd82cc8bd442cf88d856f7
|
||||
Author: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Wed Jun 12 10:15:12 2013 +0100
|
||||
|
||||
drm/i915: Restore fences after resume and GPU resets
|
||||
|
||||
The result was that we've restored fences for objects with no tiling,
|
||||
since the object<->fence link still existed after resume. Now that
|
||||
wouldn't have been too bad since any subsequent access would have
|
||||
fixed things up, but if we've changed from tiled to untiled real havoc
|
||||
happened:
|
||||
|
||||
The tiling stride is stored -1 in the fence register, so a stride of 0
|
||||
resulted in all 1s in the top 32bits, and so a completely bogus fence
|
||||
spanning everything from the start of the object to the top of the
|
||||
GTT. The tell-tale in the register dumps looks like:
|
||||
|
||||
FENCE START 2: 0x0214d001
|
||||
FENCE END 2: 0xfffff3ff
|
||||
|
||||
Bit 11 isn't set since the hw doesn't store it, even when writing all
|
||||
1s (at least on my snb here).
|
||||
|
||||
To prevent such a gaffle in the future add a sanity check for fences
|
||||
with an untiled object attached in i915_gem_write_fence.
|
||||
|
||||
v2: Fix the WARN, spotted by Chris.
|
||||
|
||||
v3: Trying to reuse get_fences looked ugly and obfuscated the code.
|
||||
Instead reuse update_fence and to make it really dtrt also move the
|
||||
fence dirty state clearing into update_fence.
|
||||
|
||||
Cc: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: Stéphane Marchesin <marcheu@chromium.org>
|
||||
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=60530
|
||||
Cc: stable@vger.kernel.org (for 3.10 only)
|
||||
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Tested-by: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Tested-by: Björn Bidar <theodorstormgrade@gmail.com>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_gem.c | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||||
index 97afd26..d9e2208 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -2258,7 +2258,17 @@ void i915_gem_restore_fences(struct drm_device *dev)
|
||||
|
||||
for (i = 0; i < dev_priv->num_fence_regs; i++) {
|
||||
struct drm_i915_fence_reg *reg = &dev_priv->fence_regs[i];
|
||||
- i915_gem_write_fence(dev, i, reg->obj);
|
||||
+
|
||||
+ /*
|
||||
+ * Commit delayed tiling changes if we have an object still
|
||||
+ * attached to the fence, otherwise just clear the fence.
|
||||
+ */
|
||||
+ if (reg->obj) {
|
||||
+ i915_gem_object_update_fence(reg->obj, reg,
|
||||
+ reg->obj->tiling_mode);
|
||||
+ } else {
|
||||
+ i915_gem_write_fence(dev, i, NULL);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2795,6 +2805,10 @@ static void i915_gem_write_fence(struct drm_device *dev, int reg,
|
||||
if (i915_gem_object_needs_mb(dev_priv->fence_regs[reg].obj))
|
||||
mb();
|
||||
|
||||
+ WARN(obj && (!obj->stride || !obj->tiling_mode),
|
||||
+ "bogus fence setup with stride: 0x%x, tiling mode: %i\n",
|
||||
+ obj->stride, obj->tiling_mode);
|
||||
+
|
||||
switch (INTEL_INFO(dev)->gen) {
|
||||
case 7:
|
||||
case 6:
|
||||
@@ -2836,6 +2850,7 @@ static void i915_gem_object_update_fence(struct drm_i915_gem_object *obj,
|
||||
fence->obj = NULL;
|
||||
list_del_init(&fence->lru_list);
|
||||
}
|
||||
+ obj->fence_dirty = false;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -2965,7 +2980,6 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj)
|
||||
return 0;
|
||||
|
||||
i915_gem_object_update_fence(obj, reg, enable);
|
||||
- obj->fence_dirty = false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
|
@ -1,17 +1,17 @@
|
|||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index 296cfc2..516e1e2 100644
|
||||
index fb2fbc1..0aaf67d 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -350,7 +350,7 @@ intel_dp_check_edp(struct intel_dp *intel_dp)
|
||||
if (!is_edp(intel_dp))
|
||||
return;
|
||||
@@ -283,7 +283,7 @@ intel_dp_check_edp(struct intel_dp *intel_dp)
|
||||
pp_ctrl_reg = IS_VALLEYVIEW(dev) ? PIPEA_PP_CONTROL : PCH_PP_CONTROL;
|
||||
|
||||
if (!ironlake_edp_have_panel_power(intel_dp) && !ironlake_edp_have_panel_vdd(intel_dp)) {
|
||||
- WARN(1, "eDP powered off while attempting aux channel communication.\n");
|
||||
+ DRM_ERROR("eDP powered off while attempting aux channel communication.\n");
|
||||
DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n",
|
||||
I915_READ(PCH_PP_STATUS),
|
||||
I915_READ(PCH_PP_CONTROL));
|
||||
@@ -447,7 +447,7 @@ intel_dp_aux_ch(struct intel_dp *intel_d
|
||||
I915_READ(pp_stat_reg),
|
||||
I915_READ(pp_ctrl_reg));
|
||||
@@ -376,7 +376,7 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
|
||||
}
|
||||
|
||||
if (try == 3) {
|
||||
|
@ -20,7 +20,7 @@ index 296cfc2..516e1e2 100644
|
|||
I915_READ(ch_ctl));
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
@@ -1024,8 +1024,8 @@ static void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
||||
@@ -995,8 +995,8 @@ void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
||||
return;
|
||||
DRM_DEBUG_KMS("Turn eDP VDD on\n");
|
||||
|
||||
|
@ -31,7 +31,7 @@ index 296cfc2..516e1e2 100644
|
|||
|
||||
intel_dp->want_panel_vdd = true;
|
||||
|
||||
@@ -1090,7 +1090,8 @@ static void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
|
||||
@@ -1070,7 +1070,8 @@ void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
|
||||
return;
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP VDD off %d\n", intel_dp->want_panel_vdd);
|
||||
|
@ -41,7 +41,7 @@ index 296cfc2..516e1e2 100644
|
|||
|
||||
intel_dp->want_panel_vdd = false;
|
||||
|
||||
@@ -1160,7 +1161,8 @@ static void ironlake_edp_panel_off(struct intel_dp *intel_dp)
|
||||
@@ -1144,7 +1145,8 @@ void ironlake_edp_panel_off(struct intel_dp *intel_dp)
|
||||
|
||||
DRM_DEBUG_KMS("Turn eDP power off\n");
|
||||
|
||||
|
@ -49,5 +49,5 @@ index 296cfc2..516e1e2 100644
|
|||
+ if (!intel_dp->want_panel_vdd)
|
||||
+ DRM_ERROR("Need VDD to turn off panel\n");
|
||||
|
||||
pp = ironlake_get_pp_control(dev_priv);
|
||||
pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE);
|
||||
pp = ironlake_get_pp_control(intel_dp);
|
||||
/* We need to switch off panel power _and_ force vdd, for otherwise some
|
||||
|
|
|
@ -1,108 +0,0 @@
|
|||
commit 8ed5b5d41168a98cffa63e2f6c51c3243e159706
|
||||
Author: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
Date: Wed Mar 13 22:56:33 2013 -0300
|
||||
|
||||
i7300_edac: Fix memory detection in single mode
|
||||
|
||||
When the machine is on single mode, only branch 0 channel 0
|
||||
is valid. However, the code is not honouring it:
|
||||
|
||||
[ 1952.639341] EDAC DEBUG: i7300_get_mc_regs: Memory controller operating on single mode
|
||||
...
|
||||
[ 1952.639351] EDAC DEBUG: i7300_init_csrows: AMB-present CH0 = 0x1:
|
||||
[ 1952.639353] EDAC DEBUG: i7300_init_csrows: AMB-present CH1 = 0x0:
|
||||
[ 1952.639355] EDAC DEBUG: i7300_init_csrows: AMB-present CH2 = 0x0:
|
||||
[ 1952.639358] EDAC DEBUG: i7300_init_csrows: AMB-present CH3 = 0x0:
|
||||
...
|
||||
[ 1952.639360] EDAC DEBUG: decode_mtr: MTR0 CH0: DIMMs are Present (mtr)
|
||||
[ 1952.639362] EDAC DEBUG: decode_mtr: WIDTH: x8
|
||||
[ 1952.639363] EDAC DEBUG: decode_mtr: ELECTRICAL THROTTLING is enabled
|
||||
[ 1952.639364] EDAC DEBUG: decode_mtr: NUMBANK: 4 bank(s)
|
||||
[ 1952.639366] EDAC DEBUG: decode_mtr: NUMRANK: single
|
||||
[ 1952.639367] EDAC DEBUG: decode_mtr: NUMROW: 16,384 - 14 rows
|
||||
[ 1952.639368] EDAC DEBUG: decode_mtr: NUMCOL: 1,024 - 10 columns
|
||||
[ 1952.639370] EDAC DEBUG: decode_mtr: SIZE: 512 MB
|
||||
[ 1952.639371] EDAC DEBUG: decode_mtr: ECC code is 8-byte-over-32-byte SECDED+ code
|
||||
[ 1952.639373] EDAC DEBUG: decode_mtr: Scrub algorithm for x8 is on enhanced mode
|
||||
[ 1952.639374] EDAC DEBUG: decode_mtr: MTR0 CH1: DIMMs are Present (mtr)
|
||||
[ 1952.639376] EDAC DEBUG: decode_mtr: WIDTH: x8
|
||||
[ 1952.639377] EDAC DEBUG: decode_mtr: ELECTRICAL THROTTLING is enabled
|
||||
[ 1952.639379] EDAC DEBUG: decode_mtr: NUMBANK: 4 bank(s)
|
||||
[ 1952.639380] EDAC DEBUG: decode_mtr: NUMRANK: single
|
||||
[ 1952.639381] EDAC DEBUG: decode_mtr: NUMROW: 16,384 - 14 rows
|
||||
[ 1952.639383] EDAC DEBUG: decode_mtr: NUMCOL: 1,024 - 10 columns
|
||||
[ 1952.639384] EDAC DEBUG: decode_mtr: SIZE: 512 MB
|
||||
[ 1952.639385] EDAC DEBUG: decode_mtr: ECC code is 8-byte-over-32-byte SECDED+ code
|
||||
[ 1952.639387] EDAC DEBUG: decode_mtr: Scrub algorithm for x8 is on enhanced mode
|
||||
...
|
||||
[ 1952.639449] EDAC DEBUG: print_dimm_size: channel 0 | channel 1 | channel 2 | channel 3 |
|
||||
[ 1952.639451] EDAC DEBUG: print_dimm_size: -------------------------------------------------------------
|
||||
[ 1952.639453] EDAC DEBUG: print_dimm_size: csrow/SLOT 0 512 MB | 512 MB | 0 MB | 0 MB |
|
||||
[ 1952.639456] EDAC DEBUG: print_dimm_size: csrow/SLOT 1 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639458] EDAC DEBUG: print_dimm_size: csrow/SLOT 2 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639460] EDAC DEBUG: print_dimm_size: csrow/SLOT 3 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639462] EDAC DEBUG: print_dimm_size: csrow/SLOT 4 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639464] EDAC DEBUG: print_dimm_size: csrow/SLOT 5 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639466] EDAC DEBUG: print_dimm_size: csrow/SLOT 6 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639468] EDAC DEBUG: print_dimm_size: csrow/SLOT 7 0 MB | 0 MB | 0 MB | 0 MB |
|
||||
[ 1952.639470] EDAC DEBUG: print_dimm_size: -------------------------------------------------------------
|
||||
|
||||
Instead of detecting a single memory at channel 0, it is showing
|
||||
twice the memory.
|
||||
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
|
||||
diff --git a/drivers/edac/i7300_edac.c b/drivers/edac/i7300_edac.c
|
||||
index 087c27b..9004c64 100644
|
||||
--- a/drivers/edac/i7300_edac.c
|
||||
+++ b/drivers/edac/i7300_edac.c
|
||||
@@ -750,15 +750,23 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
|
||||
struct i7300_dimm_info *dinfo;
|
||||
int rc = -ENODEV;
|
||||
int mtr;
|
||||
- int ch, branch, slot, channel;
|
||||
+ int ch, branch, slot, channel, max_channel, max_branch;
|
||||
struct dimm_info *dimm;
|
||||
|
||||
pvt = mci->pvt_info;
|
||||
|
||||
edac_dbg(2, "Memory Technology Registers:\n");
|
||||
|
||||
+ if (IS_SINGLE_MODE(pvt->mc_settings_a)) {
|
||||
+ max_branch = 1;
|
||||
+ max_channel = 1;
|
||||
+ } else {
|
||||
+ max_branch = MAX_BRANCHES;
|
||||
+ max_channel = MAX_CH_PER_BRANCH;
|
||||
+ }
|
||||
+
|
||||
/* Get the AMB present registers for the four channels */
|
||||
- for (branch = 0; branch < MAX_BRANCHES; branch++) {
|
||||
+ for (branch = 0; branch < max_branch; branch++) {
|
||||
/* Read and dump branch 0's MTRs */
|
||||
channel = to_channel(0, branch);
|
||||
pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
|
||||
@@ -767,6 +775,9 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
|
||||
edac_dbg(2, "\t\tAMB-present CH%d = 0x%x:\n",
|
||||
channel, pvt->ambpresent[channel]);
|
||||
|
||||
+ if (max_channel == 1)
|
||||
+ continue;
|
||||
+
|
||||
channel = to_channel(1, branch);
|
||||
pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
|
||||
AMBPRESENT_1,
|
||||
@@ -778,11 +789,11 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
|
||||
/* Get the set of MTR[0-7] regs by each branch */
|
||||
for (slot = 0; slot < MAX_SLOTS; slot++) {
|
||||
int where = mtr_regs[slot];
|
||||
- for (branch = 0; branch < MAX_BRANCHES; branch++) {
|
||||
+ for (branch = 0; branch < max_branch; branch++) {
|
||||
pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
|
||||
where,
|
||||
&pvt->mtr[slot][branch]);
|
||||
- for (ch = 0; ch < MAX_CH_PER_BRANCH; ch++) {
|
||||
+ for (ch = 0; ch < max_channel; ch++) {
|
||||
int channel = to_channel(ch, branch);
|
||||
|
||||
dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms,
|
|
@ -1,128 +0,0 @@
|
|||
From 0e3f585c132e7716b8b96c20c59b15a24ec2790e Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Date: Mon, 1 Jul 2013 20:21:30 +0200
|
||||
Subject: [PATCH 11/40] ipv6: call udp_push_pending_frames when uncorking a
|
||||
socket with AF_INET pending data
|
||||
|
||||
[ Upstream commit 8822b64a0fa64a5dd1dfcf837c5b0be83f8c05d1 ]
|
||||
|
||||
We accidentally call down to ip6_push_pending_frames when uncorking
|
||||
pending AF_INET data on a ipv6 socket. This results in the following
|
||||
splat (from Dave Jones):
|
||||
|
||||
skbuff: skb_under_panic: text:ffffffff816765f6 len:48 put:40 head:ffff88013deb6df0 data:ffff88013deb6dec tail:0x2c end:0xc0 dev:<NULL>
|
||||
------------[ cut here ]------------
|
||||
kernel BUG at net/core/skbuff.c:126!
|
||||
invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
|
||||
Modules linked in: dccp_ipv4 dccp 8021q garp bridge stp dlci mpoa snd_seq_dummy sctp fuse hidp tun bnep nfnetlink scsi_transport_iscsi rfcomm can_raw can_bcm af_802154 appletalk caif_socket can caif ipt_ULOG x25 rose af_key pppoe pppox ipx phonet irda llc2 ppp_generic slhc p8023 psnap p8022 llc crc_ccitt atm bluetooth
|
||||
+netrom ax25 nfc rfkill rds af_rxrpc coretemp hwmon kvm_intel kvm crc32c_intel snd_hda_codec_realtek ghash_clmulni_intel microcode pcspkr snd_hda_codec_hdmi snd_hda_intel snd_hda_codec snd_hwdep usb_debug snd_seq snd_seq_device snd_pcm e1000e snd_page_alloc snd_timer ptp snd pps_core soundcore xfs libcrc32c
|
||||
CPU: 2 PID: 8095 Comm: trinity-child2 Not tainted 3.10.0-rc7+ #37
|
||||
task: ffff8801f52c2520 ti: ffff8801e6430000 task.ti: ffff8801e6430000
|
||||
RIP: 0010:[<ffffffff816e759c>] [<ffffffff816e759c>] skb_panic+0x63/0x65
|
||||
RSP: 0018:ffff8801e6431de8 EFLAGS: 00010282
|
||||
RAX: 0000000000000086 RBX: ffff8802353d3cc0 RCX: 0000000000000006
|
||||
RDX: 0000000000003b90 RSI: ffff8801f52c2ca0 RDI: ffff8801f52c2520
|
||||
RBP: ffff8801e6431e08 R08: 0000000000000000 R09: 0000000000000000
|
||||
R10: 0000000000000001 R11: 0000000000000001 R12: ffff88022ea0c800
|
||||
R13: ffff88022ea0cdf8 R14: ffff8802353ecb40 R15: ffffffff81cc7800
|
||||
FS: 00007f5720a10740(0000) GS:ffff880244c00000(0000) knlGS:0000000000000000
|
||||
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
|
||||
CR2: 0000000005862000 CR3: 000000022843c000 CR4: 00000000001407e0
|
||||
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
|
||||
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000600
|
||||
Stack:
|
||||
ffff88013deb6dec 000000000000002c 00000000000000c0 ffffffff81a3f6e4
|
||||
ffff8801e6431e18 ffffffff8159a9aa ffff8801e6431e90 ffffffff816765f6
|
||||
ffffffff810b756b 0000000700000002 ffff8801e6431e40 0000fea9292aa8c0
|
||||
Call Trace:
|
||||
[<ffffffff8159a9aa>] skb_push+0x3a/0x40
|
||||
[<ffffffff816765f6>] ip6_push_pending_frames+0x1f6/0x4d0
|
||||
[<ffffffff810b756b>] ? mark_held_locks+0xbb/0x140
|
||||
[<ffffffff81694919>] udp_v6_push_pending_frames+0x2b9/0x3d0
|
||||
[<ffffffff81694660>] ? udplite_getfrag+0x20/0x20
|
||||
[<ffffffff8162092a>] udp_lib_setsockopt+0x1aa/0x1f0
|
||||
[<ffffffff811cc5e7>] ? fget_light+0x387/0x4f0
|
||||
[<ffffffff816958a4>] udpv6_setsockopt+0x34/0x40
|
||||
[<ffffffff815949f4>] sock_common_setsockopt+0x14/0x20
|
||||
[<ffffffff81593c31>] SyS_setsockopt+0x71/0xd0
|
||||
[<ffffffff816f5d54>] tracesys+0xdd/0xe2
|
||||
Code: 00 00 48 89 44 24 10 8b 87 d8 00 00 00 48 89 44 24 08 48 8b 87 e8 00 00 00 48 c7 c7 c0 04 aa 81 48 89 04 24 31 c0 e8 e1 7e ff ff <0f> 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 55
|
||||
RIP [<ffffffff816e759c>] skb_panic+0x63/0x65
|
||||
RSP <ffff8801e6431de8>
|
||||
|
||||
This patch adds a check if the pending data is of address family AF_INET
|
||||
and directly calls udp_push_ending_frames from udp_v6_push_pending_frames
|
||||
if that is the case.
|
||||
|
||||
This bug was found by Dave Jones with trinity.
|
||||
|
||||
(Also move the initialization of fl6 below the AF_INET check, even if
|
||||
not strictly necessary.)
|
||||
|
||||
Cc: Dave Jones <davej@redhat.com>
|
||||
Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
include/net/udp.h | 1 +
|
||||
net/ipv4/udp.c | 3 ++-
|
||||
net/ipv6/udp.c | 7 ++++++-
|
||||
3 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/net/udp.h b/include/net/udp.h
|
||||
index 065f379..ad99eed 100644
|
||||
--- a/include/net/udp.h
|
||||
+++ b/include/net/udp.h
|
||||
@@ -181,6 +181,7 @@ extern int udp_get_port(struct sock *sk, unsigned short snum,
|
||||
extern void udp_err(struct sk_buff *, u32);
|
||||
extern int udp_sendmsg(struct kiocb *iocb, struct sock *sk,
|
||||
struct msghdr *msg, size_t len);
|
||||
+extern int udp_push_pending_frames(struct sock *sk);
|
||||
extern void udp_flush_pending_frames(struct sock *sk);
|
||||
extern int udp_rcv(struct sk_buff *skb);
|
||||
extern int udp_ioctl(struct sock *sk, int cmd, unsigned long arg);
|
||||
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
|
||||
index 0bf5d39..93b731d 100644
|
||||
--- a/net/ipv4/udp.c
|
||||
+++ b/net/ipv4/udp.c
|
||||
@@ -799,7 +799,7 @@ send:
|
||||
/*
|
||||
* Push out all pending data as one UDP datagram. Socket is locked.
|
||||
*/
|
||||
-static int udp_push_pending_frames(struct sock *sk)
|
||||
+int udp_push_pending_frames(struct sock *sk)
|
||||
{
|
||||
struct udp_sock *up = udp_sk(sk);
|
||||
struct inet_sock *inet = inet_sk(sk);
|
||||
@@ -818,6 +818,7 @@ out:
|
||||
up->pending = 0;
|
||||
return err;
|
||||
}
|
||||
+EXPORT_SYMBOL(udp_push_pending_frames);
|
||||
|
||||
int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
size_t len)
|
||||
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
|
||||
index 42923b1..e7b28f9 100644
|
||||
--- a/net/ipv6/udp.c
|
||||
+++ b/net/ipv6/udp.c
|
||||
@@ -955,11 +955,16 @@ static int udp_v6_push_pending_frames(struct sock *sk)
|
||||
struct udphdr *uh;
|
||||
struct udp_sock *up = udp_sk(sk);
|
||||
struct inet_sock *inet = inet_sk(sk);
|
||||
- struct flowi6 *fl6 = &inet->cork.fl.u.ip6;
|
||||
+ struct flowi6 *fl6;
|
||||
int err = 0;
|
||||
int is_udplite = IS_UDPLITE(sk);
|
||||
__wsum csum = 0;
|
||||
|
||||
+ if (up->pending == AF_INET)
|
||||
+ return udp_push_pending_frames(sk);
|
||||
+
|
||||
+ fl6 = &inet->cork.fl.u.ip6;
|
||||
+
|
||||
/* Grab the skbuff where UDP header space exists. */
|
||||
if ((skb = skb_peek(&sk->sk_write_queue)) == NULL)
|
||||
goto out;
|
||||
--
|
||||
1.7.11.7
|
|
@ -1,137 +0,0 @@
|
|||
From 1fcbda94eb3ababc95eff46548962ceb14de638e Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Date: Tue, 2 Jul 2013 08:04:05 +0200
|
||||
Subject: [PATCH 12/40] ipv6: ip6_append_data_mtu did not care about pmtudisc
|
||||
and frag_size
|
||||
|
||||
[ Upstream commit 75a493e60ac4bbe2e977e7129d6d8cbb0dd236be ]
|
||||
|
||||
If the socket had an IPV6_MTU value set, ip6_append_data_mtu lost track
|
||||
of this when appending the second frame on a corked socket. This results
|
||||
in the following splat:
|
||||
|
||||
[37598.993962] ------------[ cut here ]------------
|
||||
[37598.994008] kernel BUG at net/core/skbuff.c:2064!
|
||||
[37598.994008] invalid opcode: 0000 [#1] SMP
|
||||
[37598.994008] Modules linked in: tcp_lp uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_core videodev media vfat fat usb_storage fuse ebtable_nat xt_CHECKSUM bridge stp llc ipt_MASQUERADE nf_conntrack_netbios_ns nf_conntrack_broadcast ip6table_mangle ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 iptable_nat
|
||||
+nf_nat_ipv4 nf_nat iptable_mangle nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ebtable_filter ebtables ip6table_filter ip6_tables be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb4i cxgb4 cxgb3i cxgb3 mdio libcxgbi ib_iser rdma_cm ib_addr iw_cm ib_cm ib_sa ib_mad ib_core iscsi_tcp libiscsi_tcp libiscsi
|
||||
+scsi_transport_iscsi rfcomm bnep iTCO_wdt iTCO_vendor_support snd_hda_codec_conexant arc4 iwldvm mac80211 snd_hda_intel acpi_cpufreq mperf coretemp snd_hda_codec microcode cdc_wdm cdc_acm
|
||||
[37598.994008] snd_hwdep cdc_ether snd_seq snd_seq_device usbnet mii joydev btusb snd_pcm bluetooth i2c_i801 e1000e lpc_ich mfd_core ptp iwlwifi pps_core snd_page_alloc mei cfg80211 snd_timer thinkpad_acpi snd tpm_tis soundcore rfkill tpm tpm_bios vhost_net tun macvtap macvlan kvm_intel kvm uinput binfmt_misc
|
||||
+dm_crypt i915 i2c_algo_bit drm_kms_helper drm i2c_core wmi video
|
||||
[37598.994008] CPU 0
|
||||
[37598.994008] Pid: 27320, comm: t2 Not tainted 3.9.6-200.fc18.x86_64 #1 LENOVO 27744PG/27744PG
|
||||
[37598.994008] RIP: 0010:[<ffffffff815443a5>] [<ffffffff815443a5>] skb_copy_and_csum_bits+0x325/0x330
|
||||
[37598.994008] RSP: 0018:ffff88003670da18 EFLAGS: 00010202
|
||||
[37598.994008] RAX: ffff88018105c018 RBX: 0000000000000004 RCX: 00000000000006c0
|
||||
[37598.994008] RDX: ffff88018105a6c0 RSI: ffff88018105a000 RDI: ffff8801e1b0aa00
|
||||
[37598.994008] RBP: ffff88003670da78 R08: 0000000000000000 R09: ffff88018105c040
|
||||
[37598.994008] R10: ffff8801e1b0aa00 R11: 0000000000000000 R12: 000000000000fff8
|
||||
[37598.994008] R13: 00000000000004fc R14: 00000000ffff0504 R15: 0000000000000000
|
||||
[37598.994008] FS: 00007f28eea59740(0000) GS:ffff88023bc00000(0000) knlGS:0000000000000000
|
||||
[37598.994008] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
|
||||
[37598.994008] CR2: 0000003d935789e0 CR3: 00000000365cb000 CR4: 00000000000407f0
|
||||
[37598.994008] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
|
||||
[37598.994008] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
|
||||
[37598.994008] Process t2 (pid: 27320, threadinfo ffff88003670c000, task ffff88022c162ee0)
|
||||
[37598.994008] Stack:
|
||||
[37598.994008] ffff88022e098a00 ffff88020f973fc0 0000000000000008 00000000000004c8
|
||||
[37598.994008] ffff88020f973fc0 00000000000004c4 ffff88003670da78 ffff8801e1b0a200
|
||||
[37598.994008] 0000000000000018 00000000000004c8 ffff88020f973fc0 00000000000004c4
|
||||
[37598.994008] Call Trace:
|
||||
[37598.994008] [<ffffffff815fc21f>] ip6_append_data+0xccf/0xfe0
|
||||
[37598.994008] [<ffffffff8158d9f0>] ? ip_copy_metadata+0x1a0/0x1a0
|
||||
[37598.994008] [<ffffffff81661f66>] ? _raw_spin_lock_bh+0x16/0x40
|
||||
[37598.994008] [<ffffffff8161548d>] udpv6_sendmsg+0x1ed/0xc10
|
||||
[37598.994008] [<ffffffff812a2845>] ? sock_has_perm+0x75/0x90
|
||||
[37598.994008] [<ffffffff815c3693>] inet_sendmsg+0x63/0xb0
|
||||
[37598.994008] [<ffffffff812a2973>] ? selinux_socket_sendmsg+0x23/0x30
|
||||
[37598.994008] [<ffffffff8153a450>] sock_sendmsg+0xb0/0xe0
|
||||
[37598.994008] [<ffffffff810135d1>] ? __switch_to+0x181/0x4a0
|
||||
[37598.994008] [<ffffffff8153d97d>] sys_sendto+0x12d/0x180
|
||||
[37598.994008] [<ffffffff810dfb64>] ? __audit_syscall_entry+0x94/0xf0
|
||||
[37598.994008] [<ffffffff81020ed1>] ? syscall_trace_enter+0x231/0x240
|
||||
[37598.994008] [<ffffffff8166a7e7>] tracesys+0xdd/0xe2
|
||||
[37598.994008] Code: fe 07 00 00 48 c7 c7 04 28 a6 81 89 45 a0 4c 89 4d b8 44 89 5d a8 e8 1b ac b1 ff 44 8b 5d a8 4c 8b 4d b8 8b 45 a0 e9 cf fe ff ff <0f> 0b 66 0f 1f 84 00 00 00 00 00 66 66 66 66 90 55 48 89 e5 48
|
||||
[37598.994008] RIP [<ffffffff815443a5>] skb_copy_and_csum_bits+0x325/0x330
|
||||
[37598.994008] RSP <ffff88003670da18>
|
||||
[37599.007323] ---[ end trace d69f6a17f8ac8eee ]---
|
||||
|
||||
While there, also check if path mtu discovery is activated for this
|
||||
socket. The logic was adapted from ip6_append_data when first writing
|
||||
on the corked socket.
|
||||
|
||||
This bug was introduced with commit
|
||||
0c1833797a5a6ec23ea9261d979aa18078720b74 ("ipv6: fix incorrect ipsec
|
||||
fragment").
|
||||
|
||||
v2:
|
||||
a) Replace IPV6_PMTU_DISC_DO with IPV6_PMTUDISC_PROBE.
|
||||
b) Don't pass ipv6_pinfo to ip6_append_data_mtu (suggestion by Gao
|
||||
feng, thanks!).
|
||||
c) Change mtu to unsigned int, else we get a warning about
|
||||
non-matching types because of the min()-macro type-check.
|
||||
|
||||
Acked-by: Gao feng <gaofeng@cn.fujitsu.com>
|
||||
Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
|
||||
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/ipv6/ip6_output.c | 16 ++++++++++------
|
||||
1 file changed, 10 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
|
||||
index d5d20cd..6e3ddf8 100644
|
||||
--- a/net/ipv6/ip6_output.c
|
||||
+++ b/net/ipv6/ip6_output.c
|
||||
@@ -1098,11 +1098,12 @@ static inline struct ipv6_rt_hdr *ip6_rthdr_dup(struct ipv6_rt_hdr *src,
|
||||
return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL;
|
||||
}
|
||||
|
||||
-static void ip6_append_data_mtu(int *mtu,
|
||||
+static void ip6_append_data_mtu(unsigned int *mtu,
|
||||
int *maxfraglen,
|
||||
unsigned int fragheaderlen,
|
||||
struct sk_buff *skb,
|
||||
- struct rt6_info *rt)
|
||||
+ struct rt6_info *rt,
|
||||
+ bool pmtuprobe)
|
||||
{
|
||||
if (!(rt->dst.flags & DST_XFRM_TUNNEL)) {
|
||||
if (skb == NULL) {
|
||||
@@ -1114,7 +1115,9 @@ static void ip6_append_data_mtu(int *mtu,
|
||||
* this fragment is not first, the headers
|
||||
* space is regarded as data space.
|
||||
*/
|
||||
- *mtu = dst_mtu(rt->dst.path);
|
||||
+ *mtu = min(*mtu, pmtuprobe ?
|
||||
+ rt->dst.dev->mtu :
|
||||
+ dst_mtu(rt->dst.path));
|
||||
}
|
||||
*maxfraglen = ((*mtu - fragheaderlen) & ~7)
|
||||
+ fragheaderlen - sizeof(struct frag_hdr);
|
||||
@@ -1131,11 +1134,10 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
struct inet_cork *cork;
|
||||
struct sk_buff *skb, *skb_prev = NULL;
|
||||
- unsigned int maxfraglen, fragheaderlen;
|
||||
+ unsigned int maxfraglen, fragheaderlen, mtu;
|
||||
int exthdrlen;
|
||||
int dst_exthdrlen;
|
||||
int hh_len;
|
||||
- int mtu;
|
||||
int copy;
|
||||
int err;
|
||||
int offset = 0;
|
||||
@@ -1292,7 +1294,9 @@ alloc_new_skb:
|
||||
/* update mtu and maxfraglen if necessary */
|
||||
if (skb == NULL || skb_prev == NULL)
|
||||
ip6_append_data_mtu(&mtu, &maxfraglen,
|
||||
- fragheaderlen, skb, rt);
|
||||
+ fragheaderlen, skb, rt,
|
||||
+ np->pmtudisc ==
|
||||
+ IPV6_PMTUDISC_PROBE);
|
||||
|
||||
skb_prev = skb;
|
||||
|
||||
--
|
||||
1.7.11.7
|
|
@ -1,52 +0,0 @@
|
|||
From a963a37d384d71ad43b3e9e79d68d42fbe0901f3 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Dumazet <edumazet@google.com>
|
||||
Date: Wed, 26 Jun 2013 04:15:07 -0700
|
||||
Subject: [PATCH] ipv6: ip6_sk_dst_check() must not assume ipv6 dst
|
||||
|
||||
It's possible to use AF_INET6 sockets and to connect to an IPv4
|
||||
destination. After this, socket dst cache is a pointer to a rtable,
|
||||
not rt6_info.
|
||||
|
||||
ip6_sk_dst_check() should check the socket dst cache is IPv6, or else
|
||||
various corruptions/crashes can happen.
|
||||
|
||||
Dave Jones can reproduce immediate crash with
|
||||
trinity -q -l off -n -c sendmsg -c connect
|
||||
|
||||
With help from Hannes Frederic Sowa
|
||||
|
||||
Reported-by: Dave Jones <davej@redhat.com>
|
||||
Reported-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: Eric Dumazet <edumazet@google.com>
|
||||
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/ipv6/ip6_output.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
|
||||
index 95703ba..d5d20cd 100644
|
||||
--- a/net/ipv6/ip6_output.c
|
||||
+++ b/net/ipv6/ip6_output.c
|
||||
@@ -821,11 +821,17 @@ static struct dst_entry *ip6_sk_dst_check(struct sock *sk,
|
||||
const struct flowi6 *fl6)
|
||||
{
|
||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||
- struct rt6_info *rt = (struct rt6_info *)dst;
|
||||
+ struct rt6_info *rt;
|
||||
|
||||
if (!dst)
|
||||
goto out;
|
||||
|
||||
+ if (dst->ops->family != AF_INET6) {
|
||||
+ dst_release(dst);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ rt = (struct rt6_info *)dst;
|
||||
/* Yes, checking route validity in not connected
|
||||
* case is not very simple. Take into account,
|
||||
* that we do not support routing by source, TOS,
|
||||
--
|
||||
1.8.2.1
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
From 20ecf9fd3bebc4147e2996c08a75d6f0229b90df Mon Sep 17 00:00:00 2001
|
||||
From: Shuduo Sang <sangshuduo@gmail.com>
|
||||
Date: Sat, 30 Mar 2013 06:26:37 +0000
|
||||
Subject: iwlwifi: add new pci id for 6x35 series
|
||||
|
||||
some new thinkpad laptops use intel chip with new pci id need be added
|
||||
lspci -vnn output:
|
||||
Network controller [0280]: Intel Corporation Centrino Advanced-N 6235
|
||||
[8086:088f] (rev 24)
|
||||
Subsystem: Intel Corporation Device [8086:5260]
|
||||
|
||||
Signed-off-by: Shuduo Sang <sangshuduo@gmail.com>
|
||||
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
diff --git a/drivers/net/wireless/iwlwifi/pcie/drv.c b/drivers/net/wireless/iwlwifi/pcie/drv.c
|
||||
index 46ca91f..0016bb2 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/pcie/drv.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/pcie/drv.c
|
||||
@@ -241,6 +241,7 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
|
||||
{IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)},
|
||||
{IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)},
|
||||
{IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)},
|
||||
+ {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)},
|
||||
|
||||
/* 105 Series */
|
||||
{IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)},
|
||||
--
|
||||
cgit v0.9.2
|
|
@ -1,56 +0,0 @@
|
|||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
|
||||
When a queue is disabled, it frees all its entries. Later,
|
||||
the op_mode might still get notifications from the firmware
|
||||
that triggers to free entries in the tx queue. The transport
|
||||
should be prepared for these races and know to ignore
|
||||
reclaim calls on queues that have been disabled and whose
|
||||
entries have been freed.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/pcie/tx.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
index cb5c679..faaf77c 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
@@ -578,9 +578,12 @@ static void iwl_pcie_txq_unmap(struct iwl_trans *trans, int txq_id)
|
||||
|
||||
spin_lock_bh(&txq->lock);
|
||||
while (q->write_ptr != q->read_ptr) {
|
||||
+ IWL_DEBUG_TX_REPLY(trans, "Q %d Free %d\n",
|
||||
+ txq_id, q->read_ptr);
|
||||
iwl_pcie_txq_free_tfd(trans, txq);
|
||||
q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd);
|
||||
}
|
||||
+ txq->active = false;
|
||||
spin_unlock_bh(&txq->lock);
|
||||
}
|
||||
|
||||
@@ -929,6 +932,12 @@ void iwl_trans_pcie_reclaim(struct iwl_trans *trans, int txq_id, int ssn,
|
||||
|
||||
spin_lock_bh(&txq->lock);
|
||||
|
||||
+ if (!txq->active) {
|
||||
+ IWL_DEBUG_TX_QUEUES(trans, "Q %d inactive - ignoring idx %d\n",
|
||||
+ txq_id, ssn);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
if (txq->q.read_ptr == tfd_num)
|
||||
goto out;
|
||||
|
||||
@@ -1105,6 +1114,7 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, int fifo,
|
||||
(fifo << SCD_QUEUE_STTS_REG_POS_TXF) |
|
||||
(1 << SCD_QUEUE_STTS_REG_POS_WSL) |
|
||||
SCD_QUEUE_STTS_REG_MSK);
|
||||
+ trans_pcie->txq[txq_id].active = true;
|
||||
IWL_DEBUG_TX_QUEUES(trans, "Activate queue %d on FIFO %d WrPtr: %d\n",
|
||||
txq_id, fifo, ssn & 0xff);
|
||||
}
|
||||
--
|
||||
1.7.11.7
|
|
@ -1,35 +0,0 @@
|
|||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
|
||||
When the queue is unmapped while it was so loaded that
|
||||
mac80211's was stopped, we need to wake the queue after
|
||||
having freed all the packets in the queue.
|
||||
Not doing so can result in weird stuff like:
|
||||
|
||||
* run lots of traffic (mac80211's queue gets stopped)
|
||||
* RFKILL
|
||||
* de-assert RFKILL
|
||||
* no traffic
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/pcie/tx.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
index faaf77c..4e7b8d4 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
|
||||
@@ -585,6 +585,9 @@ static void iwl_pcie_txq_unmap(struct iwl_trans *trans, int txq_id)
|
||||
}
|
||||
txq->active = false;
|
||||
spin_unlock_bh(&txq->lock);
|
||||
+
|
||||
+ /* just in case - this queue may have been stopped */
|
||||
+ iwl_wake_queue(trans, txq);
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
1.7.11.7
|
117
kernel.spec
117
kernel.spec
|
@ -62,19 +62,19 @@ Summary: The Linux kernel
|
|||
# For non-released -rc kernels, this will be appended after the rcX and
|
||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||
#
|
||||
%global baserelease 201
|
||||
%global baserelease 100
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
|
||||
# which yields a base_sublevel of 0.
|
||||
%define base_sublevel 9
|
||||
%define base_sublevel 10
|
||||
|
||||
## If this is a released kernel ##
|
||||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 11
|
||||
%define stable_update 4
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -649,9 +649,6 @@ Patch100: taint-vbox.patch
|
|||
|
||||
Patch110: vmbugon-warnon.patch
|
||||
|
||||
Patch200: debug-bad-pte-dmi.patch
|
||||
Patch201: debug-bad-pte-modules.patch
|
||||
|
||||
Patch390: defaults-acpi-video.patch
|
||||
Patch391: acpi-video-dos.patch
|
||||
Patch394: acpi-debug-infinite-loop.patch
|
||||
|
@ -670,7 +667,7 @@ Patch530: silence-fbcon-logo.patch
|
|||
Patch800: crash-driver.patch
|
||||
|
||||
# secure boot
|
||||
Patch1000: secure-boot-20130506.patch
|
||||
Patch1000: devel-pekey-secure-boot-20130502.patch
|
||||
|
||||
# virt + ksm patches
|
||||
|
||||
|
@ -718,11 +715,9 @@ Patch20001: 0002-x86-EFI-Calculate-the-EFI-framebuffer-size-instead-o.patch
|
|||
Patch21000: arm-export-read_current_timer.patch
|
||||
|
||||
# ARM omap
|
||||
Patch21003: arm-omap-ehci-fix.patch
|
||||
|
||||
# ARM tegra
|
||||
Patch21005: arm-tegra-usb-no-reset-linux33.patch
|
||||
Patch21006: arm-tegra-fixclk.patch
|
||||
|
||||
#rhbz 754518
|
||||
Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
|
||||
|
@ -738,15 +733,6 @@ Patch22226: vt-Drop-K_OFF-for-VC_MUTE.patch
|
|||
#rhbz 892811
|
||||
Patch22247: ath9k_rx_dma_stop_check.patch
|
||||
|
||||
#rhbz 916544
|
||||
Patch22263: 0001-drivers-crypto-nx-fix-init-race-alignmasks-and-GCM-b.patch
|
||||
|
||||
#rhbz 859282
|
||||
Patch24113: VMX-x86-handle-host-TSC-calibration-failure.patch
|
||||
|
||||
#rhbz 921500
|
||||
Patch25001: i7300_edac_single_mode_fixup.patch
|
||||
|
||||
#rhbz 927469
|
||||
Patch25007: fix-child-thread-introspection.patch
|
||||
|
||||
|
@ -765,12 +751,6 @@ Patch25033: fanotify-info-leak-in-copy_event_to_user.patch
|
|||
#rhbz 969644
|
||||
Patch25046: KVM-x86-handle-idiv-overflow-at-kvm_write_tsc.patch
|
||||
|
||||
#rhbz 975995
|
||||
Patch25047: drivers-hwmon-nct6775.patch
|
||||
|
||||
Patch25050: iwlwifi-pcie-fix-race-in-queue-unmapping.patch
|
||||
Patch25051: iwlwifi-pcie-wake-the-queue-if-stopped-when-being-unmapped.patch
|
||||
|
||||
#rhbz 903741
|
||||
Patch25052: HID-input-return-ENODATA-if-reading-battery-attrs-fails.patch
|
||||
|
||||
|
@ -788,38 +768,21 @@ Patch25055: ath3k-dont-use-stack-memory-for-DMA.patch
|
|||
Patch25056: iwl3945-better-skb-management-in-rx-path.patch
|
||||
Patch25057: iwl4965-better-skb-management-in-rx-path.patch
|
||||
|
||||
#CVE-2013-2234 rhbz 980995 981007
|
||||
Patch25058: af_key-fix-info-leaks-in-notify-messages.patch
|
||||
|
||||
#CVE-2013-2232 rhbz 981552 981564
|
||||
Patch25060: ipv6-ip6_sk_dst_check-must-not-assume-ipv6-dst.patch
|
||||
|
||||
#rhbz 976789 980643
|
||||
Patch25062: vhost-net-fix-use-after-free-in-vhost_net_flush.patch
|
||||
|
||||
#rhbz 959721
|
||||
Patch25063: HID-kye-Add-report-fixup-for-Genius-Gila-Gaming-mouse.patch
|
||||
|
||||
#rhbz 885407
|
||||
Patch25064: iwlwifi-dvm-dont-send-BT_CONFIG-on-devices-wo-Bluetooth.patch
|
||||
|
||||
#rhbz 986538
|
||||
Patch25065: iwlwifi-add-new-pci-id-for-6x35-series.patch
|
||||
|
||||
#CVE-2013-4163 rhbz 987633 987639
|
||||
Patch25067: ipv6-ip6_append_data_mtu-did-not-care-about-pmtudisc-and_frag_size.patch
|
||||
|
||||
#CVE-2013-4162 rhbz 987627 987656
|
||||
Patch25068: ipv6-call-udp_push_pending_frames-when-uncorking-a-socket-with-AF_INET-pending-data.patch
|
||||
|
||||
Patch26000: cve-2013-4125.patch
|
||||
|
||||
#rhbz 979581
|
||||
Patch25069: iwlwifi-dvm-fix-calling-ieee80211_chswitch_done-with-NULL.patch
|
||||
|
||||
#rhbz 969473
|
||||
Patch25070: Input-elantech-fix-for-newer-hardware-versions-v7.patch
|
||||
|
||||
#rhbz 989093
|
||||
Patch25071: drm-i915-correctly-restore-fences-with-objects-attac.patch
|
||||
|
||||
#rhbz 977053
|
||||
Patch25073: iwl4965-reset-firmware-after-rfkill-off.patch
|
||||
|
||||
|
@ -1373,10 +1336,6 @@ ApplyPatch taint-vbox.patch
|
|||
|
||||
ApplyPatch vmbugon-warnon.patch
|
||||
|
||||
ApplyPatch debug-bad-pte-dmi.patch
|
||||
ApplyPatch debug-bad-pte-modules.patch
|
||||
|
||||
|
||||
# Architecture patches
|
||||
# x86(-64)
|
||||
|
||||
|
@ -1384,9 +1343,7 @@ ApplyPatch debug-bad-pte-modules.patch
|
|||
# ARM
|
||||
#
|
||||
ApplyPatch arm-export-read_current_timer.patch
|
||||
ApplyPatch arm-omap-ehci-fix.patch
|
||||
ApplyPatch arm-tegra-usb-no-reset-linux33.patch
|
||||
ApplyPatch arm-tegra-fixclk.patch
|
||||
|
||||
#
|
||||
# bugfixes to drivers and filesystems
|
||||
|
@ -1451,7 +1408,7 @@ ApplyPatch silence-fbcon-logo.patch
|
|||
ApplyPatch crash-driver.patch
|
||||
|
||||
# secure boot
|
||||
ApplyPatch secure-boot-20130506.patch
|
||||
ApplyPatch devel-pekey-secure-boot-20130502.patch
|
||||
|
||||
# Assorted Virt Fixes
|
||||
|
||||
|
@ -1504,15 +1461,6 @@ ApplyPatch vt-Drop-K_OFF-for-VC_MUTE.patch
|
|||
#rhbz 892811
|
||||
ApplyPatch ath9k_rx_dma_stop_check.patch
|
||||
|
||||
#rhbz 916544
|
||||
ApplyPatch 0001-drivers-crypto-nx-fix-init-race-alignmasks-and-GCM-b.patch
|
||||
|
||||
#rhbz 921500
|
||||
ApplyPatch i7300_edac_single_mode_fixup.patch
|
||||
|
||||
#rhbz 859282
|
||||
ApplyPatch VMX-x86-handle-host-TSC-calibration-failure.patch
|
||||
|
||||
#rhbz 927469
|
||||
ApplyPatch fix-child-thread-introspection.patch
|
||||
|
||||
|
@ -1531,12 +1479,6 @@ ApplyPatch fanotify-info-leak-in-copy_event_to_user.patch
|
|||
#rhbz 969644
|
||||
ApplyPatch KVM-x86-handle-idiv-overflow-at-kvm_write_tsc.patch
|
||||
|
||||
#rhbz 975995
|
||||
ApplyPatch drivers-hwmon-nct6775.patch
|
||||
|
||||
ApplyPatch iwlwifi-pcie-fix-race-in-queue-unmapping.patch
|
||||
ApplyPatch iwlwifi-pcie-wake-the-queue-if-stopped-when-being-unmapped.patch
|
||||
|
||||
#rhbz 903741
|
||||
ApplyPatch HID-input-return-ENODATA-if-reading-battery-attrs-fails.patch
|
||||
|
||||
|
@ -1554,38 +1496,21 @@ ApplyPatch ath3k-dont-use-stack-memory-for-DMA.patch
|
|||
ApplyPatch iwl3945-better-skb-management-in-rx-path.patch
|
||||
ApplyPatch iwl4965-better-skb-management-in-rx-path.patch
|
||||
|
||||
#CVE-2013-2234 rhbz 980995 981007
|
||||
ApplyPatch af_key-fix-info-leaks-in-notify-messages.patch
|
||||
|
||||
#CVE-2013-2232 rhbz 981552 981564
|
||||
ApplyPatch ipv6-ip6_sk_dst_check-must-not-assume-ipv6-dst.patch
|
||||
|
||||
#rhbz 976789 980643
|
||||
ApplyPatch vhost-net-fix-use-after-free-in-vhost_net_flush.patch
|
||||
|
||||
#rhbz 959721
|
||||
ApplyPatch HID-kye-Add-report-fixup-for-Genius-Gila-Gaming-mouse.patch
|
||||
|
||||
#rhbz 885407
|
||||
ApplyPatch iwlwifi-dvm-dont-send-BT_CONFIG-on-devices-wo-Bluetooth.patch
|
||||
|
||||
ApplyPatch cve-2013-4125.patch
|
||||
|
||||
#rhbz 986538
|
||||
ApplyPatch iwlwifi-add-new-pci-id-for-6x35-series.patch
|
||||
|
||||
#CVE-2013-4163 rhbz 987633 987639
|
||||
ApplyPatch ipv6-ip6_append_data_mtu-did-not-care-about-pmtudisc-and_frag_size.patch
|
||||
|
||||
#CVE-2013-4162 rhbz 987627 987656
|
||||
ApplyPatch ipv6-call-udp_push_pending_frames-when-uncorking-a-socket-with-AF_INET-pending-data.patch
|
||||
|
||||
#rhbz 979581
|
||||
ApplyPatch iwlwifi-dvm-fix-calling-ieee80211_chswitch_done-with-NULL.patch
|
||||
|
||||
#rhbz 969473
|
||||
ApplyPatch Input-elantech-fix-for-newer-hardware-versions-v7.patch
|
||||
|
||||
#rhbz 989093
|
||||
ApplyPatch drm-i915-correctly-restore-fences-with-objects-attac.patch
|
||||
|
||||
#rhbz 977053
|
||||
ApplyPatch iwl4965-reset-firmware-after-rfkill-off.patch
|
||||
|
||||
|
@ -2439,6 +2364,26 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Thu Aug 01 2013 Justin M. Forbes <jforbes@redhat.com>
|
||||
- Rebase to 3.10.4
|
||||
dropped:
|
||||
debug-bad-pte-dmi.patch
|
||||
debug-bad-pte-modules.patch
|
||||
VMX-x86-handle-host-TSC-calibration-failure.patch
|
||||
ipv6-ip6_sk_dst_check-must-not-assume-ipv6-dst.patch
|
||||
af_key-fix-info-leaks-in-notify-messages.patch
|
||||
arm-tegra-fixclk.patch
|
||||
vhost-net-fix-use-after-free-in-vhost_net_flush.patch
|
||||
0001-drivers-crypto-nx-fix-init-race-alignmasks-and-GCM-b.patch
|
||||
i7300_edac_single_mode_fixup.patch
|
||||
drivers-hwmon-nct6775.patch
|
||||
iwlwifi-pcie-fix-race-in-queue-unmapping.patch
|
||||
iwlwifi-pcie-wake-the-queue-if-stopped-when-being-unmapped.patch
|
||||
cve-2013-4125.patch
|
||||
iwlwifi-add-new-pci-id-for-6x35-series.patch
|
||||
ipv6-ip6_append_data_mtu-did-not-care-about-pmtudisc-and_frag_size.patch
|
||||
ipv6-call-udp_push_pending_frames-when-uncorking-a-socket-with-AF_INET-pending-data.patch
|
||||
|
||||
* Thu Aug 01 2013 Josh Boyer <jwboyer@redhat.com>
|
||||
- Fix mac80211 connection issues (rhbz 981445)
|
||||
- Fix firmware issues with iwl4965 and rfkill (rhbz 977053)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
4
sources
4
sources
|
@ -1,2 +1,2 @@
|
|||
4348c9b6b2eb3144d601e87c19d5d909 linux-3.9.tar.xz
|
||||
552146435b7ecc414bf8e3cd8bb6ac4a patch-3.9.11.xz
|
||||
4f25cd5bec5f8d5a7d935b3f2ccb8481 linux-3.10.tar.xz
|
||||
2e46ab138670b3171b52b849568cb42f patch-3.10.4.xz
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
From 0c9d7f6ea817d5328a09a78e901b16e1836ca4d7 Mon Sep 17 00:00:00 2001
|
||||
From: "Michael S. Tsirkin" <mst@redhat.com>
|
||||
Date: Tue, 25 Jun 2013 17:29:46 +0300
|
||||
Subject: [PATCH] vhost-net: fix use-after-free in vhost_net_flush
|
||||
|
||||
vhost_net_ubuf_put_and_wait has a confusing name:
|
||||
it will actually also free it's argument.
|
||||
Thus since commit 1280c27f8e29acf4af2da914e80ec27c3dbd5c01
|
||||
"vhost-net: flush outstanding DMAs on memory change"
|
||||
vhost_net_flush tries to use the argument after passing it
|
||||
to vhost_net_ubuf_put_and_wait, this results
|
||||
in use after free.
|
||||
To fix, don't free the argument in vhost_net_ubuf_put_and_wait,
|
||||
add an new API for callers that want to free ubufs.
|
||||
|
||||
Acked-by: Asias He <asias@redhat.com>
|
||||
Acked-by: Jason Wang <jasowang@redhat.com>
|
||||
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
---
|
||||
drivers/vhost/net.c | 4 ++--
|
||||
drivers/vhost/vhost.c | 5 +++++
|
||||
drivers/vhost/vhost.h | 1 +
|
||||
3 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
|
||||
index dfff647..d8d4f57 100644
|
||||
--- a/drivers/vhost/net.c
|
||||
+++ b/drivers/vhost/net.c
|
||||
@@ -857,7 +857,7 @@ static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd)
|
||||
mutex_unlock(&vq->mutex);
|
||||
|
||||
if (oldubufs) {
|
||||
- vhost_ubuf_put_and_wait(oldubufs);
|
||||
+ vhost_ubuf_put_wait_and_free(oldubufs);
|
||||
mutex_lock(&vq->mutex);
|
||||
vhost_zerocopy_signal_used(n, vq);
|
||||
mutex_unlock(&vq->mutex);
|
||||
@@ -875,7 +875,7 @@ err_used:
|
||||
rcu_assign_pointer(vq->private_data, oldsock);
|
||||
vhost_net_enable_vq(n, vq);
|
||||
if (ubufs)
|
||||
- vhost_ubuf_put_and_wait(ubufs);
|
||||
+ vhost_ubuf_put_wait_and_free(ubufs);
|
||||
err_ubufs:
|
||||
fput(sock->file);
|
||||
err_vq:
|
||||
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
|
||||
index 9759249..ff53c9e 100644
|
||||
--- a/drivers/vhost/vhost.c
|
||||
+++ b/drivers/vhost/vhost.c
|
||||
@@ -1581,5 +1581,10 @@ void vhost_ubuf_put_and_wait(struct vhost_ubuf_ref *ubufs)
|
||||
{
|
||||
kref_put(&ubufs->kref, vhost_zerocopy_done_signal);
|
||||
wait_event(ubufs->wait, !atomic_read(&ubufs->kref.refcount));
|
||||
+}
|
||||
+
|
||||
+void vhost_ubuf_put_wait_and_free(struct vhost_ubuf_ref *ubufs)
|
||||
+{
|
||||
+ vhost_ubuf_put_and_wait(ubufs);
|
||||
kfree(ubufs);
|
||||
}
|
||||
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
|
||||
index 17261e2..dd63b35 100644
|
||||
--- a/drivers/vhost/vhost.h
|
||||
+++ b/drivers/vhost/vhost.h
|
||||
@@ -63,6 +63,7 @@ struct vhost_ubuf_ref {
|
||||
struct vhost_ubuf_ref *vhost_ubuf_alloc(struct vhost_virtqueue *, bool zcopy);
|
||||
void vhost_ubuf_put(struct vhost_ubuf_ref *);
|
||||
void vhost_ubuf_put_and_wait(struct vhost_ubuf_ref *);
|
||||
+void vhost_ubuf_put_wait_and_free(struct vhost_ubuf_ref *);
|
||||
|
||||
struct ubuf_info;
|
||||
|
||||
--
|
||||
1.8.2.1
|
||||
|
Loading…
Reference in New Issue