Update to 3.13-rc4

Drop/refresh patches as appropriate.  Disable aufs for now.

Two of our longstanding patches finally went upstream.
CONFIG_MAGIC_SYSRQ_DEFAULT_MASK was renamed in the process so adjust
config accordingly.

svn path=/dists/trunk/linux/; revision=20909
This commit is contained in:
Ben Hutchings 2013-12-21 18:20:34 +00:00
parent e227ad0d78
commit 07c6e9355a
17 changed files with 94 additions and 483 deletions

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
linux (3.13~rc4-1~exp1) UNRELEASED; urgency=low
* New upstream release candidate
-- Ben Hutchings <ben@decadent.org.uk> Sat, 21 Dec 2013 17:41:34 +0000
linux (3.12.3-1~exp1) experimental; urgency=medium
* New upstream stable update:

View File

@ -4636,7 +4636,7 @@ CONFIG_DEBUG_FS=y
# CONFIG_DEBUG_SECTION_MISMATCH is not set
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set

View File

@ -1,30 +0,0 @@
From: Aurelien Jarno <aurelien@aurel32.net>
Date: Tue, 29 Oct 2013 11:55:17 +0100
Subject: [PATCH] UAPI: include <asm/byteorder.h> in linux/raid/md_p.h
Forwarded: http://comments.gmane.org/gmane.linux.kernel/1586604
linux/raid/md_p.h is using conditionals depending on endianess and fails
with an error if neither of __BIG_ENDIAN, __LITTLE_ENDIAN or
__BYTE_ORDER are defined, but it doesn't include any header which can
define these constants. This make this header unusable alone.
This patch adds a #include <asm/byteorder.h> at the beginning of this
header to make it usable alone. This is needed to compile klibc on MIPS.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
include/uapi/linux/raid/md_p.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/raid/md_p.h b/include/uapi/linux/raid/md_p.h
index fe1a540..f7cf7f3 100644
--- a/include/uapi/linux/raid/md_p.h
+++ b/include/uapi/linux/raid/md_p.h
@@ -16,6 +16,7 @@
#define _MD_P_H
#include <linux/types.h>
+#include <asm/byteorder.h>
/*
* RAID superblock.

View File

@ -140,7 +140,7 @@ upstream submission.
return -EIO;
--- a/drivers/bluetooth/bfusb.c
+++ b/drivers/bluetooth/bfusb.c
@@ -672,10 +672,8 @@ static int bfusb_probe(struct usb_interf
@@ -658,10 +658,8 @@ static int bfusb_probe(struct usb_interf
skb_queue_head_init(&data->pending_q);
skb_queue_head_init(&data->completed_q);
@ -154,7 +154,7 @@ upstream submission.
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
@@ -585,10 +585,8 @@ static int bt3c_open(bt3c_info_t *info)
@@ -569,10 +569,8 @@ static int bt3c_open(bt3c_info_t *info)
/* Load firmware */
err = request_firmware(&firmware, "BT3CPCC.bin", &info->p_dev->dev);
@ -168,7 +168,7 @@ upstream submission.
--- a/drivers/bluetooth/btmrvl_sdio.c
+++ b/drivers/bluetooth/btmrvl_sdio.c
@@ -288,8 +288,6 @@ static int btmrvl_sdio_download_helper(s
@@ -291,8 +291,6 @@ static int btmrvl_sdio_download_helper(s
ret = request_firmware(&fw_helper, card->helper,
&card->func->dev);
if ((ret < 0) || !fw_helper) {
@ -177,7 +177,7 @@ upstream submission.
ret = -ENOENT;
goto done;
}
@@ -388,8 +386,6 @@ static int btmrvl_sdio_download_fw_w_hel
@@ -391,8 +389,6 @@ static int btmrvl_sdio_download_fw_w_hel
ret = request_firmware(&fw_firmware, card->firmware,
&card->func->dev);
if ((ret < 0) || !fw_firmware) {
@ -261,7 +261,7 @@ upstream submission.
printk(KERN_ERR
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -814,10 +814,6 @@ int ni_init_microcode(struct radeon_devi
@@ -810,10 +810,6 @@ int ni_init_microcode(struct radeon_devi
out:
if (err) {
@ -274,7 +274,7 @@ upstream submission.
release_firmware(rdev->me_fw);
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -1035,10 +1035,7 @@ static int r100_cp_init_microcode(struct
@@ -1036,10 +1036,7 @@ static int r100_cp_init_microcode(struct
}
err = request_firmware(&rdev->me_fw, fw_name, rdev->dev);
@ -288,7 +288,7 @@ upstream submission.
rdev->me_fw->size, fw_name);
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2312,10 +2312,6 @@ int r600_init_microcode(struct radeon_de
@@ -2366,10 +2366,6 @@ int r600_init_microcode(struct radeon_de
out:
if (err) {
@ -371,7 +371,7 @@ upstream submission.
card->name, firmware->size);
--- a/drivers/media/tuners/tuner-xc2028.c
+++ b/drivers/media/tuners/tuner-xc2028.c
@@ -1349,7 +1349,6 @@ static void load_firmware_cb(const struc
@@ -1355,7 +1355,6 @@ static void load_firmware_cb(const struc
tuner_dbg("request_firmware_nowait(): %s\n", fw ? "OK" : "error");
if (!fw) {
@ -468,7 +468,7 @@ upstream submission.
p = kmalloc(fw->size, GFP_KERNEL);
--- a/drivers/media/dvb-frontends/af9013.c
+++ b/drivers/media/dvb-frontends/af9013.c
@@ -1363,16 +1363,8 @@ static int af9013_download_firmware(stru
@@ -1373,16 +1373,8 @@ static int af9013_download_firmware(stru
/* request the firmware, this will block and timeout */
ret = request_firmware(&fw, fw_file, state->i2c->dev.parent);
@ -488,7 +488,7 @@ upstream submission.
for (i = 0; i < fw->size; i++)
--- a/drivers/media/dvb-frontends/bcm3510.c
+++ b/drivers/media/dvb-frontends/bcm3510.c
@@ -622,10 +622,9 @@ static int bcm3510_download_firmware(str
@@ -635,10 +635,9 @@ static int bcm3510_download_firmware(str
int ret,i;
deb_info("requesting firmware\n");
@ -520,7 +520,7 @@ upstream submission.
* during loading */
--- a/drivers/media/dvb-frontends/drxd_hard.c
+++ b/drivers/media/dvb-frontends/drxd_hard.c
@@ -909,10 +909,8 @@ static int load_firmware(struct drxd_sta
@@ -905,10 +905,8 @@ static int load_firmware(struct drxd_sta
{
const struct firmware *fw;
@ -563,7 +563,7 @@ upstream submission.
if (ret)
--- a/drivers/media/dvb-frontends/nxt200x.c
+++ b/drivers/media/dvb-frontends/nxt200x.c
@@ -882,12 +882,8 @@ static int nxt2002_init(struct dvb_front
@@ -891,12 +891,8 @@ static int nxt2002_init(struct dvb_front
__func__, NXT2002_DEFAULT_FIRMWARE);
ret = request_firmware(&fw, NXT2002_DEFAULT_FIRMWARE,
state->i2c->dev.parent);
@ -577,7 +577,7 @@ upstream submission.
ret = nxt2002_load_firmware(fe, fw);
release_firmware(fw);
@@ -949,12 +945,8 @@ static int nxt2004_init(struct dvb_front
@@ -958,12 +954,8 @@ static int nxt2004_init(struct dvb_front
__func__, NXT2004_DEFAULT_FIRMWARE);
ret = request_firmware(&fw, NXT2004_DEFAULT_FIRMWARE,
state->i2c->dev.parent);
@ -685,7 +685,7 @@ upstream submission.
printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n",
--- a/drivers/media/dvb-frontends/tda10071.c
+++ b/drivers/media/dvb-frontends/tda10071.c
@@ -941,14 +941,8 @@ static int tda10071_init(struct dvb_fron
@@ -951,14 +951,8 @@ static int tda10071_init(struct dvb_fron
/* request the firmware, this will block and timeout */
ret = request_firmware(&fw, fw_file, priv->i2c->dev.parent);
@ -764,7 +764,7 @@ upstream submission.
--- a/drivers/media/pci/ttpci/av7110_hw.c
+++ b/drivers/media/pci/ttpci/av7110_hw.c
@@ -243,11 +243,8 @@ int av7110_bootarm(struct av7110 *av7110
@@ -251,11 +251,8 @@ int av7110_bootarm(struct av7110 *av7110
//saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
ret = request_firmware(&fw, fw_name, &dev->pci->dev);
@ -793,15 +793,15 @@ upstream submission.
b[0] = 0xaa;
--- a/drivers/media/usb/ttusb-dec/ttusb_dec.c
+++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c
@@ -1293,11 +1293,8 @@ static int ttusb_dec_boot_dsp(struct ttu
@@ -1302,11 +1302,8 @@ static int ttusb_dec_boot_dsp(struct ttu
dprintk("%s\n", __func__);
- if (request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev)) {
result = request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev);
- if (result) {
- printk(KERN_ERR "%s: Firmware (%s) unavailable.\n",
- __func__, dec->firmware_name);
+ if (request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev))
return 1;
+ if (result)
return result;
- }
firmware = fw_entry->data;
@ -960,7 +960,7 @@ upstream submission.
printk(KERN_ERR "ERROR: Firmware size mismatch "
--- a/drivers/media/pci/cx23885/cx23885-cards.c
+++ b/drivers/media/pci/cx23885/cx23885-cards.c
@@ -1797,11 +1797,7 @@ void cx23885_card_setup(struct cx23885_d
@@ -1905,11 +1905,7 @@ void cx23885_card_setup(struct cx23885_d
cinfo.rev, filename);
ret = request_firmware(&fw, filename, &dev->pci->dev);
@ -1177,7 +1177,7 @@ upstream submission.
remaining = typhoon_fw->size;
--- a/drivers/net/ethernet/adaptec/starfire.c
+++ b/drivers/net/ethernet/adaptec/starfire.c
@@ -1017,11 +1017,8 @@ static int netdev_open(struct net_device
@@ -1016,11 +1016,8 @@ static int netdev_open(struct net_device
#endif /* VLAN_SUPPORT */
retval = request_firmware(&fw_rx, FIRMWARE_RX, &np->pci_dev->dev);
@ -1190,7 +1190,7 @@ upstream submission.
if (fw_rx->size % 4) {
printk(KERN_ERR "starfire: bogus length %zu in \"%s\"\n",
fw_rx->size, FIRMWARE_RX);
@@ -1029,11 +1026,8 @@ static int netdev_open(struct net_device
@@ -1028,11 +1025,8 @@ static int netdev_open(struct net_device
goto out_rx;
}
retval = request_firmware(&fw_tx, FIRMWARE_TX, &np->pci_dev->dev);
@ -1242,7 +1242,7 @@ upstream submission.
if (bp->mips_firmware->size < sizeof(*mips_fw) ||
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -12455,11 +12455,8 @@ static int bnx2x_init_firmware(struct bn
@@ -12497,11 +12497,8 @@ static int bnx2x_init_firmware(struct bn
BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
@ -1257,7 +1257,7 @@ upstream submission.
if (rc) {
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -11193,11 +11193,8 @@ static int tg3_request_firmware(struct t
@@ -11205,11 +11205,8 @@ static int tg3_request_firmware(struct t
{
const struct tg3_firmware_hdr *fw_hdr;
@ -1326,21 +1326,6 @@ upstream submission.
ret = t3_check_tpsram(adap, tpsram->data, tpsram->size);
if (ret)
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -1098,11 +1098,8 @@ static int upgrade_fw(struct adapter *ad
}
ret = request_firmware(&fw, fw_file_name, dev);
- if (ret < 0) {
- dev_err(dev, "unable to load firmware image %s, error %d\n",
- fw_file_name, ret);
+ if (ret)
return ret;
- }
hdr = (const struct fw_hdr *)fw->data;
vers = ntohl(hdr->fw_ver);
--- a/drivers/net/ethernet/intel/e100.c
+++ b/drivers/net/ethernet/intel/e100.c
@@ -1290,9 +1290,6 @@ static const struct firmware *e100_reque
@ -1545,30 +1530,18 @@ upstream submission.
hdr = (struct b43legacy_fw_header *)((*fw)->data);
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -3059,10 +3059,8 @@ static int brcmf_sdbrcm_download_code_fi
@@ -571,10 +571,8 @@ static const struct firmware *brcmf_sdbr
ret = request_firmware(&bus->firmware, BRCMF_SDIO_FW_NAME,
&bus->sdiodev->func[2]->dev);
- if (ret) {
- brcmf_err("Fail to request firmware %d\n", ret);
+ if (ret)
return ret;
- }
bus->fw_ptr = 0;
memptr = memblock = kmalloc(MEMBLOCK + BRCMF_SDALIGN, GFP_ATOMIC);
@@ -3181,10 +3179,8 @@ static int brcmf_sdbrcm_download_nvram(s
ret = request_firmware(&bus->firmware, BRCMF_SDIO_NV_NAME,
&bus->sdiodev->func[2]->dev);
- if (ret) {
- brcmf_err("Fail to request nvram %d\n", ret);
+ if (ret)
return ret;
found:
err = request_firmware(&fw, name, &bus->sdiodev->func[2]->dev);
- if ((err) || (!fw)) {
- brcmf_err("fail to request firmware %s (%d)\n", name, err);
+ if (err)
return NULL;
- }
ret = brcmf_process_nvram_vars(bus);
return fw;
}
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
@@ -379,19 +379,13 @@ static int brcms_request_fw(struct brcms
@ -1635,7 +1608,7 @@ upstream submission.
else
--- a/drivers/net/wireless/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
@@ -852,13 +852,8 @@ static void iwl_req_fw_callback(const st
@@ -889,13 +889,8 @@ static void iwl_req_fw_callback(const st
memset(&pieces, 0, sizeof(pieces));
@ -1663,9 +1636,9 @@ upstream submission.
}
--- a/drivers/net/wireless/mwifiex/main.c
+++ b/drivers/net/wireless/mwifiex/main.c
@@ -417,11 +417,8 @@ static void mwifiex_fw_dpc(const struct
struct semaphore *sem = adapter->card_sem;
@@ -420,11 +420,8 @@ static void mwifiex_fw_dpc(const struct
bool init_failed = false;
struct wireless_dev *wdev;
- if (!firmware) {
- dev_err(adapter->dev,
@ -1878,7 +1851,7 @@ upstream submission.
wl1251_error("nvs size is not multiple of 32 bits: %zu",
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -740,10 +740,8 @@ static int wl12xx_fetch_firmware(struct
@@ -753,10 +753,8 @@ static int wl12xx_fetch_firmware(struct
ret = request_firmware(&fw, fw_name, wl->dev);
@ -1987,7 +1960,7 @@ upstream submission.
if (err) {
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -1811,7 +1811,6 @@ bfad_read_firmware(struct pci_dev *pdev,
@@ -1781,7 +1781,6 @@ bfad_read_firmware(struct pci_dev *pdev,
const struct firmware *fw;
if (request_firmware(&fw, fw_name, &pdev->dev)) {
@ -2011,7 +1984,7 @@ upstream submission.
--- a/drivers/scsi/pm8001/pm8001_ctl.c
+++ b/drivers/scsi/pm8001/pm8001_ctl.c
@@ -542,9 +542,6 @@ static ssize_t pm8001_store_update_fw(st
@@ -690,9 +690,6 @@ static ssize_t pm8001_store_update_fw(st
pm8001_ha->dev);
if (err) {
@ -2069,7 +2042,7 @@ upstream submission.
if (qla82xx_validate_firmware_blob(vha,
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -5316,8 +5316,6 @@ qla2x00_request_firmware(scsi_qla_host_t
@@ -5311,8 +5311,6 @@ qla2x00_request_firmware(scsi_qla_host_t
goto out;
if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
@ -2216,7 +2189,7 @@ upstream submission.
if (0 != ret) {
--- a/drivers/staging/media/lirc/lirc_zilog.c
+++ b/drivers/staging/media/lirc/lirc_zilog.c
@@ -764,8 +764,6 @@ static int fw_load(struct IR_tx *tx)
@@ -767,8 +767,6 @@ static int fw_load(struct IR_tx *tx)
/* Request codeset data file */
ret = request_firmware(&fw_entry, "haup-ir-blaster.bin", tx->ir->l.dev);
if (ret != 0) {
@ -2227,7 +2200,7 @@ upstream submission.
}
--- a/drivers/staging/rtl8192u/r819xU_firmware.c
+++ b/drivers/staging/rtl8192u/r819xU_firmware.c
@@ -284,10 +284,8 @@ bool init_firmware(struct net_device *de
@@ -280,10 +280,8 @@ bool init_firmware(struct net_device *de
*/
if (rst_opt == OPT_SYSTEM_RESET) {
rc = request_firmware(&fw_entry, fw_name[init_step],&priv->udev->dev);
@ -2251,7 +2224,7 @@ upstream submission.
usb_set_intfdata(pusb_intf, NULL);
--- a/drivers/staging/slicoss/slicoss.c
+++ b/drivers/staging/slicoss/slicoss.c
@@ -424,11 +424,8 @@ static int slic_card_download_gbrcv(stru
@@ -425,11 +425,8 @@ static int slic_card_download_gbrcv(stru
}
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@ -2264,7 +2237,7 @@ upstream submission.
rcvucodelen = *(u32 *)(fw->data + index);
index += 4;
@@ -502,11 +499,8 @@ static int slic_card_download(struct ada
@@ -503,11 +500,8 @@ static int slic_card_download(struct ada
return -ENOENT;
}
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@ -2352,7 +2325,7 @@ upstream submission.
}
--- a/drivers/tty/serial/ucc_uart.c
+++ b/drivers/tty/serial/ucc_uart.c
@@ -1176,10 +1176,8 @@ static void uart_firmware_cont(const str
@@ -1178,10 +1178,8 @@ static void uart_firmware_cont(const str
struct device *dev = context;
int ret;
@ -2541,7 +2514,7 @@ upstream submission.
}
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -1499,10 +1499,8 @@ static int ti_download_firmware(struct t
@@ -1500,10 +1500,8 @@ static int ti_download_firmware(struct t
}
status = request_firmware(&fw_p, buf, &dev->dev);
}
@ -2597,7 +2570,7 @@ upstream submission.
release_firmware(fw);
--- a/sound/isa/msnd/msnd_pinnacle.c
+++ b/sound/isa/msnd/msnd_pinnacle.c
@@ -387,15 +387,11 @@ static int upload_dsp_code(struct snd_ca
@@ -389,15 +389,11 @@ static int upload_dsp_code(struct snd_ca
outb(HPBLKSEL_0, chip->io + HP_BLKS);
err = request_firmware(&init_fw, INITCODEFILE, card->dev);
@ -2711,7 +2684,7 @@ upstream submission.
}
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -3771,11 +3771,8 @@ static void azx_firmware_cb(const struct
@@ -3779,11 +3779,8 @@ static void azx_firmware_cb(const struct
struct azx *chip = card->private_data;
struct pci_dev *pci = chip->pci;
@ -2780,7 +2753,7 @@ upstream submission.
if (err) {
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -5150,10 +5150,8 @@ static int hdsp_request_fw_loader(struct
@@ -5151,10 +5151,8 @@ static int hdsp_request_fw_loader(struct
return -EINVAL;
}
@ -2794,7 +2767,7 @@ upstream submission.
(int)fw->size, HDSP_FIRMWARE_SIZE);
--- a/sound/soc/codecs/wm2000.c
+++ b/sound/soc/codecs/wm2000.c
@@ -888,10 +888,8 @@ static int wm2000_i2c_probe(struct i2c_c
@@ -893,10 +893,8 @@ static int wm2000_i2c_probe(struct i2c_c
}
ret = request_firmware(&fw, filename, &i2c->dev);

View File

@ -1,35 +0,0 @@
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date: Tue, 5 Nov 2013 02:41:27 +0100
Subject: ipv6: fix headroom calculation in udp6_ufo_fragment
Origin: https://git.kernel.org/linus/0e033e04c2678dbbe74a46b23fffb7bb918c288e
Commit 1e2bd517c108816220f262d7954b697af03b5f9c ("udp6: Fix udp
fragmentation for tunnel traffic.") changed the calculation if
there is enough space to include a fragment header in the skb from a
skb->mac_header dervived one to skb_headroom. Because we already peeled
off the skb to transport_header this is wrong. Change this back to check
if we have enough room before the mac_header.
This fixes a panic Saran Neti reported. He used the tbf scheduler which
skb_gso_segments the skb. The offsets get negative and we panic in memcpy
because the skb was erroneously not expanded at the head.
Reported-by: Saran Neti <Saran.Neti@telus.com>
Cc: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
net/ipv6/udp_offload.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/ipv6/udp_offload.c
+++ b/net/ipv6/udp_offload.c
@@ -88,7 +88,7 @@ static struct sk_buff *udp6_ufo_fragment
/* Check if there is enough headroom to insert fragment header. */
tnl_hlen = skb_tnl_header_len(skb);
- if (skb_headroom(skb) < (tnl_hlen + frag_hdr_sz)) {
+ if (skb->mac_header < (tnl_hlen + frag_hdr_sz)) {
if (gso_pskb_expand_head(skb, tnl_hlen + frag_hdr_sz))
goto out;
}

View File

@ -1,47 +0,0 @@
From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Wed, 27 Nov 2013 15:40:21 +0300
Subject: net: clamp ->msg_namelen instead of returning an error
Origin: https://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit?id=db31c55a6fb245fdbb752a2ca4aefec89afabb06
If kmsg->msg_namelen > sizeof(struct sockaddr_storage) then in the
original code that would lead to memory corruption in the kernel if you
had audit configured. If you didn't have audit configured it was
harmless.
There are some programs such as beta versions of Ruby which use too
large of a buffer and returning an error code breaks them. We should
clamp the ->msg_namelen value instead.
Fixes: 1661bf364ae9 ("net: heap overflow in __audit_sockaddr()")
Reported-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Tested-by: Eric Wong <normalperson@yhbt.net>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
net/compat.c | 2 +-
net/socket.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- a/net/compat.c
+++ b/net/compat.c
@@ -72,7 +72,7 @@ int get_compat_msghdr(struct msghdr *kms
__get_user(kmsg->msg_flags, &umsg->msg_flags))
return -EFAULT;
if (kmsg->msg_namelen > sizeof(struct sockaddr_storage))
- return -EINVAL;
+ kmsg->msg_namelen = sizeof(struct sockaddr_storage);
kmsg->msg_name = compat_ptr(tmp1);
kmsg->msg_iov = compat_ptr(tmp2);
kmsg->msg_control = compat_ptr(tmp3);
--- a/net/socket.c
+++ b/net/socket.c
@@ -1970,7 +1970,7 @@ static int copy_msghdr_from_user(struct
if (copy_from_user(kmsg, umsg, sizeof(struct msghdr)))
return -EFAULT;
if (kmsg->msg_namelen > sizeof(struct sockaddr_storage))
- return -EINVAL;
+ kmsg->msg_namelen = sizeof(struct sockaddr_storage);
return 0;
}

View File

@ -28,16 +28,17 @@ missing, except for the pre-R600 KMS case.
---
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -36,6 +36,8 @@
#include <drm/drm_pciids.h>
#include <linux/console.h>
#include <linux/module.h>
@@ -39,6 +39,9 @@
#include <linux/pm_runtime.h>
#include <linux/vga_switcheroo.h>
#include "drm_crtc_helper.h"
+#include <linux/namei.h>
+#include <linux/path.h>
+
/*
@@ -301,6 +303,37 @@ static struct drm_driver driver_old = {
* KMS wrapper.
* - 2.0.0 - initial interface
@@ -320,6 +323,37 @@ static struct drm_driver driver_old = {
static struct drm_driver kms_driver;
@ -75,7 +76,7 @@ missing, except for the pre-R600 KMS case.
static int radeon_kick_out_firmware_fb(struct pci_dev *pdev)
{
struct apertures_struct *ap;
@@ -327,6 +360,12 @@ static int radeon_pci_probe(struct pci_d
@@ -346,6 +380,12 @@ static int radeon_pci_probe(struct pci_d
{
int ret;
@ -88,7 +89,7 @@ missing, except for the pre-R600 KMS case.
/* Get rid of things like offb */
ret = radeon_kick_out_firmware_fb(pdev);
if (ret)
@@ -435,6 +474,7 @@ static struct pci_driver *pdriver;
@@ -577,6 +617,7 @@ static struct pci_driver *pdriver;
static struct pci_driver radeon_pci_driver = {
.name = DRIVER_NAME,
.id_table = pciidlist,

View File

@ -1,36 +0,0 @@
Subject: rds: prevent BUG_ON triggered on congestion update to loopback
From: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
Date: Mon, 25 Nov 2013 09:47:34 +0300
Origin: http://patchwork.ozlabs.org/patch/293827/
After congestion update on a local connection, when rds_ib_xmit returns
less bytes than that are there in the message, rds_send_xmit calls
back rds_ib_xmit with an offset that causes BUG_ON(off & RDS_FRAG_SIZE)
to trigger.
Reported-by: Josh Hunt <joshhunt00@gmail.com>
Tested-by: Honggang Li <honli@redhat.com>
Acked-by: Bang Nguyen <bang.nguyen@oracle.com>
Signed-off-by: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
net/rds/ib_send.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/net/rds/ib_send.c b/net/rds/ib_send.c
index e590949..37be6e2 100644
--- a/net/rds/ib_send.c
+++ b/net/rds/ib_send.c
@@ -552,9 +552,8 @@ int rds_ib_xmit(struct rds_connection *conn, struct rds_message *rm,
&& rm->m_inc.i_hdr.h_flags & RDS_FLAG_CONG_BITMAP) {
rds_cong_map_updated(conn->c_fcong, ~(u64) 0);
scat = &rm->data.op_sg[sg];
- ret = sizeof(struct rds_header) + RDS_CONG_MAP_BYTES;
- ret = min_t(int, ret, scat->length - conn->c_xmit_data_off);
- return ret;
+ ret = max_t(int, RDS_CONG_MAP_BYTES, scat->length);
+ return sizeof(struct rds_header) + ret;
}
/* FIXME we may overallocate here */

View File

@ -1,85 +0,0 @@
From: Eric Dumazet <edumazet@google.com>
Date: Wed, 13 Nov 2013 06:32:54 -0800
Subject: tcp: tsq: restore minimal amount of queueing
Origin: https://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit?id=98e09386c0ef4dfd48af7ba60ff908f0d525cdee
After commit c9eeec26e32e ("tcp: TSQ can use a dynamic limit"), several
users reported throughput regressions, notably on mvneta and wifi
adapters.
802.11 AMPDU requires a fair amount of queueing to be effective.
This patch partially reverts the change done in tcp_write_xmit()
so that the minimal amount is sysctl_tcp_limit_output_bytes.
It also remove the use of this sysctl while building skb stored
in write queue, as TSO autosizing does the right thing anyway.
Users with well behaving NICS and correct qdisc (like sch_fq),
can then lower the default sysctl_tcp_limit_output_bytes value from
128KB to 8KB.
This new usage of sysctl_tcp_limit_output_bytes permits each driver
authors to check how their driver performs when/if the value is set
to a minimum of 4KB.
Normally, line rate for a single TCP flow should be possible,
but some drivers rely on timers to perform TX completion and
too long TX completion delays prevent reaching full throughput.
Fixes: c9eeec26e32e ("tcp: TSQ can use a dynamic limit")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Sujith Manoharan <sujith@msujith.org>
Reported-by: Arnaud Ebalard <arno@natisbad.org>
Tested-by: Sujith Manoharan <sujith@msujith.org>
Cc: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
Documentation/networking/ip-sysctl.txt | 3 ---
net/ipv4/tcp.c | 6 ------
net/ipv4/tcp_output.c | 6 +++++-
3 files changed, 5 insertions(+), 10 deletions(-)
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -588,9 +588,6 @@ tcp_limit_output_bytes - INTEGER
typical pfifo_fast qdiscs.
tcp_limit_output_bytes limits the number of bytes on qdisc
or device to reduce artificial RTT/cwnd and reduce bufferbloat.
- Note: For GSO/TSO enabled flows, we try to have at least two
- packets in flight. Reducing tcp_limit_output_bytes might also
- reduce the size of individual GSO packet (64KB being the max)
Default: 131072
tcp_challenge_ack_limit - INTEGER
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -806,12 +806,6 @@ static unsigned int tcp_xmit_size_goal(s
xmit_size_goal = min_t(u32, gso_size,
sk->sk_gso_max_size - 1 - hlen);
- /* TSQ : try to have at least two segments in flight
- * (one in NIC TX ring, another in Qdisc)
- */
- xmit_size_goal = min_t(u32, xmit_size_goal,
- sysctl_tcp_limit_output_bytes >> 1);
-
xmit_size_goal = tcp_bound_to_half_wnd(tp, xmit_size_goal);
/* We try hard to avoid divides here */
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1875,8 +1875,12 @@ static bool tcp_write_xmit(struct sock *
* - better RTT estimation and ACK scheduling
* - faster recovery
* - high rates
+ * Alas, some drivers / subsystems require a fair amount
+ * of queued bytes to ensure line rate.
+ * One example is wifi aggregation (802.11 AMPDU)
*/
- limit = max(skb->truesize, sk->sk_pacing_rate >> 10);
+ limit = max_t(unsigned int, sysctl_tcp_limit_output_bytes,
+ sk->sk_pacing_rate >> 10);
if (atomic_read(&sk->sk_wmem_alloc) > limit) {
set_bit(TSQ_THROTTLED, &tp->tsq_flags);

View File

@ -1,46 +0,0 @@
From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Sat, 23 Nov 2013 15:59:42 +1100
Subject: xfs: underflow bug in xfs_attrlist_by_handle()
Origin: http://www.ozlabs.org/~akpm/mmotm/broken-out/xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
If we allocate less than sizeof(struct attrlist) then we end up corrupting
memory or doing a ZERO_PTR_SIZE dereference.
This can only be triggered with CAP_SYS_ADMIN.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reported-by: Nico Golde <nico@ngolde.de>
Reported-by: Fabian Yamaguchi <fabs@goesec.de>
Acked-by: Ben Myers <bpm@sgi.com>
Cc: Alex Elder <elder@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/xfs/xfs_ioctl.c | 3 ++-
fs/xfs/xfs_ioctl32.c | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -443,7 +443,8 @@ xfs_attrlist_by_handle(
return -XFS_ERROR(EPERM);
if (copy_from_user(&al_hreq, arg, sizeof(xfs_fsop_attrlist_handlereq_t)))
return -XFS_ERROR(EFAULT);
- if (al_hreq.buflen > XATTR_LIST_MAX)
+ if (al_hreq.buflen < sizeof(struct attrlist) ||
+ al_hreq.buflen > XATTR_LIST_MAX)
return -XFS_ERROR(EINVAL);
/*
--- a/fs/xfs/xfs_ioctl32.c
+++ b/fs/xfs/xfs_ioctl32.c
@@ -357,7 +357,8 @@ xfs_compat_attrlist_by_handle(
if (copy_from_user(&al_hreq, arg,
sizeof(compat_xfs_fsop_attrlist_handlereq_t)))
return -XFS_ERROR(EFAULT);
- if (al_hreq.buflen > XATTR_LIST_MAX)
+ if (al_hreq.buflen < sizeof(struct attrlist) ||
+ al_hreq.buflen > XATTR_LIST_MAX)
return -XFS_ERROR(EINVAL);
/*

View File

@ -22,9 +22,9 @@ Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org>
config USB_MUSB_DAVINCI
tristate "DaVinci"
depends on ARCH_DAVINCI_DMx
@@ -92,8 +89,6 @@ config USB_MUSB_BLACKFIN
@@ -93,8 +90,6 @@ config USB_MUSB_BLACKFIN
config USB_MUSB_UX500
tristate "U8500 and U5500"
tristate "Ux500 platforms"
-endchoice
-

View File

@ -8,8 +8,8 @@ Origin: https://git.kernel.org/cgit/linux/kernel/git/geert/linux-m68k.git/commit
bool "SMC (SMSC)/Western Digital devices"
default y
depends on ARM || ISA || MAC || ARM64 || MIPS || M32R || SUPERH || \
- BLACKFIN || MN10300 || COLDFIRE || PCI || PCMCIA
+ BLACKFIN || MN10300 || COLDFIRE || PCI || PCMCIA || \
- BLACKFIN || MN10300 || COLDFIRE || XTENSA || PCI || PCMCIA
+ BLACKFIN || MN10300 || COLDFIRE || XTENSA || PCI || PCMCIA || \
+ ATARI_ETHERNAT
---help---
If you have a network (Ethernet) card belonging to this class, say Y
@ -18,8 +18,8 @@ Origin: https://git.kernel.org/cgit/linux/kernel/git/geert/linux-m68k.git/commit
select CRC32
select MII
depends on (ARM || M32R || SUPERH || MIPS || BLACKFIN || \
- MN10300 || COLDFIRE || ARM64)
+ MN10300 || COLDFIRE || ARM64 || ATARI_ETHERNAT)
- MN10300 || COLDFIRE || ARM64 || XTENSA)
+ MN10300 || COLDFIRE || ARM64 || XTENSA || ATARI_ETHERNAT)
---help---
This is a driver for SMC's 91x series of Ethernet chipsets,
including the SMC91C94 and the SMC91C111. Say Y if you want it

View File

@ -1,46 +0,0 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Sun, 1 Sep 2013 17:24:16 +0100
Subject: hvc_vio: Do not override preferred console set by kernel parameter
Bug-Debian: http://bugs.debian.org/492703
Origin: https://git.kernel.org/?p=linux/kernel/git/gregkh/tty.git;a=commit;h=1926d0aeecf0280c67bf7464b2d68fe4e92c566b
The original version of this was done by Bastian Blank, who wrote:
> The problem is the following:
> - Architecture specific code sets preferred console to something bogus.
> - Command line handling tries to set preferred console but is overruled
> by the old setting.
>
> The udbg0 console is a boot console and independant.
References: http://bugs.debian.org/492703
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/tty/hvc/hvc_vio.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/hvc/hvc_vio.c b/drivers/tty/hvc/hvc_vio.c
index c791b18..b594abf 100644
--- a/drivers/tty/hvc/hvc_vio.c
+++ b/drivers/tty/hvc/hvc_vio.c
@@ -48,6 +48,7 @@
#include <asm/prom.h>
#include <asm/hvsi.h>
#include <asm/udbg.h>
+#include <asm/machdep.h>
#include "hvc_console.h"
@@ -457,7 +458,9 @@ void __init hvc_vio_init_early(void)
if (hvterm_priv0.proto == HV_PROTOCOL_HVSI)
goto out;
#endif
- add_preferred_console("hvc", 0, NULL);
+ /* Check whether the user has requested a different console. */
+ if (!strstr(cmd_line, "console="))
+ add_preferred_console("hvc", 0, NULL);
hvc_instantiate(0, 0, ops);
out:
of_node_put(stdout_node);

View File

@ -13,9 +13,9 @@ once it's ready to speak MBIM.
---
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -55,11 +55,7 @@
#define DRIVER_VERSION "14-Mar-2012"
@@ -53,11 +53,7 @@
#include <linux/usb/cdc.h>
#include <linux/usb/cdc_ncm.h>
-#if IS_ENABLED(CONFIG_USB_NET_CDC_MBIM)
-static bool prefer_mbim = true;

View File

@ -19,7 +19,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -458,8 +458,8 @@ bytes respectively. Such letter suffixes
@@ -513,8 +513,8 @@ bytes respectively. Such letter suffixes
ccw_timeout_log [S390]
See Documentation/s390/CommonIO for details.
@ -32,7 +32,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
checkreqprot [SELINUX] Set initial checkreqprot flag value.
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -930,6 +930,14 @@ config MEMCG
@@ -934,6 +934,14 @@ config MEMCG
This config option also selects MM_OWNER config option, which
could in turn add some fork/exit overhead.
@ -49,7 +49,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
depends on MEMCG && SWAP
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -5293,7 +5293,7 @@ static void cgroup_release_agent(struct
@@ -5442,7 +5442,7 @@ static void cgroup_release_agent(struct
mutex_unlock(&cgroup_mutex);
}
@ -58,7 +58,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
{
struct cgroup_subsys *ss;
char *token;
@@ -5309,17 +5309,29 @@ static int __init cgroup_disable(char *s
@@ -5458,17 +5458,29 @@ static int __init cgroup_disable(char *s
*/
for_each_builtin_subsys(ss, i) {
if (!strcmp(token, ss->name)) {
@ -88,12 +88,12 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+}
+__setup("cgroup_enable=", cgroup_enable);
+
/*
* Functons for CSS ID.
*/
/**
* css_from_dir - get corresponding css from the dentry of a cgroup dir
* @dentry: directory dentry of interest
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -6951,6 +6951,9 @@ static void mem_cgroup_bind(struct cgrou
@@ -7002,6 +7002,9 @@ static void mem_cgroup_bind(struct cgrou
struct cgroup_subsys mem_cgroup_subsys = {
.name = "memory",

View File

@ -1,36 +0,0 @@
From: Bastian Blank <waldi@debian.org>
Subject: Allow access to sensitive SysRq keys to be restricted by default
Date: Sun, 14 Feb 2010 16:11:35 +0100
Forwarded: no
Add a Kconfig variable to set the initial value of the Magic
SysRq mask (sysctl: kernel.sysrq).
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -18,7 +18,7 @@
#include <linux/types.h>
/* Enable/disable SYSRQ support by default (0==no, 1==yes). */
-#define SYSRQ_DEFAULT_ENABLE 1
+#define SYSRQ_DEFAULT_ENABLE CONFIG_MAGIC_SYSRQ_DEFAULT_MASK
/* Possible values of bitmask for enabling sysrq functions */
/* 0x0001 is reserved for enable everything */
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -312,6 +312,14 @@ config MAGIC_SYSRQ
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
unless you really know what this hack does.
+config MAGIC_SYSRQ_DEFAULT_MASK
+ hex "Default mask for Magic SysRq keys on the console"
+ depends on MAGIC_SYSRQ
+ default 1
+ help
+ Specifies the default mask for the allowed SysRq keys. This can be
+ used to disable several sensitive keys by default.
+
config DEBUG_KERNEL
bool "Kernel debugging"
help

26
debian/patches/series vendored
View File

@ -17,18 +17,17 @@ bugfix/all/firmware_class-log-every-success-and-failure.patch
bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
# Patches and source files from aufs3 repository, imported with
# debian/patches/features/all/aufs3/gen-patch.
features/all/aufs3/aufs3-kbuild.patch
features/all/aufs3/aufs3-base.patch
features/all/aufs3/aufs3-mmap.patch
features/all/aufs3/aufs3-standalone.patch
features/all/aufs3/aufs3-add.patch
# Debian-specific changes
debian/aufs3-mark-as-staging.patch
# # Patches and source files from aufs3 repository, imported with
# # debian/patches/features/all/aufs3/gen-patch.
# features/all/aufs3/aufs3-kbuild.patch
# features/all/aufs3/aufs3-base.patch
# features/all/aufs3/aufs3-mmap.patch
# features/all/aufs3/aufs3-standalone.patch
# features/all/aufs3/aufs3-add.patch
# # Debian-specific changes
# debian/aufs3-mark-as-staging.patch
# Change some defaults for security reasons
features/all/sysrq-mask.patch
debian/af_802154-Disable-auto-loading-as-mitigation-against.patch
debian/rds-Disable-auto-loading-as-mitigation-against-local.patch
debian/decnet-Disable-auto-loading-as-mitigation-against-lo.patch
@ -58,7 +57,6 @@ bugfix/arm/omap-musb-choice.patch
# Miscellaneous bug fixes
bugfix/mips/disable-advansys.patch
bugfix/powerpc/lpar-console.patch
bugfix/arm/ixp4xx_iobe.patch
bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch
bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
@ -73,10 +71,4 @@ bugfix/m68k/ethernat-kconfig.patch
features/all/mvsas-Recognise-device-subsystem-9485-9485-as-88SE94.patch
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch
bugfix/all/UAPI-include-asm-byteorder.h-in-linux-raid-md_p.h.patch
bugfix/all/net-clamp-msg_namelen-instead-of-returning-an-error.patch
bugfix/all/tcp-tsq-restore-minimal-amount-of-queueing.patch
bugfix/all/rds-prevent-bug_on-triggered-by-congestion-update-to-loopback.patch
bugfix/all/ipv6-fix-headroom-calculation-in-udp6_ufo_fragment.patch
bugfix/all/xfs-underflow-bug-in-xfs_attrlist_by_handle.patch
bugfix/arm/ahci-imx-Explicitly-clear-IMX6Q_GPR13_SATA_MPLL_CLK_.patch