Update to 4.1-rc3
Drop and refresh patches as appropriate. In the x86 memtest patch, add #ifdef CONFIG_X86 as memtest is now cross-architecture and memtest86+ is not. svn path=/dists/trunk/linux/; revision=22616
This commit is contained in:
parent
8ed388e21b
commit
56c70a5fd2
|
@ -1,3 +1,9 @@
|
||||||
|
linux (4.1~rc3-1~exp1) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release candidate
|
||||||
|
|
||||||
|
-- Ben Hutchings <ben@decadent.org.uk> Mon, 11 May 2015 16:19:42 +0100
|
||||||
|
|
||||||
linux (4.0.2-1) unstable; urgency=medium
|
linux (4.0.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
* New upstream stable update:
|
* New upstream stable update:
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
From: Lukas Czerner <lczerner@redhat.com>
|
|
||||||
Date: Fri, 3 Apr 2015 00:09:13 -0400
|
|
||||||
Subject: ext4: allocate entire range in zero range
|
|
||||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/tytso/ext4.git/commit/?id=0f2af21aae11972fa924374ddcf52e88347cf5a8
|
|
||||||
|
|
||||||
Currently there is a bug in zero range code which causes zero range
|
|
||||||
calls to only allocate block aligned portion of the range, while
|
|
||||||
ignoring the rest in some cases.
|
|
||||||
|
|
||||||
In some cases, namely if the end of the range is past i_size, we do
|
|
||||||
attempt to preallocate the last nonaligned block. However this might
|
|
||||||
cause kernel to BUG() in some carefully designed zero range requests
|
|
||||||
on setups where page size > block size.
|
|
||||||
|
|
||||||
Fix this problem by first preallocating the entire range, including
|
|
||||||
the nonaligned edges and converting the written extents to unwritten
|
|
||||||
in the next step. This approach will also give us the advantage of
|
|
||||||
having the range to be as linearly contiguous as possible.
|
|
||||||
|
|
||||||
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
|
|
||||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
|
||||||
---
|
|
||||||
--- a/fs/ext4/extents.c
|
|
||||||
+++ b/fs/ext4/extents.c
|
|
||||||
@@ -4795,12 +4795,6 @@ static long ext4_zero_range(struct file
|
|
||||||
else
|
|
||||||
max_blocks -= lblk;
|
|
||||||
|
|
||||||
- flags = EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT |
|
|
||||||
- EXT4_GET_BLOCKS_CONVERT_UNWRITTEN |
|
|
||||||
- EXT4_EX_NOCACHE;
|
|
||||||
- if (mode & FALLOC_FL_KEEP_SIZE)
|
|
||||||
- flags |= EXT4_GET_BLOCKS_KEEP_SIZE;
|
|
||||||
-
|
|
||||||
mutex_lock(&inode->i_mutex);
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -4817,15 +4811,28 @@ static long ext4_zero_range(struct file
|
|
||||||
ret = inode_newsize_ok(inode, new_size);
|
|
||||||
if (ret)
|
|
||||||
goto out_mutex;
|
|
||||||
- /*
|
|
||||||
- * If we have a partial block after EOF we have to allocate
|
|
||||||
- * the entire block.
|
|
||||||
- */
|
|
||||||
- if (partial_end)
|
|
||||||
- max_blocks += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ flags = EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT;
|
|
||||||
+ if (mode & FALLOC_FL_KEEP_SIZE)
|
|
||||||
+ flags |= EXT4_GET_BLOCKS_KEEP_SIZE;
|
|
||||||
+
|
|
||||||
+ /* Preallocate the range including the unaligned edges */
|
|
||||||
+ if (partial_begin || partial_end) {
|
|
||||||
+ ret = ext4_alloc_file_blocks(file,
|
|
||||||
+ round_down(offset, 1 << blkbits) >> blkbits,
|
|
||||||
+ (round_up((offset + len), 1 << blkbits) -
|
|
||||||
+ round_down(offset, 1 << blkbits)) >> blkbits,
|
|
||||||
+ new_size, flags, mode);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto out_mutex;
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Zero range excluding the unaligned edges */
|
|
||||||
if (max_blocks > 0) {
|
|
||||||
+ flags |= (EXT4_GET_BLOCKS_CONVERT_UNWRITTEN |
|
|
||||||
+ EXT4_EX_NOCACHE);
|
|
||||||
|
|
||||||
/* Now release the pages and zero block aligned part of pages*/
|
|
||||||
truncate_pagecache_range(inode, start, end - 1);
|
|
|
@ -53,7 +53,7 @@ upstream submission.
|
||||||
/* disable MPU */
|
/* disable MPU */
|
||||||
--- a/arch/x86/kernel/cpu/microcode/amd.c
|
--- a/arch/x86/kernel/cpu/microcode/amd.c
|
||||||
+++ b/arch/x86/kernel/cpu/microcode/amd.c
|
+++ b/arch/x86/kernel/cpu/microcode/amd.c
|
||||||
@@ -433,10 +433,8 @@ static enum ucode_state request_microcod
|
@@ -432,10 +432,8 @@ static enum ucode_state request_microcod
|
||||||
if (c->x86 >= 0x15)
|
if (c->x86 >= 0x15)
|
||||||
snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
|
snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ upstream submission.
|
||||||
fw_size = firmware->size / sizeof(u32);
|
fw_size = firmware->size / sizeof(u32);
|
||||||
--- a/drivers/bluetooth/ath3k.c
|
--- a/drivers/bluetooth/ath3k.c
|
||||||
+++ b/drivers/bluetooth/ath3k.c
|
+++ b/drivers/bluetooth/ath3k.c
|
||||||
@@ -393,10 +393,8 @@ static int ath3k_load_patch(struct usb_d
|
@@ -394,10 +394,8 @@ static int ath3k_load_patch(struct usb_d
|
||||||
le32_to_cpu(fw_version.rom_version));
|
le32_to_cpu(fw_version.rom_version));
|
||||||
|
|
||||||
ret = request_firmware(&firmware, filename, &udev->dev);
|
ret = request_firmware(&firmware, filename, &udev->dev);
|
||||||
|
@ -108,7 +108,7 @@ upstream submission.
|
||||||
|
|
||||||
pt_rom_version = get_unaligned_le32(firmware->data +
|
pt_rom_version = get_unaligned_le32(firmware->data +
|
||||||
firmware->size - 8);
|
firmware->size - 8);
|
||||||
@@ -456,10 +454,8 @@ static int ath3k_load_syscfg(struct usb_
|
@@ -457,10 +455,8 @@ static int ath3k_load_syscfg(struct usb_
|
||||||
le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
|
le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
|
||||||
|
|
||||||
ret = request_firmware(&firmware, filename, &udev->dev);
|
ret = request_firmware(&firmware, filename, &udev->dev);
|
||||||
|
@ -203,7 +203,7 @@ upstream submission.
|
||||||
fw->size, fw_name);
|
fw->size, fw_name);
|
||||||
--- a/drivers/dma/imx-sdma.c
|
--- a/drivers/dma/imx-sdma.c
|
||||||
+++ b/drivers/dma/imx-sdma.c
|
+++ b/drivers/dma/imx-sdma.c
|
||||||
@@ -1284,11 +1284,8 @@ static void sdma_load_firmware(const str
|
@@ -1285,11 +1285,8 @@ static void sdma_load_firmware(const str
|
||||||
const struct sdma_script_start_addrs *addr;
|
const struct sdma_script_start_addrs *addr;
|
||||||
unsigned short *ram_code;
|
unsigned short *ram_code;
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ upstream submission.
|
||||||
where = 0;
|
where = 0;
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
|
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
|
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
|
||||||
@@ -1507,10 +1507,8 @@ gf100_gr_ctor_fw(struct gf100_gr_priv *p
|
@@ -1521,10 +1521,8 @@ gf100_gr_ctor_fw(struct gf100_gr_priv *p
|
||||||
if (ret) {
|
if (ret) {
|
||||||
snprintf(f, sizeof(f), "nouveau/%s", fwname);
|
snprintf(f, sizeof(f), "nouveau/%s", fwname);
|
||||||
ret = request_firmware(&fw, f, nv_device_base(device));
|
ret = request_firmware(&fw, f, nv_device_base(device));
|
||||||
|
@ -289,7 +289,7 @@ upstream submission.
|
||||||
rdev->me_fw->size, fw_name);
|
rdev->me_fw->size, fw_name);
|
||||||
--- a/drivers/gpu/drm/radeon/r600.c
|
--- a/drivers/gpu/drm/radeon/r600.c
|
||||||
+++ b/drivers/gpu/drm/radeon/r600.c
|
+++ b/drivers/gpu/drm/radeon/r600.c
|
||||||
@@ -2519,10 +2519,6 @@ int r600_init_microcode(struct radeon_de
|
@@ -2545,10 +2545,6 @@ int r600_init_microcode(struct radeon_de
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -343,7 +343,7 @@ upstream submission.
|
||||||
ret = qib_ibsd_ucode_loaded(dd->pport, fw);
|
ret = qib_ibsd_ucode_loaded(dd->pport, fw);
|
||||||
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
|
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
|
||||||
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
|
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
|
||||||
@@ -1892,10 +1892,8 @@ static int mxt_load_fw(struct device *de
|
@@ -2195,10 +2195,8 @@ static int mxt_load_fw(struct device *de
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = request_firmware(&fw, fn, dev);
|
ret = request_firmware(&fw, fn, dev);
|
||||||
|
@ -382,7 +382,7 @@ upstream submission.
|
||||||
}
|
}
|
||||||
--- a/drivers/media/usb/dvb-usb/dib0700_devices.c
|
--- a/drivers/media/usb/dvb-usb/dib0700_devices.c
|
||||||
+++ b/drivers/media/usb/dvb-usb/dib0700_devices.c
|
+++ b/drivers/media/usb/dvb-usb/dib0700_devices.c
|
||||||
@@ -2394,12 +2394,9 @@ static int stk9090m_frontend_attach(stru
|
@@ -2391,12 +2391,9 @@ static int stk9090m_frontend_attach(stru
|
||||||
|
|
||||||
dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x10, 0x80);
|
dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x10, 0x80);
|
||||||
|
|
||||||
|
@ -397,7 +397,7 @@ upstream submission.
|
||||||
stk9090m_config.microcode_B_fe_size = state->frontend_firmware->size;
|
stk9090m_config.microcode_B_fe_size = state->frontend_firmware->size;
|
||||||
stk9090m_config.microcode_B_fe_buffer = state->frontend_firmware->data;
|
stk9090m_config.microcode_B_fe_buffer = state->frontend_firmware->data;
|
||||||
|
|
||||||
@@ -2460,12 +2457,9 @@ static int nim9090md_frontend_attach(str
|
@@ -2457,12 +2454,9 @@ static int nim9090md_frontend_attach(str
|
||||||
msleep(20);
|
msleep(20);
|
||||||
dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
|
dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
|
||||||
|
|
||||||
|
@ -728,16 +728,16 @@ upstream submission.
|
||||||
}
|
}
|
||||||
--- a/drivers/media/common/siano/smscoreapi.c
|
--- a/drivers/media/common/siano/smscoreapi.c
|
||||||
+++ b/drivers/media/common/siano/smscoreapi.c
|
+++ b/drivers/media/common/siano/smscoreapi.c
|
||||||
@@ -1164,10 +1164,8 @@ static int smscore_load_firmware_from_fi
|
@@ -1162,10 +1162,8 @@ static int smscore_load_firmware_from_fi
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
rc = request_firmware(&fw, fw_filename, coredev->device);
|
rc = request_firmware(&fw, fw_filename, coredev->device);
|
||||||
- if (rc < 0) {
|
- if (rc < 0) {
|
||||||
- sms_err("failed to open firmware file \"%s\"", fw_filename);
|
- pr_err("failed to open firmware file '%s'\n", fw_filename);
|
||||||
+ if (rc)
|
+ if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
- }
|
- }
|
||||||
sms_info("read fw %s, buffer size=0x%zx", fw_filename, fw->size);
|
pr_debug("read fw %s, buffer size=0x%zx\n", fw_filename, fw->size);
|
||||||
fw_buf = kmalloc(ALIGN(fw->size, SMS_ALLOC_ALIGNMENT),
|
fw_buf = kmalloc(ALIGN(fw->size, SMS_ALLOC_ALIGNMENT),
|
||||||
GFP_KERNEL | GFP_DMA);
|
GFP_KERNEL | GFP_DMA);
|
||||||
--- a/drivers/media/pci/ttpci/av7110.c
|
--- a/drivers/media/pci/ttpci/av7110.c
|
||||||
|
@ -807,7 +807,7 @@ upstream submission.
|
||||||
firmware_size = fw_entry->size;
|
firmware_size = fw_entry->size;
|
||||||
--- a/drivers/media/radio/radio-wl1273.c
|
--- a/drivers/media/radio/radio-wl1273.c
|
||||||
+++ b/drivers/media/radio/radio-wl1273.c
|
+++ b/drivers/media/radio/radio-wl1273.c
|
||||||
@@ -512,11 +512,8 @@ static int wl1273_fm_upload_firmware_pat
|
@@ -514,11 +514,8 @@ static int wl1273_fm_upload_firmware_pat
|
||||||
* Uploading the firmware patch is not always necessary,
|
* Uploading the firmware patch is not always necessary,
|
||||||
* so we only print an info message.
|
* so we only print an info message.
|
||||||
*/
|
*/
|
||||||
|
@ -1216,7 +1216,7 @@ upstream submission.
|
||||||
if (bp->mips_firmware->size < sizeof(*mips_fw) ||
|
if (bp->mips_firmware->size < sizeof(*mips_fw) ||
|
||||||
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
|
||||||
@@ -12976,11 +12976,8 @@ static int bnx2x_init_firmware(struct bn
|
@@ -12981,11 +12981,8 @@ static int bnx2x_init_firmware(struct bn
|
||||||
BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
|
BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
|
||||||
|
|
||||||
rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
|
rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
|
||||||
|
@ -1231,7 +1231,7 @@ upstream submission.
|
||||||
if (rc) {
|
if (rc) {
|
||||||
--- a/drivers/net/ethernet/broadcom/tg3.c
|
--- a/drivers/net/ethernet/broadcom/tg3.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/tg3.c
|
+++ b/drivers/net/ethernet/broadcom/tg3.c
|
||||||
@@ -11337,11 +11337,8 @@ static int tg3_request_firmware(struct t
|
@@ -11335,11 +11335,8 @@ static int tg3_request_firmware(struct t
|
||||||
{
|
{
|
||||||
const struct tg3_firmware_hdr *fw_hdr;
|
const struct tg3_firmware_hdr *fw_hdr;
|
||||||
|
|
||||||
|
@ -1246,7 +1246,7 @@ upstream submission.
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/brocade/bna/cna_fwimg.c
|
--- a/drivers/net/ethernet/brocade/bna/cna_fwimg.c
|
||||||
+++ b/drivers/net/ethernet/brocade/bna/cna_fwimg.c
|
+++ b/drivers/net/ethernet/brocade/bna/cna_fwimg.c
|
||||||
@@ -30,10 +30,8 @@ cna_read_firmware(struct pci_dev *pdev,
|
@@ -31,10 +31,8 @@ cna_read_firmware(struct pci_dev *pdev,
|
||||||
{
|
{
|
||||||
const struct firmware *fw;
|
const struct firmware *fw;
|
||||||
|
|
||||||
|
@ -1314,7 +1314,7 @@ upstream submission.
|
||||||
netif_info(nic, probe, nic->netdev,
|
netif_info(nic, probe, nic->netdev,
|
||||||
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
|
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
|
||||||
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
|
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
|
||||||
@@ -601,8 +601,6 @@ static int myri10ge_load_hotplug_firmwar
|
@@ -596,8 +596,6 @@ static int myri10ge_load_hotplug_firmwar
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
if ((status = request_firmware(&fw, mgp->fw_name, dev)) < 0) {
|
if ((status = request_firmware(&fw, mgp->fw_name, dev)) < 0) {
|
||||||
|
@ -1424,7 +1424,7 @@ upstream submission.
|
||||||
fwh = (struct at76_fw_header *)(fwe->fw->data);
|
fwh = (struct at76_fw_header *)(fwe->fw->data);
|
||||||
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
|
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
|
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
|
||||||
@@ -1084,12 +1084,8 @@ static void ath9k_hif_usb_firmware_cb(co
|
@@ -1085,12 +1085,8 @@ static void ath9k_hif_usb_firmware_cb(co
|
||||||
struct hif_device_usb *hif_dev = context;
|
struct hif_device_usb *hif_dev = context;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -1568,7 +1568,7 @@ upstream submission.
|
||||||
else
|
else
|
||||||
--- a/drivers/net/wireless/iwlwifi/iwl-drv.c
|
--- a/drivers/net/wireless/iwlwifi/iwl-drv.c
|
||||||
+++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
|
+++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
|
||||||
@@ -1078,13 +1078,8 @@ static void iwl_req_fw_callback(const st
|
@@ -1119,13 +1119,8 @@ static void iwl_req_fw_callback(const st
|
||||||
if (!pieces)
|
if (!pieces)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1585,7 +1585,7 @@ upstream submission.
|
||||||
drv->firmware_name, ucode_raw->size);
|
drv->firmware_name, ucode_raw->size);
|
||||||
--- a/drivers/net/wireless/libertas_tf/if_usb.c
|
--- a/drivers/net/wireless/libertas_tf/if_usb.c
|
||||||
+++ b/drivers/net/wireless/libertas_tf/if_usb.c
|
+++ b/drivers/net/wireless/libertas_tf/if_usb.c
|
||||||
@@ -825,8 +825,6 @@ static int if_usb_prog_firmware(struct i
|
@@ -824,8 +824,6 @@ static int if_usb_prog_firmware(struct i
|
||||||
kparam_block_sysfs_write(fw_name);
|
kparam_block_sysfs_write(fw_name);
|
||||||
ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev);
|
ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@ -1596,7 +1596,7 @@ upstream submission.
|
||||||
}
|
}
|
||||||
--- a/drivers/net/wireless/mwifiex/main.c
|
--- a/drivers/net/wireless/mwifiex/main.c
|
||||||
+++ b/drivers/net/wireless/mwifiex/main.c
|
+++ b/drivers/net/wireless/mwifiex/main.c
|
||||||
@@ -401,11 +401,8 @@ static void mwifiex_fw_dpc(const struct
|
@@ -454,11 +454,8 @@ static void mwifiex_fw_dpc(const struct
|
||||||
bool init_failed = false;
|
bool init_failed = false;
|
||||||
struct wireless_dev *wdev;
|
struct wireless_dev *wdev;
|
||||||
|
|
||||||
|
@ -1920,7 +1920,7 @@ upstream submission.
|
||||||
if (err) {
|
if (err) {
|
||||||
--- a/drivers/scsi/bfa/bfad.c
|
--- a/drivers/scsi/bfa/bfad.c
|
||||||
+++ b/drivers/scsi/bfa/bfad.c
|
+++ b/drivers/scsi/bfa/bfad.c
|
||||||
@@ -1766,7 +1766,6 @@ bfad_read_firmware(struct pci_dev *pdev,
|
@@ -1762,7 +1762,6 @@ bfad_read_firmware(struct pci_dev *pdev,
|
||||||
const struct firmware *fw;
|
const struct firmware *fw;
|
||||||
|
|
||||||
if (request_firmware(&fw, fw_name, &pdev->dev)) {
|
if (request_firmware(&fw, fw_name, &pdev->dev)) {
|
||||||
|
@ -1930,7 +1930,7 @@ upstream submission.
|
||||||
}
|
}
|
||||||
--- a/drivers/scsi/ipr.c
|
--- a/drivers/scsi/ipr.c
|
||||||
+++ b/drivers/scsi/ipr.c
|
+++ b/drivers/scsi/ipr.c
|
||||||
@@ -3995,10 +3995,8 @@ static ssize_t ipr_store_update_fw(struc
|
@@ -4004,10 +4004,8 @@ static ssize_t ipr_store_update_fw(struc
|
||||||
len = snprintf(fname, 99, "%s", buf);
|
len = snprintf(fname, 99, "%s", buf);
|
||||||
fname[len-1] = '\0';
|
fname[len-1] = '\0';
|
||||||
|
|
||||||
|
@ -1968,21 +1968,21 @@ upstream submission.
|
||||||
}
|
}
|
||||||
--- a/drivers/scsi/qla2xxx/qla_init.c
|
--- a/drivers/scsi/qla2xxx/qla_init.c
|
||||||
+++ b/drivers/scsi/qla2xxx/qla_init.c
|
+++ b/drivers/scsi/qla2xxx/qla_init.c
|
||||||
@@ -5363,8 +5363,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
|
@@ -5414,8 +5414,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
|
||||||
/* Load firmware blob. */
|
/* Load firmware blob. */
|
||||||
blob = qla2x00_request_firmware(vha);
|
blob = qla2x00_request_firmware(vha);
|
||||||
if (!blob) {
|
if (!blob) {
|
||||||
- ql_log(ql_log_info, vha, 0x0083,
|
- ql_log(ql_log_info, vha, 0x0083,
|
||||||
- "Fimware image unavailable.\n");
|
- "Firmware image unavailable.\n");
|
||||||
ql_log(ql_log_info, vha, 0x0084,
|
ql_log(ql_log_info, vha, 0x0084,
|
||||||
"Firmware images can be retrieved from: "QLA_FW_URL ".\n");
|
"Firmware images can be retrieved from: "QLA_FW_URL ".\n");
|
||||||
return QLA_FUNCTION_FAILED;
|
return QLA_FUNCTION_FAILED;
|
||||||
@@ -5466,8 +5464,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
|
@@ -5517,8 +5515,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
|
||||||
/* Load firmware blob. */
|
/* Load firmware blob. */
|
||||||
blob = qla2x00_request_firmware(vha);
|
blob = qla2x00_request_firmware(vha);
|
||||||
if (!blob) {
|
if (!blob) {
|
||||||
- ql_log(ql_log_warn, vha, 0x0090,
|
- ql_log(ql_log_warn, vha, 0x0090,
|
||||||
- "Fimware image unavailable.\n");
|
- "Firmware image unavailable.\n");
|
||||||
ql_log(ql_log_warn, vha, 0x0091,
|
ql_log(ql_log_warn, vha, 0x0091,
|
||||||
"Firmware images can be retrieved from: "
|
"Firmware images can be retrieved from: "
|
||||||
QLA_FW_URL ".\n");
|
QLA_FW_URL ".\n");
|
||||||
|
@ -2029,18 +2029,20 @@ upstream submission.
|
||||||
fw->size, fwname);
|
fw->size, fwname);
|
||||||
--- a/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
|
--- a/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
|
||||||
+++ b/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
|
+++ b/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
|
||||||
@@ -2131,16 +2131,12 @@ struct net_device *init_ft1000_card(stru
|
@@ -2034,18 +2034,12 @@ struct net_device *init_ft1000_card(stru
|
||||||
info->AsicID = ft1000_read_reg(dev, FT1000_REG_ASIC_ID);
|
info->AsicID = ft1000_read_reg(dev, FT1000_REG_ASIC_ID);
|
||||||
if (info->AsicID == ELECTRABUZZ_ID) {
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
||||||
pr_debug("ELECTRABUZZ ASIC\n");
|
pr_debug("ELECTRABUZZ ASIC\n");
|
||||||
- if (request_firmware(&fw_entry, "ft1000.img", &link->dev) != 0) {
|
- if (request_firmware(&fw_entry, "ft1000.img",
|
||||||
|
- &link->dev) != 0) {
|
||||||
- pr_info("Could not open ft1000.img\n");
|
- pr_info("Could not open ft1000.img\n");
|
||||||
+ if (request_firmware(&fw_entry, "ft1000.img", &link->dev) != 0)
|
+ if (request_firmware(&fw_entry, "ft1000.img", &link->dev) != 0)
|
||||||
goto err_unreg;
|
goto err_unreg;
|
||||||
- }
|
- }
|
||||||
} else {
|
} else {
|
||||||
pr_debug("MAGNEMITE ASIC\n");
|
pr_debug("MAGNEMITE ASIC\n");
|
||||||
- if (request_firmware(&fw_entry, "ft2000.img", &link->dev) != 0) {
|
- if (request_firmware(&fw_entry, "ft2000.img",
|
||||||
|
- &link->dev) != 0) {
|
||||||
- pr_info("Could not open ft2000.img\n");
|
- pr_info("Could not open ft2000.img\n");
|
||||||
+ if (request_firmware(&fw_entry, "ft2000.img", &link->dev) != 0)
|
+ if (request_firmware(&fw_entry, "ft2000.img", &link->dev) != 0)
|
||||||
goto err_unreg;
|
goto err_unreg;
|
||||||
|
@ -2055,7 +2057,7 @@ upstream submission.
|
||||||
|
|
||||||
ret = request_firmware(&dsp_fw, "ft3000.img", &dev->dev);
|
ret = request_firmware(&dsp_fw, "ft3000.img", &dev->dev);
|
||||||
- if (ret < 0) {
|
- if (ret < 0) {
|
||||||
- pr_err("Error request_firmware()\n");
|
- dev_err(interface->usb_dev, "Error request_firmware()\n");
|
||||||
+ if (ret)
|
+ if (ret)
|
||||||
goto err_fw;
|
goto err_fw;
|
||||||
- }
|
- }
|
||||||
|
@ -2159,7 +2161,7 @@ upstream submission.
|
||||||
MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
|
MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
|
||||||
--- a/drivers/staging/slicoss/slicoss.c
|
--- a/drivers/staging/slicoss/slicoss.c
|
||||||
+++ b/drivers/staging/slicoss/slicoss.c
|
+++ b/drivers/staging/slicoss/slicoss.c
|
||||||
@@ -393,11 +393,8 @@ static int slic_card_download_gbrcv(stru
|
@@ -391,11 +391,8 @@ static int slic_card_download_gbrcv(stru
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
|
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
|
||||||
|
@ -2172,7 +2174,7 @@ upstream submission.
|
||||||
|
|
||||||
rcvucodelen = *(u32 *)(fw->data + index);
|
rcvucodelen = *(u32 *)(fw->data + index);
|
||||||
index += 4;
|
index += 4;
|
||||||
@@ -471,11 +468,8 @@ static int slic_card_download(struct ada
|
@@ -469,11 +466,8 @@ static int slic_card_download(struct ada
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
|
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
|
||||||
|
@ -2592,7 +2594,7 @@ upstream submission.
|
||||||
return err;
|
return err;
|
||||||
--- a/sound/pci/emu10k1/emu10k1_main.c
|
--- a/sound/pci/emu10k1/emu10k1_main.c
|
||||||
+++ b/sound/pci/emu10k1/emu10k1_main.c
|
+++ b/sound/pci/emu10k1/emu10k1_main.c
|
||||||
@@ -887,12 +887,8 @@ static int snd_emu10k1_emu1010_init(stru
|
@@ -901,12 +901,8 @@ static int snd_emu10k1_emu1010_init(stru
|
||||||
}
|
}
|
||||||
|
|
||||||
err = request_firmware(&emu->firmware, filename, &emu->pci->dev);
|
err = request_firmware(&emu->firmware, filename, &emu->pci->dev);
|
||||||
|
@ -2608,7 +2610,7 @@ upstream submission.
|
||||||
filename, emu->firmware->size);
|
filename, emu->firmware->size);
|
||||||
--- a/sound/pci/hda/hda_intel.c
|
--- a/sound/pci/hda/hda_intel.c
|
||||||
+++ b/sound/pci/hda/hda_intel.c
|
+++ b/sound/pci/hda/hda_intel.c
|
||||||
@@ -1636,10 +1636,8 @@ static void azx_firmware_cb(const struct
|
@@ -1614,10 +1614,8 @@ static void azx_firmware_cb(const struct
|
||||||
struct azx *chip = card->private_data;
|
struct azx *chip = card->private_data;
|
||||||
struct pci_dev *pci = chip->pci;
|
struct pci_dev *pci = chip->pci;
|
||||||
|
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
From: "Eric W. Biederman" <ebiederm@xmission.com>
|
|
||||||
Date: Thu, 2 Apr 2015 16:35:48 -0500
|
|
||||||
Subject: fs_pin: Allow for the possibility that m_list or s_list go unused.
|
|
||||||
Origin: https://git.kernel.org/linus/820f9f147dcce2602eefd9b575bbbd9ea14f0953
|
|
||||||
|
|
||||||
This is needed to support lazily umounting locked mounts. Because the
|
|
||||||
entire unmounted subtree needs to stay together until there are no
|
|
||||||
users with references to any part of the subtree.
|
|
||||||
|
|
||||||
To support this guarantee that the fs_pin m_list and s_list nodes
|
|
||||||
are initialized by initializing them in init_fs_pin allowing
|
|
||||||
for the possibility that pin_insert_group does not touch them.
|
|
||||||
|
|
||||||
Further use hlist_del_init in pin_remove so that there is
|
|
||||||
a hlist_unhashed test before the list we attempt to update
|
|
||||||
the previous list item.
|
|
||||||
|
|
||||||
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
|
|
||||||
---
|
|
||||||
fs/fs_pin.c | 4 ++--
|
|
||||||
include/linux/fs_pin.h | 2 ++
|
|
||||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/fs/fs_pin.c b/fs/fs_pin.c
|
|
||||||
index b06c987..611b540 100644
|
|
||||||
--- a/fs/fs_pin.c
|
|
||||||
+++ b/fs/fs_pin.c
|
|
||||||
@@ -9,8 +9,8 @@ static DEFINE_SPINLOCK(pin_lock);
|
|
||||||
void pin_remove(struct fs_pin *pin)
|
|
||||||
{
|
|
||||||
spin_lock(&pin_lock);
|
|
||||||
- hlist_del(&pin->m_list);
|
|
||||||
- hlist_del(&pin->s_list);
|
|
||||||
+ hlist_del_init(&pin->m_list);
|
|
||||||
+ hlist_del_init(&pin->s_list);
|
|
||||||
spin_unlock(&pin_lock);
|
|
||||||
spin_lock_irq(&pin->wait.lock);
|
|
||||||
pin->done = 1;
|
|
||||||
diff --git a/include/linux/fs_pin.h b/include/linux/fs_pin.h
|
|
||||||
index 9dc4e03..3886b3b 100644
|
|
||||||
--- a/include/linux/fs_pin.h
|
|
||||||
+++ b/include/linux/fs_pin.h
|
|
||||||
@@ -13,6 +13,8 @@ struct vfsmount;
|
|
||||||
static inline void init_fs_pin(struct fs_pin *p, void (*kill)(struct fs_pin *))
|
|
||||||
{
|
|
||||||
init_waitqueue_head(&p->wait);
|
|
||||||
+ INIT_HLIST_NODE(&p->s_list);
|
|
||||||
+ INIT_HLIST_NODE(&p->m_list);
|
|
||||||
p->kill = kill;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
From: "David S. Miller" <davem@davemloft.net>
|
|
||||||
Date: Fri, 1 May 2015 22:02:47 -0400
|
|
||||||
Subject: ipv4: Missing sk_nulls_node_init() in ping_unhash().
|
|
||||||
Origin: https://git.kernel.org/linus/a134f083e79fb4c3d0a925691e732c56911b4326
|
|
||||||
|
|
||||||
If we don't do that, then the poison value is left in the ->pprev
|
|
||||||
backlink.
|
|
||||||
|
|
||||||
This can cause crashes if we do a disconnect, followed by a connect().
|
|
||||||
|
|
||||||
Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
||||||
Reported-by: Wen Xu <hotdog3645@gmail.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
net/ipv4/ping.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
|
|
||||||
index a93f260..05ff44b 100644
|
|
||||||
--- a/net/ipv4/ping.c
|
|
||||||
+++ b/net/ipv4/ping.c
|
|
||||||
@@ -158,6 +158,7 @@ void ping_unhash(struct sock *sk)
|
|
||||||
if (sk_hashed(sk)) {
|
|
||||||
write_lock_bh(&ping_table.lock);
|
|
||||||
hlist_nulls_del(&sk->sk_nulls_node);
|
|
||||||
+ sk_nulls_node_init(&sk->sk_nulls_node);
|
|
||||||
sock_put(sk);
|
|
||||||
isk->inet_num = 0;
|
|
||||||
isk->inet_sport = 0;
|
|
|
@ -1,44 +0,0 @@
|
||||||
From: "Eric W. Biederman" <ebiederm@xmission.com>
|
|
||||||
Date: Wed, 7 Jan 2015 14:28:26 -0600
|
|
||||||
Subject: mnt: Fail collect_mounts when applied to unmounted mounts
|
|
||||||
Origin: https://git.kernel.org/linus/cd4a40174b71acd021877341684d8bb1dc8ea4ae
|
|
||||||
|
|
||||||
The only users of collect_mounts are in audit_tree.c
|
|
||||||
|
|
||||||
In audit_trim_trees and audit_add_tree_rule the path passed into
|
|
||||||
collect_mounts is generated from kern_path passed an audit_tree
|
|
||||||
pathname which is guaranteed to be an absolute path. In those cases
|
|
||||||
collect_mounts is obviously intended to work on mounted paths and
|
|
||||||
if a race results in paths that are unmounted when collect_mounts
|
|
||||||
it is reasonable to fail early.
|
|
||||||
|
|
||||||
The paths passed into audit_tag_tree don't have the absolute path
|
|
||||||
check. But are used to play with fsnotify and otherwise interact with
|
|
||||||
the audit_trees, so again operating only on mounted paths appears
|
|
||||||
reasonable.
|
|
||||||
|
|
||||||
Avoid having to worry about what happens when we try and audit
|
|
||||||
unmounted filesystems by restricting collect_mounts to mounts
|
|
||||||
that appear in the mount tree.
|
|
||||||
|
|
||||||
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
|
|
||||||
---
|
|
||||||
fs/namespace.c | 7 +++++--
|
|
||||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/fs/namespace.c
|
|
||||||
+++ b/fs/namespace.c
|
|
||||||
@@ -1709,8 +1709,11 @@ struct vfsmount *collect_mounts(struct p
|
|
||||||
{
|
|
||||||
struct mount *tree;
|
|
||||||
namespace_lock();
|
|
||||||
- tree = copy_tree(real_mount(path->mnt), path->dentry,
|
|
||||||
- CL_COPY_ALL | CL_PRIVATE);
|
|
||||||
+ if (!check_mnt(real_mount(path->mnt)))
|
|
||||||
+ tree = ERR_PTR(-EINVAL);
|
|
||||||
+ else
|
|
||||||
+ tree = copy_tree(real_mount(path->mnt), path->dentry,
|
|
||||||
+ CL_COPY_ALL | CL_PRIVATE);
|
|
||||||
namespace_unlock();
|
|
||||||
if (IS_ERR(tree))
|
|
||||||
return ERR_CAST(tree);
|
|
|
@ -1,34 +0,0 @@
|
||||||
From: Al Viro <viro@zeniv.linux.org.uk>
|
|
||||||
Date: Fri, 8 May 2015 22:53:15 -0400
|
|
||||||
Subject: path_openat(): fix double fput()
|
|
||||||
Origin: https://git.kernel.org/linus/f15133df088ecadd141ea1907f2c96df67c729f0
|
|
||||||
|
|
||||||
path_openat() jumps to the wrong place after do_tmpfile() - it has
|
|
||||||
already done path_cleanup() (as part of path_lookupat() called by
|
|
||||||
do_tmpfile()), so doing that again can lead to double fput().
|
|
||||||
|
|
||||||
Cc: stable@vger.kernel.org # v3.11+
|
|
||||||
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
|
||||||
---
|
|
||||||
fs/namei.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/fs/namei.c
|
|
||||||
+++ b/fs/namei.c
|
|
||||||
@@ -3228,7 +3228,7 @@ static struct file *path_openat(int dfd,
|
|
||||||
|
|
||||||
if (unlikely(file->f_flags & __O_TMPFILE)) {
|
|
||||||
error = do_tmpfile(dfd, pathname, nd, flags, op, file, &opened);
|
|
||||||
- goto out;
|
|
||||||
+ goto out2;
|
|
||||||
}
|
|
||||||
|
|
||||||
error = path_init(dfd, pathname->name, flags, nd);
|
|
||||||
@@ -3258,6 +3258,7 @@ static struct file *path_openat(int dfd,
|
|
||||||
}
|
|
||||||
out:
|
|
||||||
path_cleanup(nd);
|
|
||||||
+out2:
|
|
||||||
if (!(opened & FILE_OPENED)) {
|
|
||||||
BUG_ON(!error);
|
|
||||||
put_filp(file);
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
|
||||||
---
|
---
|
||||||
--- a/kernel/fork.c
|
--- a/kernel/fork.c
|
||||||
+++ b/kernel/fork.c
|
+++ b/kernel/fork.c
|
||||||
@@ -86,6 +86,11 @@
|
@@ -87,6 +87,11 @@
|
||||||
|
|
||||||
#define CREATE_TRACE_POINTS
|
#define CREATE_TRACE_POINTS
|
||||||
#include <trace/events/task.h>
|
#include <trace/events/task.h>
|
||||||
|
@ -26,8 +26,8 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Protected counters by write_lock_irq(&tasklist_lock)
|
* Minimum number of threads to boot the kernel
|
||||||
@@ -1195,6 +1200,10 @@ static struct task_struct *copy_process(
|
@@ -1252,6 +1257,10 @@ static struct task_struct *copy_process(
|
||||||
if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))
|
if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
|
||||||
/*
|
/*
|
||||||
* Thread groups must share signals as well, and detached threads
|
* Thread groups must share signals as well, and detached threads
|
||||||
* can only be started up within the thread group.
|
* can only be started up within the thread group.
|
||||||
@@ -1890,6 +1899,12 @@ SYSCALL_DEFINE1(unshare, unsigned long,
|
@@ -1944,6 +1953,12 @@ SYSCALL_DEFINE1(unshare, unsigned long,
|
||||||
if (unshare_flags & CLONE_NEWNS)
|
if (unshare_flags & CLONE_NEWNS)
|
||||||
unshare_flags |= CLONE_FS;
|
unshare_flags |= CLONE_FS;
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
|
||||||
goto bad_unshare_out;
|
goto bad_unshare_out;
|
||||||
--- a/kernel/sysctl.c
|
--- a/kernel/sysctl.c
|
||||||
+++ b/kernel/sysctl.c
|
+++ b/kernel/sysctl.c
|
||||||
@@ -103,6 +103,9 @@ extern int core_uses_pid;
|
@@ -102,6 +102,9 @@ extern int core_uses_pid;
|
||||||
extern char core_pattern[];
|
extern char core_pattern[];
|
||||||
extern unsigned int core_pipe_limit;
|
extern unsigned int core_pipe_limit;
|
||||||
#endif
|
#endif
|
||||||
|
@ -63,7 +63,7 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
|
||||||
extern int pid_max;
|
extern int pid_max;
|
||||||
extern int pid_max_min, pid_max_max;
|
extern int pid_max_min, pid_max_max;
|
||||||
extern int percpu_pagelist_fraction;
|
extern int percpu_pagelist_fraction;
|
||||||
@@ -490,6 +493,15 @@ static struct ctl_table kern_table[] = {
|
@@ -489,6 +492,15 @@ static struct ctl_table kern_table[] = {
|
||||||
.mode = 0644,
|
.mode = 0644,
|
||||||
.proc_handler = proc_dointvec,
|
.proc_handler = proc_dointvec,
|
||||||
},
|
},
|
||||||
|
|
|
@ -27,8 +27,8 @@ index 6bf8e87..2f6db83 100644
|
||||||
-include $(objtree)/.config
|
-include $(objtree)/.config
|
||||||
|
|
||||||
include scripts/Kbuild.include
|
include scripts/Kbuild.include
|
||||||
-include $(srctree)/$(obj)/Makefile
|
-include $(src)/Makefile
|
||||||
+-include $(srctree)/$(obj)/Makefile
|
+-include $(src)/Makefile
|
||||||
|
|
||||||
include scripts/Makefile.host
|
include scripts/Makefile.host
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ are set.
|
||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -973,7 +973,7 @@ endif
|
@@ -980,7 +980,7 @@ endif
|
||||||
prepare2: prepare3 outputmakefile asm-generic
|
prepare2: prepare3 outputmakefile asm-generic
|
||||||
|
|
||||||
prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
|
prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
|
||||||
|
@ -18,7 +18,7 @@ are set.
|
||||||
$(cmd_crmodverdir)
|
$(cmd_crmodverdir)
|
||||||
|
|
||||||
archprepare: archheaders archscripts prepare1 scripts_basic
|
archprepare: archheaders archscripts prepare1 scripts_basic
|
||||||
@@ -1005,13 +1005,26 @@ define filechk_version.h
|
@@ -1012,6 +1012,16 @@ define filechk_version.h
|
||||||
echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
|
echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ are set.
|
||||||
$(version_h): $(srctree)/Makefile FORCE
|
$(version_h): $(srctree)/Makefile FORCE
|
||||||
$(call filechk,version.h)
|
$(call filechk,version.h)
|
||||||
$(Q)rm -f $(old_version_h)
|
$(Q)rm -f $(old_version_h)
|
||||||
|
@@ -1019,6 +1029,9 @@ $(version_h): $(srctree)/Makefile FORCE
|
||||||
include/generated/utsrelease.h: include/config/kernel.release FORCE
|
include/generated/utsrelease.h: include/config/kernel.release FORCE
|
||||||
$(call filechk,utsrelease.h)
|
$(call filechk,utsrelease.h)
|
||||||
|
|
||||||
|
@ -114,14 +114,14 @@ are set.
|
||||||
--- a/kernel/printk/printk.c
|
--- a/kernel/printk/printk.c
|
||||||
+++ b/kernel/printk/printk.c
|
+++ b/kernel/printk/printk.c
|
||||||
@@ -46,6 +46,7 @@
|
@@ -46,6 +46,7 @@
|
||||||
#include <linux/irq_work.h>
|
|
||||||
#include <linux/utsname.h>
|
#include <linux/utsname.h>
|
||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
|
#include <linux/uio.h>
|
||||||
+#include <generated/package.h>
|
+#include <generated/package.h>
|
||||||
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
@@ -3034,11 +3035,12 @@ void __init dump_stack_set_arch_desc(con
|
@@ -3036,11 +3037,12 @@ void __init dump_stack_set_arch_desc(con
|
||||||
*/
|
*/
|
||||||
void dump_stack_print_info(const char *log_lvl)
|
void dump_stack_print_info(const char *log_lvl)
|
||||||
{
|
{
|
||||||
|
|
|
@ -80,7 +80,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
struct stat tmpstat;
|
struct stat tmpstat;
|
||||||
|
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
@@ -668,16 +688,18 @@ int main(int ac, char **av)
|
@@ -672,16 +692,18 @@ int main(int ac, char **av)
|
||||||
input_mode = silentoldconfig;
|
input_mode = silentoldconfig;
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case oldconfig:
|
case oldconfig:
|
||||||
|
@ -105,7 +105,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
|
||||||
--- a/scripts/kconfig/confdata.c
|
--- a/scripts/kconfig/confdata.c
|
||||||
+++ b/scripts/kconfig/confdata.c
|
+++ b/scripts/kconfig/confdata.c
|
||||||
@@ -732,6 +732,14 @@ next_menu:
|
@@ -738,6 +738,14 @@ next_menu:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
int conf_write(const char *name)
|
int conf_write(const char *name)
|
||||||
{
|
{
|
||||||
FILE *out;
|
FILE *out;
|
||||||
@@ -1164,7 +1172,10 @@ bool conf_set_all_new_symbols(enum conf_
|
@@ -1170,7 +1178,10 @@ bool conf_set_all_new_symbols(enum conf_
|
||||||
bool has_changed = false;
|
bool has_changed = false;
|
||||||
|
|
||||||
for_all_symbols(i, sym) {
|
for_all_symbols(i, sym) {
|
||||||
|
@ -145,11 +145,11 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
|
||||||
--- a/scripts/kconfig/lkc_proto.h
|
--- a/scripts/kconfig/lkc_proto.h
|
||||||
+++ b/scripts/kconfig/lkc_proto.h
|
+++ b/scripts/kconfig/lkc_proto.h
|
||||||
@@ -7,6 +7,7 @@ P(conf_read_simple,int,(const char *name
|
@@ -7,6 +7,7 @@ int conf_read_simple(const char *name, i
|
||||||
P(conf_write_defconfig,int,(const char *name));
|
int conf_write_defconfig(const char *name);
|
||||||
P(conf_write,int,(const char *name));
|
int conf_write(const char *name);
|
||||||
P(conf_write_autoconf,int,(void));
|
int conf_write_autoconf(void);
|
||||||
+P(conf_write_new_symbol, void,(FILE*, struct symbol*, bool));
|
+void conf_write_new_symbol(FILE*, struct symbol*, bool);
|
||||||
P(conf_get_changed,bool,(void));
|
bool conf_get_changed(void);
|
||||||
P(conf_set_changed_callback, void,(void (*fn)(void)));
|
void conf_set_changed_callback(void (*fn)(void));
|
||||||
P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap)));
|
void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap));
|
||||||
|
|
|
@ -28,7 +28,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
|
||||||
--- a/Documentation/kernel-parameters.txt
|
--- a/Documentation/kernel-parameters.txt
|
||||||
+++ b/Documentation/kernel-parameters.txt
|
+++ b/Documentation/kernel-parameters.txt
|
||||||
@@ -3397,6 +3397,10 @@ bytes respectively. Such letter suffixes
|
@@ -3516,6 +3516,10 @@ bytes respectively. Such letter suffixes
|
||||||
|
|
||||||
switches= [HW,M68k]
|
switches= [HW,M68k]
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
on older distributions. When this option is enabled
|
on older distributions. When this option is enabled
|
||||||
--- a/arch/x86/Kconfig
|
--- a/arch/x86/Kconfig
|
||||||
+++ b/arch/x86/Kconfig
|
+++ b/arch/x86/Kconfig
|
||||||
@@ -2455,6 +2455,14 @@ config X86_X32
|
@@ -2540,6 +2540,14 @@ config X86_X32
|
||||||
elf32_x86_64 support enabled to compile a kernel with this
|
elf32_x86_64 support enabled to compile a kernel with this
|
||||||
option set.
|
option set.
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
# error "The following code assumes __USER32_DS == __USER_DS"
|
# error "The following code assumes __USER32_DS == __USER_DS"
|
||||||
--- a/arch/x86/kernel/entry_64.S
|
--- a/arch/x86/kernel/entry_64.S
|
||||||
+++ b/arch/x86/kernel/entry_64.S
|
+++ b/arch/x86/kernel/entry_64.S
|
||||||
@@ -414,8 +414,12 @@ system_call_fastpath:
|
@@ -252,8 +252,12 @@ system_call_fastpath:
|
||||||
#if __SYSCALL_MASK == ~0
|
#if __SYSCALL_MASK == ~0
|
||||||
cmpq $__NR_syscall_max,%rax
|
cmpq $__NR_syscall_max,%rax
|
||||||
#else
|
#else
|
||||||
|
@ -95,9 +95,9 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
+ .byte P6_NOP4
|
+ .byte P6_NOP4
|
||||||
+system_call_fast_compare_end:
|
+system_call_fast_compare_end:
|
||||||
#endif
|
#endif
|
||||||
ja ret_from_sys_call /* and return regs->ax */
|
ja 1f /* return -ENOSYS (already in pt_regs->ax) */
|
||||||
movq %r10,%rcx
|
movq %r10,%rcx
|
||||||
@@ -520,8 +524,12 @@ tracesys_phase2:
|
@@ -337,8 +341,12 @@ tracesys_phase2:
|
||||||
#if __SYSCALL_MASK == ~0
|
#if __SYSCALL_MASK == ~0
|
||||||
cmpq $__NR_syscall_max,%rax
|
cmpq $__NR_syscall_max,%rax
|
||||||
#else
|
#else
|
||||||
|
@ -110,12 +110,12 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
+ .byte P6_NOP4
|
+ .byte P6_NOP4
|
||||||
+system_call_trace_compare_end:
|
+system_call_trace_compare_end:
|
||||||
#endif
|
#endif
|
||||||
ja int_ret_from_sys_call /* RAX(%rsp) is already set */
|
ja 1f /* return -ENOSYS (already in pt_regs->ax) */
|
||||||
movq %r10,%rcx /* fixup for C */
|
movq %r10,%rcx /* fixup for C */
|
||||||
@@ -593,6 +601,16 @@ int_restore_rest:
|
@@ -488,6 +496,16 @@ opportunistic_sysret_failed:
|
||||||
CFI_ENDPROC
|
|
||||||
END(system_call)
|
END(system_call)
|
||||||
|
|
||||||
|
|
||||||
+#if __SYSCALL_MASK != ~0
|
+#if __SYSCALL_MASK != ~0
|
||||||
+ /* This replaces the usual comparisons if syscall.x32 is set */
|
+ /* This replaces the usual comparisons if syscall.x32 is set */
|
||||||
+ .globl system_call_mask_compare
|
+ .globl system_call_mask_compare
|
||||||
|
|
|
@ -10,19 +10,19 @@ we fail to detect.
|
||||||
|
|
||||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
---
|
---
|
||||||
arch/x86/mm/memtest.c | 2 ++
|
mm/memtest.c | 2 ++
|
||||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
|
--- a/mm/memtest.c
|
||||||
index 92faf3a..ac6bdaa 100644
|
+++ b/mm/memtest.c
|
||||||
--- a/arch/x86/mm/memtest.c
|
@@ -31,6 +31,10 @@ static u64 patterns[] __initdata = {
|
||||||
+++ b/arch/x86/mm/memtest.c
|
|
||||||
@@ -30,6 +30,8 @@ static u64 patterns[] __initdata = {
|
|
||||||
|
|
||||||
static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
|
static void __init reserve_bad_mem(u64 pattern, phys_addr_t start_bad, phys_addr_t end_bad)
|
||||||
{
|
{
|
||||||
|
+#ifdef CONFIG_X86
|
||||||
+ WARN_ONCE(1, "Bad RAM detected. Use memtest86+ to perform a thorough test\n"
|
+ WARN_ONCE(1, "Bad RAM detected. Use memtest86+ to perform a thorough test\n"
|
||||||
+ "and the memmap= parameter to reserve the bad areas.");
|
+ "and the memmap= parameter to reserve the bad areas.");
|
||||||
|
+#endif
|
||||||
printk(KERN_INFO " %016llx bad mem addr %010llx - %010llx reserved\n",
|
printk(KERN_INFO " %016llx bad mem addr %010llx - %010llx reserved\n",
|
||||||
(unsigned long long) pattern,
|
(unsigned long long) pattern,
|
||||||
(unsigned long long) start_bad,
|
(unsigned long long) start_bad,
|
||||||
|
|
|
@ -59,12 +59,7 @@ bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch
|
||||||
bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch
|
bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch
|
||||||
bugfix/all/net-mv643xx-disable-tso-by-default.patch
|
bugfix/all/net-mv643xx-disable-tso-by-default.patch
|
||||||
bugfix/all/vfs-read-file_handle-only-once-in-handle_to_path.patch
|
bugfix/all/vfs-read-file_handle-only-once-in-handle_to_path.patch
|
||||||
bugfix/all/ext4-allocate-entire-range-in-zero-range.patch
|
|
||||||
debian/emmc-don-t-initialize-partitions-on-rpmb-flagged-areas.patch
|
debian/emmc-don-t-initialize-partitions-on-rpmb-flagged-areas.patch
|
||||||
|
|
||||||
# Miscellaneous features
|
# Miscellaneous features
|
||||||
features/all/efi-autoload-efi-pstore.patch
|
features/all/efi-autoload-efi-pstore.patch
|
||||||
bugfix/all/ipv4-missing-sk_nulls_node_init-in-ping_unhash.patch
|
|
||||||
bugfix/all/path_openat-fix-double-fput.patch
|
|
||||||
bugfix/all/mnt-fail-collect_mounts-when-applied-to-unmounted-mo.patch
|
|
||||||
bugfix/all/fs_pin-allow-for-the-possibility-that-m_list-or-s_li.patch
|
|
||||||
|
|
Loading…
Reference in New Issue