Update to 4.16-rc5
This commit is contained in:
parent
b6d7061ed6
commit
3c7088b5cd
|
@ -1,4 +1,6 @@
|
||||||
linux (4.15.4-2) UNRELEASED; urgency=medium
|
linux (4.16~rc5-1~exp1) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release candidate
|
||||||
|
|
||||||
[ Uwe Kleine-König ]
|
[ Uwe Kleine-König ]
|
||||||
* netfilter: enable NFT_FIB_NETDEV as module
|
* netfilter: enable NFT_FIB_NETDEV as module
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
From: Pierre <pinaraf@pinaraf.info>
|
|
||||||
Date: Sun, 12 Nov 2017 15:24:32 +0100
|
|
||||||
Subject: crypto: ecc - Fix NULL pointer deref. on no default_rng
|
|
||||||
Origin: https://git.kernel.org/linus/4c0e22c90510308433272d7ba281b1eb4eda8209
|
|
||||||
Bug-Debian: https://bugs.debian.org/886556
|
|
||||||
|
|
||||||
If crypto_get_default_rng returns an error, the
|
|
||||||
function ecc_gen_privkey should return an error.
|
|
||||||
Instead, it currently tries to use the default_rng
|
|
||||||
nevertheless, thus creating a kernel panic with a
|
|
||||||
NULL pointer dereference.
|
|
||||||
Returning the error directly, as was supposedly
|
|
||||||
intended when looking at the code, fixes this.
|
|
||||||
|
|
||||||
Signed-off-by: Pierre Ducroquet <pinaraf@pinaraf.info>
|
|
||||||
Reviewed-by: PrasannaKumar Muralidharan <prasannatsmkumar@gmail.com>
|
|
||||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
||||||
---
|
|
||||||
crypto/ecc.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/crypto/ecc.c b/crypto/ecc.c
|
|
||||||
index 633a9bcdc574..18f32f2a5e1c 100644
|
|
||||||
--- a/crypto/ecc.c
|
|
||||||
+++ b/crypto/ecc.c
|
|
||||||
@@ -964,7 +964,7 @@ int ecc_gen_privkey(unsigned int curve_id, unsigned int ndigits, u64 *privkey)
|
|
||||||
* DRBG with a security strength of 256.
|
|
||||||
*/
|
|
||||||
if (crypto_get_default_rng())
|
|
||||||
- err = -EFAULT;
|
|
||||||
+ return -EFAULT;
|
|
||||||
|
|
||||||
err = crypto_rng_get_bytes(crypto_default_rng, (u8 *)priv, nbytes);
|
|
||||||
crypto_put_default_rng();
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ correctness.
|
||||||
|
|
||||||
--- a/drivers/net/phy/marvell.c
|
--- a/drivers/net/phy/marvell.c
|
||||||
+++ b/drivers/net/phy/marvell.c
|
+++ b/drivers/net/phy/marvell.c
|
||||||
@@ -956,6 +956,7 @@ static int m88e1118_config_init(struct p
|
@@ -928,6 +928,7 @@ static int m88e1118_config_init(struct p
|
||||||
return genphy_soft_reset(phydev);
|
return genphy_soft_reset(phydev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ correctness.
|
||||||
static int m88e1149_config_init(struct phy_device *phydev)
|
static int m88e1149_config_init(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@@ -981,7 +982,9 @@ static int m88e1149_config_init(struct p
|
@@ -953,7 +954,9 @@ static int m88e1149_config_init(struct p
|
||||||
|
|
||||||
return genphy_soft_reset(phydev);
|
return genphy_soft_reset(phydev);
|
||||||
}
|
}
|
||||||
|
@ -33,8 +33,8 @@ correctness.
|
||||||
+#if 0
|
+#if 0
|
||||||
static int m88e1145_config_init_rgmii(struct phy_device *phydev)
|
static int m88e1145_config_init_rgmii(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
int temp;
|
int err;
|
||||||
@@ -1063,6 +1066,7 @@ static int m88e1145_config_init(struct p
|
@@ -1028,6 +1031,7 @@ static int m88e1145_config_init(struct p
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ correctness.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fiber_lpa_to_ethtool_lpa_t
|
* fiber_lpa_to_ethtool_lpa_t
|
||||||
@@ -2059,6 +2063,7 @@ static struct phy_driver marvell_drivers
|
@@ -2102,6 +2106,7 @@ static struct phy_driver marvell_drivers
|
||||||
.get_strings = marvell_get_strings,
|
.get_strings = marvell_get_strings,
|
||||||
.get_stats = marvell_get_stats,
|
.get_stats = marvell_get_stats,
|
||||||
},
|
},
|
||||||
|
@ -50,7 +50,7 @@ correctness.
|
||||||
{
|
{
|
||||||
.phy_id = MARVELL_PHY_ID_88E1145,
|
.phy_id = MARVELL_PHY_ID_88E1145,
|
||||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||||
@@ -2077,6 +2082,8 @@ static struct phy_driver marvell_drivers
|
@@ -2122,6 +2127,8 @@ static struct phy_driver marvell_drivers
|
||||||
.get_strings = marvell_get_strings,
|
.get_strings = marvell_get_strings,
|
||||||
.get_stats = marvell_get_stats,
|
.get_stats = marvell_get_stats,
|
||||||
},
|
},
|
||||||
|
@ -59,7 +59,7 @@ correctness.
|
||||||
{
|
{
|
||||||
.phy_id = MARVELL_PHY_ID_88E1149R,
|
.phy_id = MARVELL_PHY_ID_88E1149R,
|
||||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||||
@@ -2095,6 +2102,8 @@ static struct phy_driver marvell_drivers
|
@@ -2141,6 +2148,8 @@ static struct phy_driver marvell_drivers
|
||||||
.get_strings = marvell_get_strings,
|
.get_strings = marvell_get_strings,
|
||||||
.get_stats = marvell_get_stats,
|
.get_stats = marvell_get_stats,
|
||||||
},
|
},
|
||||||
|
@ -68,7 +68,7 @@ correctness.
|
||||||
{
|
{
|
||||||
.phy_id = MARVELL_PHY_ID_88E1240,
|
.phy_id = MARVELL_PHY_ID_88E1240,
|
||||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||||
@@ -2113,6 +2122,7 @@ static struct phy_driver marvell_drivers
|
@@ -2160,6 +2169,7 @@ static struct phy_driver marvell_drivers
|
||||||
.get_strings = marvell_get_strings,
|
.get_strings = marvell_get_strings,
|
||||||
.get_stats = marvell_get_stats,
|
.get_stats = marvell_get_stats,
|
||||||
},
|
},
|
||||||
|
@ -76,7 +76,7 @@ correctness.
|
||||||
{
|
{
|
||||||
.phy_id = MARVELL_PHY_ID_88E1116R,
|
.phy_id = MARVELL_PHY_ID_88E1116R,
|
||||||
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
.phy_id_mask = MARVELL_PHY_ID_MASK,
|
||||||
@@ -2240,9 +2250,9 @@ static struct mdio_device_id __maybe_unu
|
@@ -2296,9 +2306,9 @@ static struct mdio_device_id __maybe_unu
|
||||||
{ MARVELL_PHY_ID_88E1111, MARVELL_PHY_ID_MASK },
|
{ MARVELL_PHY_ID_88E1111, MARVELL_PHY_ID_MASK },
|
||||||
{ MARVELL_PHY_ID_88E1118, MARVELL_PHY_ID_MASK },
|
{ MARVELL_PHY_ID_88E1118, MARVELL_PHY_ID_MASK },
|
||||||
{ MARVELL_PHY_ID_88E1121R, MARVELL_PHY_ID_MASK },
|
{ MARVELL_PHY_ID_88E1121R, MARVELL_PHY_ID_MASK },
|
||||||
|
|
|
@ -342,7 +342,7 @@ upstream submission.
|
||||||
card->name, firmware->size);
|
card->name, firmware->size);
|
||||||
--- a/drivers/media/tuners/tuner-xc2028.c
|
--- a/drivers/media/tuners/tuner-xc2028.c
|
||||||
+++ b/drivers/media/tuners/tuner-xc2028.c
|
+++ b/drivers/media/tuners/tuner-xc2028.c
|
||||||
@@ -1370,7 +1370,6 @@ static void load_firmware_cb(const struc
|
@@ -1368,7 +1368,6 @@ static void load_firmware_cb(const struc
|
||||||
|
|
||||||
tuner_dbg("request_firmware_nowait(): %s\n", fw ? "OK" : "error");
|
tuner_dbg("request_firmware_nowait(): %s\n", fw ? "OK" : "error");
|
||||||
if (!fw) {
|
if (!fw) {
|
||||||
|
@ -352,7 +352,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
|
||||||
@@ -2411,12 +2411,9 @@ static int stk9090m_frontend_attach(stru
|
@@ -2415,12 +2415,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);
|
||||||
|
|
||||||
|
@ -367,7 +367,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;
|
||||||
|
|
||||||
@@ -2477,12 +2474,9 @@ static int nim9090md_frontend_attach(str
|
@@ -2481,12 +2478,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);
|
||||||
|
|
||||||
|
@ -705,7 +705,7 @@ upstream submission.
|
||||||
SMS_ALLOC_ALIGNMENT), GFP_KERNEL | GFP_DMA);
|
SMS_ALLOC_ALIGNMENT), GFP_KERNEL | GFP_DMA);
|
||||||
--- a/drivers/media/pci/ttpci/av7110.c
|
--- a/drivers/media/pci/ttpci/av7110.c
|
||||||
+++ b/drivers/media/pci/ttpci/av7110.c
|
+++ b/drivers/media/pci/ttpci/av7110.c
|
||||||
@@ -1515,13 +1515,8 @@ static int get_firmware(struct av7110* a
|
@@ -1516,13 +1516,8 @@ static int get_firmware(struct av7110* a
|
||||||
/* request the av7110 firmware, this will block until someone uploads it */
|
/* request the av7110 firmware, this will block until someone uploads it */
|
||||||
ret = request_firmware(&fw, "dvb-ttpci-01.fw", &av7110->dev->pci->dev);
|
ret = request_firmware(&fw, "dvb-ttpci-01.fw", &av7110->dev->pci->dev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -738,7 +738,7 @@ upstream submission.
|
||||||
release_firmware(fw);
|
release_firmware(fw);
|
||||||
--- a/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
|
--- a/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
|
||||||
+++ b/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
|
+++ b/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
|
||||||
@@ -296,10 +296,8 @@ static int ttusb_boot_dsp(struct ttusb *
|
@@ -295,10 +295,8 @@ static int ttusb_boot_dsp(struct ttusb *
|
||||||
|
|
||||||
err = request_firmware(&fw, "ttusb-budget/dspbootcode.bin",
|
err = request_firmware(&fw, "ttusb-budget/dspbootcode.bin",
|
||||||
&ttusb->dev->dev);
|
&ttusb->dev->dev);
|
||||||
|
@ -752,7 +752,7 @@ upstream submission.
|
||||||
b[0] = 0xaa;
|
b[0] = 0xaa;
|
||||||
--- a/drivers/media/usb/ttusb-dec/ttusb_dec.c
|
--- a/drivers/media/usb/ttusb-dec/ttusb_dec.c
|
||||||
+++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c
|
+++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c
|
||||||
@@ -1344,11 +1344,8 @@ static int ttusb_dec_boot_dsp(struct ttu
|
@@ -1334,11 +1334,8 @@ static int ttusb_dec_boot_dsp(struct ttu
|
||||||
dprintk("%s\n", __func__);
|
dprintk("%s\n", __func__);
|
||||||
|
|
||||||
result = request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev);
|
result = request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev);
|
||||||
|
@ -796,7 +796,7 @@ upstream submission.
|
||||||
fw_data = (void *)fw_entry->data;
|
fw_data = (void *)fw_entry->data;
|
||||||
--- a/drivers/media/pci/bt8xx/bttv-cards.c
|
--- a/drivers/media/pci/bt8xx/bttv-cards.c
|
||||||
+++ b/drivers/media/pci/bt8xx/bttv-cards.c
|
+++ b/drivers/media/pci/bt8xx/bttv-cards.c
|
||||||
@@ -3909,10 +3909,8 @@ static int pvr_boot(struct bttv *btv)
|
@@ -3916,10 +3916,8 @@ static int pvr_boot(struct bttv *btv)
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = request_firmware(&fw_entry, "hcwamc.rbf", &btv->c.pci->dev);
|
rc = request_firmware(&fw_entry, "hcwamc.rbf", &btv->c.pci->dev);
|
||||||
|
@ -1003,7 +1003,7 @@ upstream submission.
|
||||||
|
|
||||||
--- a/drivers/media/usb/s2255/s2255drv.c
|
--- a/drivers/media/usb/s2255/s2255drv.c
|
||||||
+++ b/drivers/media/usb/s2255/s2255drv.c
|
+++ b/drivers/media/usb/s2255/s2255drv.c
|
||||||
@@ -2307,10 +2307,8 @@ static int s2255_probe(struct usb_interf
|
@@ -2306,10 +2306,8 @@ static int s2255_probe(struct usb_interf
|
||||||
}
|
}
|
||||||
/* load the first chunk */
|
/* load the first chunk */
|
||||||
if (request_firmware(&dev->fw_data->fw,
|
if (request_firmware(&dev->fw_data->fw,
|
||||||
|
@ -1017,7 +1017,7 @@ upstream submission.
|
||||||
pdata = (__le32 *) &dev->fw_data->fw->data[fw_size - 8];
|
pdata = (__le32 *) &dev->fw_data->fw->data[fw_size - 8];
|
||||||
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
|
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
|
||||||
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
|
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
|
||||||
@@ -66,10 +66,8 @@ int s5p_mfc_load_firmware(struct s5p_mfc
|
@@ -69,10 +69,8 @@ int s5p_mfc_load_firmware(struct s5p_mfc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1156,7 +1156,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
|
||||||
@@ -13495,11 +13495,8 @@ static int bnx2x_init_firmware(struct bn
|
@@ -13524,11 +13524,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);
|
||||||
|
@ -1171,7 +1171,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
|
||||||
@@ -11355,11 +11355,8 @@ static int tg3_request_firmware(struct t
|
@@ -11378,11 +11378,8 @@ static int tg3_request_firmware(struct t
|
||||||
{
|
{
|
||||||
const struct tg3_firmware_hdr *fw_hdr;
|
const struct tg3_firmware_hdr *fw_hdr;
|
||||||
|
|
||||||
|
@ -1279,7 +1279,7 @@ upstream submission.
|
||||||
for (i = 0; i < fw->size; i++) {
|
for (i = 0; i < fw->size; i++) {
|
||||||
--- a/drivers/net/ethernet/sun/cassini.c
|
--- a/drivers/net/ethernet/sun/cassini.c
|
||||||
+++ b/drivers/net/ethernet/sun/cassini.c
|
+++ b/drivers/net/ethernet/sun/cassini.c
|
||||||
@@ -817,11 +817,8 @@ static void cas_saturn_firmware_init(str
|
@@ -818,11 +818,8 @@ static void cas_saturn_firmware_init(str
|
||||||
return;
|
return;
|
||||||
|
|
||||||
err = request_firmware(&fw, fw_name, &cp->pdev->dev);
|
err = request_firmware(&fw, fw_name, &cp->pdev->dev);
|
||||||
|
@ -1364,7 +1364,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
|
||||||
@@ -1162,9 +1162,6 @@ static void ath9k_hif_usb_firmware_cb(co
|
@@ -1163,9 +1163,6 @@ static void ath9k_hif_usb_firmware_cb(co
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1541,7 +1541,7 @@ upstream submission.
|
||||||
adapter->firmware = firmware;
|
adapter->firmware = firmware;
|
||||||
--- a/drivers/net/wireless/marvell/mwl8k.c
|
--- a/drivers/net/wireless/marvell/mwl8k.c
|
||||||
+++ b/drivers/net/wireless/marvell/mwl8k.c
|
+++ b/drivers/net/wireless/marvell/mwl8k.c
|
||||||
@@ -5714,16 +5714,12 @@ static int mwl8k_firmware_load_success(s
|
@@ -5719,16 +5719,12 @@ static int mwl8k_firmware_load_success(s
|
||||||
static void mwl8k_fw_state_machine(const struct firmware *fw, void *context)
|
static void mwl8k_fw_state_machine(const struct firmware *fw, void *context)
|
||||||
{
|
{
|
||||||
struct mwl8k_priv *priv = context;
|
struct mwl8k_priv *priv = context;
|
||||||
|
@ -1559,7 +1559,7 @@ upstream submission.
|
||||||
priv->fw_helper = fw;
|
priv->fw_helper = fw;
|
||||||
rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode,
|
rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode,
|
||||||
true);
|
true);
|
||||||
@@ -5758,11 +5754,8 @@ static void mwl8k_fw_state_machine(const
|
@@ -5763,11 +5759,8 @@ static void mwl8k_fw_state_machine(const
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FW_STATE_LOADING_ALT:
|
case FW_STATE_LOADING_ALT:
|
||||||
|
@ -1572,7 +1572,7 @@ upstream submission.
|
||||||
priv->fw_ucode = fw;
|
priv->fw_ucode = fw;
|
||||||
rc = mwl8k_firmware_load_success(priv);
|
rc = mwl8k_firmware_load_success(priv);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -5800,10 +5793,8 @@ retry:
|
@@ -5805,10 +5798,8 @@ retry:
|
||||||
|
|
||||||
/* Ask userland hotplug daemon for the device firmware */
|
/* Ask userland hotplug daemon for the device firmware */
|
||||||
rc = mwl8k_request_firmware(priv, fw_image, nowait);
|
rc = mwl8k_request_firmware(priv, fw_image, nowait);
|
||||||
|
@ -1741,7 +1741,7 @@ upstream submission.
|
||||||
wl1251_error("nvs size is not multiple of 32 bits: %zu",
|
wl1251_error("nvs size is not multiple of 32 bits: %zu",
|
||||||
--- a/drivers/net/wireless/ti/wlcore/main.c
|
--- a/drivers/net/wireless/ti/wlcore/main.c
|
||||||
+++ b/drivers/net/wireless/ti/wlcore/main.c
|
+++ b/drivers/net/wireless/ti/wlcore/main.c
|
||||||
@@ -756,10 +756,8 @@ static int wl12xx_fetch_firmware(struct
|
@@ -755,10 +755,8 @@ static int wl12xx_fetch_firmware(struct
|
||||||
|
|
||||||
ret = request_firmware(&fw, fw_name, wl->dev);
|
ret = request_firmware(&fw, fw_name, wl->dev);
|
||||||
|
|
||||||
|
@ -1850,7 +1850,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
|
||||||
@@ -1756,7 +1756,6 @@ bfad_read_firmware(struct pci_dev *pdev,
|
@@ -1755,7 +1755,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)) {
|
||||||
|
@ -1898,7 +1898,7 @@ 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
|
||||||
@@ -6906,8 +6906,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
|
@@ -7238,8 +7238,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) {
|
||||||
|
@ -1907,7 +1907,7 @@ upstream submission.
|
||||||
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;
|
||||||
@@ -7009,8 +7007,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
|
@@ -7341,8 +7339,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) {
|
||||||
|
@ -1933,7 +1933,7 @@ upstream submission.
|
||||||
if (qla82xx_validate_firmware_blob(vha,
|
if (qla82xx_validate_firmware_blob(vha,
|
||||||
--- a/drivers/scsi/qla2xxx/qla_os.c
|
--- a/drivers/scsi/qla2xxx/qla_os.c
|
||||||
+++ b/drivers/scsi/qla2xxx/qla_os.c
|
+++ b/drivers/scsi/qla2xxx/qla_os.c
|
||||||
@@ -6269,8 +6269,6 @@ qla2x00_request_firmware(scsi_qla_host_t
|
@@ -6496,8 +6496,6 @@ qla2x00_request_firmware(scsi_qla_host_t
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
|
if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
|
||||||
|
@ -2015,18 +2015,6 @@ upstream submission.
|
||||||
ret = cypress_load_firmware(usbdev, fw, CYPRESS_FX2);
|
ret = cypress_load_firmware(usbdev, fw, CYPRESS_FX2);
|
||||||
release_firmware(fw);
|
release_firmware(fw);
|
||||||
if (0 != ret) {
|
if (0 != ret) {
|
||||||
--- a/drivers/staging/media/lirc/lirc_zilog.c
|
|
||||||
+++ b/drivers/staging/media/lirc/lirc_zilog.c
|
|
||||||
@@ -752,9 +752,6 @@ static int fw_load(struct IR_tx *tx)
|
|
||||||
/* Request codeset data file */
|
|
||||||
ret = request_firmware(&fw_entry, "haup-ir-blaster.bin", tx->ir->dev);
|
|
||||||
if (ret != 0) {
|
|
||||||
- dev_err(tx->ir->dev,
|
|
||||||
- "firmware haup-ir-blaster.bin not available (%d)\n",
|
|
||||||
- ret);
|
|
||||||
ret = ret < 0 ? ret : -EFAULT;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
--- a/drivers/staging/rtl8192u/r819xU_firmware.c
|
--- a/drivers/staging/rtl8192u/r819xU_firmware.c
|
||||||
+++ b/drivers/staging/rtl8192u/r819xU_firmware.c
|
+++ b/drivers/staging/rtl8192u/r819xU_firmware.c
|
||||||
@@ -245,10 +245,8 @@ bool init_firmware(struct net_device *de
|
@@ -245,10 +245,8 @@ bool init_firmware(struct net_device *de
|
||||||
|
@ -2081,7 +2069,7 @@ upstream submission.
|
||||||
*/
|
*/
|
||||||
--- a/drivers/staging/vt6656/firmware.c
|
--- a/drivers/staging/vt6656/firmware.c
|
||||||
+++ b/drivers/staging/vt6656/firmware.c
|
+++ b/drivers/staging/vt6656/firmware.c
|
||||||
@@ -49,11 +49,8 @@ int vnt_download_firmware(struct vnt_pri
|
@@ -39,11 +39,8 @@ int vnt_download_firmware(struct vnt_pri
|
||||||
dev_dbg(dev, "---->Download firmware\n");
|
dev_dbg(dev, "---->Download firmware\n");
|
||||||
|
|
||||||
rc = request_firmware(&fw, FIRMWARE_NAME, dev);
|
rc = request_firmware(&fw, FIRMWARE_NAME, dev);
|
||||||
|
@ -2168,7 +2156,7 @@ upstream submission.
|
||||||
|
|
||||||
--- a/drivers/usb/atm/cxacru.c
|
--- a/drivers/usb/atm/cxacru.c
|
||||||
+++ b/drivers/usb/atm/cxacru.c
|
+++ b/drivers/usb/atm/cxacru.c
|
||||||
@@ -1082,8 +1082,6 @@ static int cxacru_find_firmware(struct c
|
@@ -1080,8 +1080,6 @@ static int cxacru_find_firmware(struct c
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2505,10 +2493,10 @@ upstream submission.
|
||||||
if (!chip->disabled) {
|
if (!chip->disabled) {
|
||||||
--- a/sound/pci/korg1212/korg1212.c
|
--- a/sound/pci/korg1212/korg1212.c
|
||||||
+++ b/sound/pci/korg1212/korg1212.c
|
+++ b/sound/pci/korg1212/korg1212.c
|
||||||
@@ -2349,7 +2349,6 @@ static int snd_korg1212_create(struct sn
|
@@ -2348,7 +2348,6 @@ static int snd_korg1212_create(struct sn
|
||||||
|
|
||||||
err = request_firmware(&dsp_code, "korg/k1212.dsp", &pci->dev);
|
err = request_firmware(&dsp_code, "korg/k1212.dsp", &pci->dev);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
release_firmware(dsp_code);
|
|
||||||
- snd_printk(KERN_ERR "firmware not available\n");
|
- snd_printk(KERN_ERR "firmware not available\n");
|
||||||
snd_korg1212_free(korg1212);
|
snd_korg1212_free(korg1212);
|
||||||
return err;
|
return err;
|
||||||
|
@ -2576,7 +2564,7 @@ upstream submission.
|
||||||
"too short firmware size %d (expected %d)\n",
|
"too short firmware size %d (expected %d)\n",
|
||||||
--- a/sound/soc/codecs/wm2000.c
|
--- a/sound/soc/codecs/wm2000.c
|
||||||
+++ b/sound/soc/codecs/wm2000.c
|
+++ b/sound/soc/codecs/wm2000.c
|
||||||
@@ -891,10 +891,8 @@ static int wm2000_i2c_probe(struct i2c_c
|
@@ -890,10 +890,8 @@ static int wm2000_i2c_probe(struct i2c_c
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = request_firmware(&fw, filename, &i2c->dev);
|
ret = request_firmware(&fw, filename, &i2c->dev);
|
||||||
|
|
|
@ -23,9 +23,9 @@ format to detect missing firmware.
|
||||||
---
|
---
|
||||||
--- a/drivers/base/firmware_class.c
|
--- a/drivers/base/firmware_class.c
|
||||||
+++ b/drivers/base/firmware_class.c
|
+++ b/drivers/base/firmware_class.c
|
||||||
@@ -450,21 +450,22 @@ fw_get_filesystem_firmware(struct device
|
@@ -443,21 +443,22 @@ fw_get_filesystem_firmware(struct device
|
||||||
rc = kernel_read_file_from_path(path, &buf->data, &size, msize,
|
rc = kernel_read_file_from_path(path, &fw_priv->data, &size,
|
||||||
id);
|
msize, id);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
- if (rc == -ENOENT)
|
- if (rc == -ENOENT)
|
||||||
- dev_dbg(device, "loading %s failed with error %d\n",
|
- dev_dbg(device, "loading %s failed with error %d\n",
|
||||||
|
@ -37,23 +37,23 @@ format to detect missing firmware.
|
||||||
+ path, rc);
|
+ path, rc);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
- dev_dbg(device, "direct-loading %s\n", buf->fw_id);
|
- dev_dbg(device, "direct-loading %s\n", fw_priv->fw_name);
|
||||||
+ dev_info(device, "firmware: direct-loading firmware %s\n",
|
+ dev_info(device, "firmware: direct-loading firmware %s\n",
|
||||||
+ buf->fw_id);
|
+ fw_priv->fw_name);
|
||||||
buf->size = size;
|
fw_priv->size = size;
|
||||||
fw_state_done(&buf->fw_st);
|
fw_state_done(fw_priv);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
__putname(path);
|
__putname(path);
|
||||||
|
|
||||||
+ if (rc)
|
+ if (rc)
|
||||||
+ dev_err(device, "firmware: failed to load %s (%d)\n",
|
+ dev_err(device, "firmware: failed to load %s (%d)\n",
|
||||||
+ buf->fw_id, rc);
|
+ fw_priv->fw_name, rc);
|
||||||
+
|
+
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1112,7 +1113,7 @@ static int fw_load_from_user_helper(stru
|
@@ -1120,7 +1121,7 @@ static int fw_load_from_user_helper(stru
|
||||||
if (opt_flags & FW_OPT_NOWAIT) {
|
if (opt_flags & FW_OPT_NOWAIT) {
|
||||||
timeout = usermodehelper_read_lock_wait(timeout);
|
timeout = usermodehelper_read_lock_wait(timeout);
|
||||||
if (!timeout) {
|
if (!timeout) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ Forwarded: not-needed
|
||||||
|
|
||||||
--- a/.gitignore
|
--- a/.gitignore
|
||||||
+++ b/.gitignore
|
+++ b/.gitignore
|
||||||
@@ -61,23 +61,11 @@ modules.builtin
|
@@ -61,11 +61,6 @@ modules.builtin
|
||||||
/*.spec
|
/*.spec
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -16,8 +16,10 @@ Forwarded: not-needed
|
||||||
-/debian/
|
-/debian/
|
||||||
-
|
-
|
||||||
-#
|
-#
|
||||||
# tar directory (make tar*-pkg)
|
# Snap directory (make snap-pkg)
|
||||||
#
|
#
|
||||||
|
/snap/
|
||||||
|
@@ -76,13 +71,6 @@ modules.builtin
|
||||||
/tar-install/
|
/tar-install/
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -31,10 +33,10 @@ Forwarded: not-needed
|
||||||
# Generated include files
|
# Generated include files
|
||||||
#
|
#
|
||||||
include/config
|
include/config
|
||||||
@@ -122,3 +110,10 @@ all.config
|
@@ -131,3 +119,10 @@ all.config
|
||||||
|
#Automatically generated by ASN.1 compiler
|
||||||
# Kdevelop4
|
net/ipv4/netfilter/nf_nat_snmp_basic-asn1.c
|
||||||
*.kdev4
|
net/ipv4/netfilter/nf_nat_snmp_basic-asn1.h
|
||||||
+
|
+
|
||||||
+#
|
+#
|
||||||
+# Debian packaging: ignore everything at the top level, since it isn't
|
+# Debian packaging: ignore everything at the top level, since it isn't
|
||||||
|
|
|
@ -20,10 +20,11 @@ to avoid when combining the two address mapping APIs. But with XEN
|
||||||
enabled and ARM_LPAE not enabled, as in the armmp config, dma_addr_t
|
enabled and ARM_LPAE not enabled, as in the armmp config, dma_addr_t
|
||||||
is 64-bit while phys_addr_t is 32-bit.
|
is 64-bit while phys_addr_t is 32-bit.
|
||||||
|
|
||||||
It also reverts commit fea20995976f4b2e8968f852a18e280487d42f0d
|
It also reverts commits fea20995976f "gpu: host1x: Free the IOMMU
|
||||||
"gpu: host1x: Free the IOMMU domain when there is no device to attach"
|
domain when there is no device to attach", 8b3f5ac6b55f "gpu: host1x:
|
||||||
and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe
|
Don't fail on NULL bo physical address", 1f876c3fcead "gpu: host1x:
|
||||||
"gpu: host1x: Don't fail on NULL bo physical address" which depend on it.
|
Rewrite conditional for better readability" and 41c3068cc2fd "gpu:
|
||||||
|
host1x: Use IOMMU groups" which depend on it.
|
||||||
|
|
||||||
---
|
---
|
||||||
--- a/drivers/gpu/host1x/cdma.c
|
--- a/drivers/gpu/host1x/cdma.c
|
||||||
|
@ -176,24 +177,31 @@ and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe
|
||||||
|
|
||||||
#include "bus.h"
|
#include "bus.h"
|
||||||
#include "channel.h"
|
#include "channel.h"
|
||||||
@@ -218,37 +217,11 @@ static int host1x_probe(struct platform_
|
@@ -218,44 +217,11 @@ static int host1x_probe(struct platform_
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (iommu_present(&platform_bus_type)) {
|
- host->group = iommu_group_get(&pdev->dev);
|
||||||
|
- if (host->group) {
|
||||||
- struct iommu_domain_geometry *geometry;
|
- struct iommu_domain_geometry *geometry;
|
||||||
- unsigned long order;
|
- unsigned long order;
|
||||||
-
|
-
|
||||||
- host->domain = iommu_domain_alloc(&platform_bus_type);
|
- host->domain = iommu_domain_alloc(&platform_bus_type);
|
||||||
- if (!host->domain)
|
- if (!host->domain) {
|
||||||
- return -ENOMEM;
|
- err = -ENOMEM;
|
||||||
|
- goto put_group;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- err = iommu_attach_group(host->domain, host->group);
|
||||||
|
- if (err) {
|
||||||
|
- if (err == -ENODEV) {
|
||||||
|
- iommu_domain_free(host->domain);
|
||||||
|
- host->domain = NULL;
|
||||||
|
- iommu_group_put(host->group);
|
||||||
|
- host->group = NULL;
|
||||||
|
- goto skip_iommu;
|
||||||
|
- }
|
||||||
-
|
-
|
||||||
- err = iommu_attach_device(host->domain, &pdev->dev);
|
|
||||||
- if (err == -ENODEV) {
|
|
||||||
- iommu_domain_free(host->domain);
|
|
||||||
- host->domain = NULL;
|
|
||||||
- goto skip_iommu;
|
|
||||||
- } else if (err) {
|
|
||||||
- goto fail_free_domain;
|
- goto fail_free_domain;
|
||||||
- }
|
- }
|
||||||
-
|
-
|
||||||
|
@ -215,30 +223,33 @@ and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clk_prepare_enable(host->clk);
|
err = clk_prepare_enable(host->clk);
|
||||||
@@ -293,15 +266,6 @@ fail_unprepare_disable:
|
@@ -300,17 +266,6 @@ fail_unprepare_disable:
|
||||||
clk_disable_unprepare(host->clk);
|
clk_disable_unprepare(host->clk);
|
||||||
fail_free_channels:
|
fail_free_channels:
|
||||||
host1x_channel_list_free(&host->channel_list);
|
host1x_channel_list_free(&host->channel_list);
|
||||||
-fail_detach_device:
|
-fail_detach_device:
|
||||||
- if (host->domain) {
|
- if (host->group && host->domain) {
|
||||||
- put_iova_domain(&host->iova);
|
- put_iova_domain(&host->iova);
|
||||||
- iommu_detach_device(host->domain, &pdev->dev);
|
- iommu_detach_group(host->domain, host->group);
|
||||||
- }
|
- }
|
||||||
-fail_free_domain:
|
-fail_free_domain:
|
||||||
- if (host->domain)
|
- if (host->domain)
|
||||||
- iommu_domain_free(host->domain);
|
- iommu_domain_free(host->domain);
|
||||||
|
-put_group:
|
||||||
|
- iommu_group_put(host->group);
|
||||||
-
|
-
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,12 +279,6 @@ static int host1x_remove(struct platform
|
@@ -324,13 +279,6 @@ static int host1x_remove(struct platform
|
||||||
reset_control_assert(host->rst);
|
reset_control_assert(host->rst);
|
||||||
clk_disable_unprepare(host->clk);
|
clk_disable_unprepare(host->clk);
|
||||||
|
|
||||||
- if (host->domain) {
|
- if (host->domain) {
|
||||||
- put_iova_domain(&host->iova);
|
- put_iova_domain(&host->iova);
|
||||||
- iommu_detach_device(host->domain, &pdev->dev);
|
- iommu_detach_group(host->domain, host->group);
|
||||||
- iommu_domain_free(host->domain);
|
- iommu_domain_free(host->domain);
|
||||||
|
- iommu_group_put(host->group);
|
||||||
- }
|
- }
|
||||||
-
|
-
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -255,10 +266,11 @@ and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/reset.h>
|
#include <linux/reset.h>
|
||||||
|
|
||||||
@@ -117,10 +115,6 @@ struct host1x {
|
@@ -117,11 +115,6 @@ struct host1x {
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
struct reset_control *rst;
|
struct reset_control *rst;
|
||||||
|
|
||||||
|
- struct iommu_group *group;
|
||||||
- struct iommu_domain *domain;
|
- struct iommu_domain *domain;
|
||||||
- struct iova_domain iova;
|
- struct iova_domain iova;
|
||||||
- dma_addr_t iova_end;
|
- dma_addr_t iova_end;
|
||||||
|
|
|
@ -8,9 +8,9 @@ it by default yet.
|
||||||
|
|
||||||
--- a/kernel/sched/autogroup.c
|
--- a/kernel/sched/autogroup.c
|
||||||
+++ b/kernel/sched/autogroup.c
|
+++ b/kernel/sched/autogroup.c
|
||||||
@@ -9,7 +9,7 @@
|
@@ -7,7 +7,7 @@
|
||||||
#include <linux/security.h>
|
|
||||||
#include <linux/export.h>
|
#include "sched.h"
|
||||||
|
|
||||||
-unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
|
-unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
|
||||||
+unsigned int __read_mostly sysctl_sched_autogroup_enabled = 0;
|
+unsigned int __read_mostly sysctl_sched_autogroup_enabled = 0;
|
||||||
|
|
|
@ -9,7 +9,7 @@ are set.
|
||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -1048,7 +1048,7 @@ endif
|
@@ -1087,7 +1087,7 @@ endif
|
||||||
prepare2: prepare3 prepare-compiler-check outputmakefile asm-generic
|
prepare2: prepare3 prepare-compiler-check 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
|
||||||
@@ -1118,6 +1118,16 @@ define filechk_version.h
|
@@ -1168,6 +1168,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)
|
||||||
@@ -1125,6 +1135,9 @@ $(version_h): $(srctree)/Makefile FORCE
|
@@ -1175,6 +1185,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)
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ are set.
|
||||||
printk(KERN_INFO "RSP: %016lx EFLAGS: %08lx\n", PT_REGS_SP(regs),
|
printk(KERN_INFO "RSP: %016lx EFLAGS: %08lx\n", PT_REGS_SP(regs),
|
||||||
--- a/arch/ia64/kernel/process.c
|
--- a/arch/ia64/kernel/process.c
|
||||||
+++ b/arch/ia64/kernel/process.c
|
+++ b/arch/ia64/kernel/process.c
|
||||||
@@ -35,6 +35,7 @@
|
@@ -34,6 +34,7 @@
|
||||||
#include <linux/utsname.h>
|
#include <linux/utsname.h>
|
||||||
#include <linux/tracehook.h>
|
#include <linux/tracehook.h>
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
|
@ -77,7 +77,7 @@ are set.
|
||||||
|
|
||||||
#include <asm/cpu.h>
|
#include <asm/cpu.h>
|
||||||
#include <asm/delay.h>
|
#include <asm/delay.h>
|
||||||
@@ -108,9 +109,9 @@ show_regs (struct pt_regs *regs)
|
@@ -104,9 +105,9 @@ show_regs (struct pt_regs *regs)
|
||||||
print_modules();
|
print_modules();
|
||||||
printk("\n");
|
printk("\n");
|
||||||
show_regs_print_info(KERN_DEFAULT);
|
show_regs_print_info(KERN_DEFAULT);
|
||||||
|
@ -86,20 +86,20 @@ are set.
|
||||||
regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(),
|
regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(),
|
||||||
- init_utsname()->release);
|
- init_utsname()->release);
|
||||||
+ init_utsname()->release, LINUX_PACKAGE_ID);
|
+ init_utsname()->release, LINUX_PACKAGE_ID);
|
||||||
print_symbol("ip is at %s\n", ip);
|
printk("ip is at %pS\n", (void *)ip);
|
||||||
printk("unat: %016lx pfs : %016lx rsc : %016lx\n",
|
printk("unat: %016lx pfs : %016lx rsc : %016lx\n",
|
||||||
regs->ar_unat, regs->ar_pfs, regs->ar_rsc);
|
regs->ar_unat, regs->ar_pfs, regs->ar_rsc);
|
||||||
--- a/arch/powerpc/kernel/process.c
|
--- a/arch/powerpc/kernel/process.c
|
||||||
+++ b/arch/powerpc/kernel/process.c
|
+++ b/arch/powerpc/kernel/process.c
|
||||||
@@ -42,6 +42,7 @@
|
@@ -43,6 +43,7 @@
|
||||||
#include <linux/hw_breakpoint.h>
|
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <linux/elf-randomize.h>
|
#include <linux/elf-randomize.h>
|
||||||
|
#include <linux/pkeys.h>
|
||||||
+#include <generated/package.h>
|
+#include <generated/package.h>
|
||||||
|
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
@@ -1403,8 +1404,9 @@ void show_regs(struct pt_regs * regs)
|
@@ -1404,8 +1405,9 @@ void show_regs(struct pt_regs * regs)
|
||||||
|
|
||||||
printk("NIP: "REG" LR: "REG" CTR: "REG"\n",
|
printk("NIP: "REG" LR: "REG" CTR: "REG"\n",
|
||||||
regs->nip, regs->link, regs->ctr);
|
regs->nip, regs->link, regs->ctr);
|
||||||
|
@ -145,7 +145,7 @@ are set.
|
||||||
|
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <asm/sections.h>
|
#include <asm/sections.h>
|
||||||
@@ -3118,11 +3119,12 @@ void __init dump_stack_set_arch_desc(con
|
@@ -3288,11 +3289,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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,11 +9,9 @@ Patch headers added by debian/patches/features/all/aufs4/gen-patch
|
||||||
SPDX-License-Identifier: GPL-2.0
|
SPDX-License-Identifier: GPL-2.0
|
||||||
aufs4.x-rcN mmap patch
|
aufs4.x-rcN mmap patch
|
||||||
|
|
||||||
diff --git a/fs/proc/base.c b/fs/proc/base.c
|
|
||||||
index 60316b5..ce5314e 100644
|
|
||||||
--- a/fs/proc/base.c
|
--- a/fs/proc/base.c
|
||||||
+++ b/fs/proc/base.c
|
+++ b/fs/proc/base.c
|
||||||
@@ -1987,7 +1987,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
|
@@ -2014,7 +2014,7 @@ static int map_files_get_link(struct den
|
||||||
down_read(&mm->mmap_sem);
|
down_read(&mm->mmap_sem);
|
||||||
vma = find_exact_vma(mm, vm_start, vm_end);
|
vma = find_exact_vma(mm, vm_start, vm_end);
|
||||||
if (vma && vma->vm_file) {
|
if (vma && vma->vm_file) {
|
||||||
|
@ -22,11 +20,9 @@ index 60316b5..ce5314e 100644
|
||||||
path_get(path);
|
path_get(path);
|
||||||
rc = 0;
|
rc = 0;
|
||||||
}
|
}
|
||||||
diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
|
|
||||||
index 7563437..7c0dc0f 100644
|
|
||||||
--- a/fs/proc/nommu.c
|
--- a/fs/proc/nommu.c
|
||||||
+++ b/fs/proc/nommu.c
|
+++ b/fs/proc/nommu.c
|
||||||
@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
|
@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_
|
||||||
file = region->vm_file;
|
file = region->vm_file;
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
|
@ -38,11 +34,9 @@ index 7563437..7c0dc0f 100644
|
||||||
dev = inode->i_sb->s_dev;
|
dev = inode->i_sb->s_dev;
|
||||||
ino = inode->i_ino;
|
ino = inode->i_ino;
|
||||||
}
|
}
|
||||||
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
|
|
||||||
index 339e4c1..1138098 100644
|
|
||||||
--- a/fs/proc/task_mmu.c
|
--- a/fs/proc/task_mmu.c
|
||||||
+++ b/fs/proc/task_mmu.c
|
+++ b/fs/proc/task_mmu.c
|
||||||
@@ -306,7 +306,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
|
@@ -311,7 +311,10 @@ show_map_vma(struct seq_file *m, struct
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
|
@ -54,7 +48,7 @@ index 339e4c1..1138098 100644
|
||||||
dev = inode->i_sb->s_dev;
|
dev = inode->i_sb->s_dev;
|
||||||
ino = inode->i_ino;
|
ino = inode->i_ino;
|
||||||
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
|
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
|
||||||
@@ -1736,7 +1739,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
@@ -1741,7 +1744,7 @@ static int show_numa_map(struct seq_file
|
||||||
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
|
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
|
||||||
struct vm_area_struct *vma = v;
|
struct vm_area_struct *vma = v;
|
||||||
struct numa_maps *md = &numa_priv->md;
|
struct numa_maps *md = &numa_priv->md;
|
||||||
|
@ -63,11 +57,9 @@ index 339e4c1..1138098 100644
|
||||||
struct mm_struct *mm = vma->vm_mm;
|
struct mm_struct *mm = vma->vm_mm;
|
||||||
struct mm_walk walk = {
|
struct mm_walk walk = {
|
||||||
.hugetlb_entry = gather_hugetlb_stats,
|
.hugetlb_entry = gather_hugetlb_stats,
|
||||||
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
|
|
||||||
index 5b62f57..dfb4a3b 100644
|
|
||||||
--- a/fs/proc/task_nommu.c
|
--- a/fs/proc/task_nommu.c
|
||||||
+++ b/fs/proc/task_nommu.c
|
+++ b/fs/proc/task_nommu.c
|
||||||
@@ -156,7 +156,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
|
@@ -156,7 +156,10 @@ static int nommu_vma_show(struct seq_fil
|
||||||
file = vma->vm_file;
|
file = vma->vm_file;
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
|
@ -79,13 +71,11 @@ index 5b62f57..dfb4a3b 100644
|
||||||
dev = inode->i_sb->s_dev;
|
dev = inode->i_sb->s_dev;
|
||||||
ino = inode->i_ino;
|
ino = inode->i_ino;
|
||||||
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
|
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
|
||||||
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
|
||||||
index ea818ff..fbd4799 100644
|
|
||||||
--- a/include/linux/mm.h
|
--- a/include/linux/mm.h
|
||||||
+++ b/include/linux/mm.h
|
+++ b/include/linux/mm.h
|
||||||
@@ -1362,6 +1362,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
|
@@ -1368,6 +1368,28 @@ static inline void unmap_shared_mapping_
|
||||||
|
unmap_mapping_range(mapping, holebegin, holelen, 0);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
+extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int);
|
+extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int);
|
||||||
+extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[],
|
+extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[],
|
||||||
|
@ -109,14 +99,12 @@ index ea818ff..fbd4799 100644
|
||||||
+#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__)
|
+#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__)
|
||||||
+#endif /* !CONFIG_MMU */
|
+#endif /* !CONFIG_MMU */
|
||||||
+
|
+
|
||||||
extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len,
|
extern int access_process_vm(struct task_struct *tsk, unsigned long addr,
|
||||||
unsigned int gup_flags);
|
void *buf, int len, unsigned int gup_flags);
|
||||||
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
|
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
|
||||||
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
|
|
||||||
index cfd0ac4..135e11c 100644
|
|
||||||
--- a/include/linux/mm_types.h
|
--- a/include/linux/mm_types.h
|
||||||
+++ b/include/linux/mm_types.h
|
+++ b/include/linux/mm_types.h
|
||||||
@@ -255,6 +255,7 @@ struct vm_region {
|
@@ -249,6 +249,7 @@ struct vm_region {
|
||||||
unsigned long vm_top; /* region allocated to here */
|
unsigned long vm_top; /* region allocated to here */
|
||||||
unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
|
unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
|
||||||
struct file *vm_file; /* the backing file or NULL */
|
struct file *vm_file; /* the backing file or NULL */
|
||||||
|
@ -124,7 +112,7 @@ index cfd0ac4..135e11c 100644
|
||||||
|
|
||||||
int vm_usage; /* region usage count (access under nommu_region_sem) */
|
int vm_usage; /* region usage count (access under nommu_region_sem) */
|
||||||
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
|
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
|
||||||
@@ -329,6 +330,7 @@ struct vm_area_struct {
|
@@ -323,6 +324,7 @@ struct vm_area_struct {
|
||||||
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
|
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
|
||||||
units */
|
units */
|
||||||
struct file * vm_file; /* File we map to (can be NULL). */
|
struct file * vm_file; /* File we map to (can be NULL). */
|
||||||
|
@ -132,11 +120,9 @@ index cfd0ac4..135e11c 100644
|
||||||
void * vm_private_data; /* was vm_pte (shared mem) */
|
void * vm_private_data; /* was vm_pte (shared mem) */
|
||||||
|
|
||||||
atomic_long_t swap_readahead_info;
|
atomic_long_t swap_readahead_info;
|
||||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
|
||||||
index 432eadf..8b2ba5b 100644
|
|
||||||
--- a/kernel/fork.c
|
--- a/kernel/fork.c
|
||||||
+++ b/kernel/fork.c
|
+++ b/kernel/fork.c
|
||||||
@@ -676,7 +676,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
|
@@ -474,7 +474,7 @@ static __latent_entropy int dup_mmap(str
|
||||||
struct inode *inode = file_inode(file);
|
struct inode *inode = file_inode(file);
|
||||||
struct address_space *mapping = file->f_mapping;
|
struct address_space *mapping = file->f_mapping;
|
||||||
|
|
||||||
|
@ -145,11 +131,9 @@ index 432eadf..8b2ba5b 100644
|
||||||
if (tmp->vm_flags & VM_DENYWRITE)
|
if (tmp->vm_flags & VM_DENYWRITE)
|
||||||
atomic_dec(&inode->i_writecount);
|
atomic_dec(&inode->i_writecount);
|
||||||
i_mmap_lock_write(mapping);
|
i_mmap_lock_write(mapping);
|
||||||
diff --git a/mm/Makefile b/mm/Makefile
|
|
||||||
index e669f02..9c36567 100644
|
|
||||||
--- a/mm/Makefile
|
--- a/mm/Makefile
|
||||||
+++ b/mm/Makefile
|
+++ b/mm/Makefile
|
||||||
@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
|
@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.
|
||||||
mm_init.o mmu_context.o percpu.o slab_common.o \
|
mm_init.o mmu_context.o percpu.o slab_common.o \
|
||||||
compaction.o vmacache.o swap_slots.o \
|
compaction.o vmacache.o swap_slots.o \
|
||||||
interval_tree.o list_lru.o workingset.o \
|
interval_tree.o list_lru.o workingset.o \
|
||||||
|
@ -158,11 +142,9 @@ index e669f02..9c36567 100644
|
||||||
|
|
||||||
obj-y += init-mm.o
|
obj-y += init-mm.o
|
||||||
|
|
||||||
diff --git a/mm/filemap.c b/mm/filemap.c
|
|
||||||
index ee83baa..7677d13 100644
|
|
||||||
--- a/mm/filemap.c
|
--- a/mm/filemap.c
|
||||||
+++ b/mm/filemap.c
|
+++ b/mm/filemap.c
|
||||||
@@ -2704,7 +2704,7 @@ int filemap_page_mkwrite(struct vm_fault *vmf)
|
@@ -2703,7 +2703,7 @@ int filemap_page_mkwrite(struct vm_fault
|
||||||
int ret = VM_FAULT_LOCKED;
|
int ret = VM_FAULT_LOCKED;
|
||||||
|
|
||||||
sb_start_pagefault(inode->i_sb);
|
sb_start_pagefault(inode->i_sb);
|
||||||
|
@ -171,11 +153,9 @@ index ee83baa..7677d13 100644
|
||||||
lock_page(page);
|
lock_page(page);
|
||||||
if (page->mapping != inode->i_mapping) {
|
if (page->mapping != inode->i_mapping) {
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
diff --git a/mm/mmap.c b/mm/mmap.c
|
|
||||||
index a4d5468..cb06cbd 100644
|
|
||||||
--- a/mm/mmap.c
|
--- a/mm/mmap.c
|
||||||
+++ b/mm/mmap.c
|
+++ b/mm/mmap.c
|
||||||
@@ -171,7 +171,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
|
@@ -171,7 +171,7 @@ static struct vm_area_struct *remove_vma
|
||||||
if (vma->vm_ops && vma->vm_ops->close)
|
if (vma->vm_ops && vma->vm_ops->close)
|
||||||
vma->vm_ops->close(vma);
|
vma->vm_ops->close(vma);
|
||||||
if (vma->vm_file)
|
if (vma->vm_file)
|
||||||
|
@ -184,7 +164,7 @@ index a4d5468..cb06cbd 100644
|
||||||
mpol_put(vma_policy(vma));
|
mpol_put(vma_policy(vma));
|
||||||
kmem_cache_free(vm_area_cachep, vma);
|
kmem_cache_free(vm_area_cachep, vma);
|
||||||
return next;
|
return next;
|
||||||
@@ -896,7 +896,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
|
@@ -896,7 +896,7 @@ again:
|
||||||
if (remove_next) {
|
if (remove_next) {
|
||||||
if (file) {
|
if (file) {
|
||||||
uprobe_munmap(next, next->vm_start, next->vm_end);
|
uprobe_munmap(next, next->vm_start, next->vm_end);
|
||||||
|
@ -193,7 +173,7 @@ index a4d5468..cb06cbd 100644
|
||||||
}
|
}
|
||||||
if (next->anon_vma)
|
if (next->anon_vma)
|
||||||
anon_vma_merge(vma, next);
|
anon_vma_merge(vma, next);
|
||||||
@@ -1761,8 +1761,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
|
@@ -1761,8 +1761,8 @@ out:
|
||||||
return addr;
|
return addr;
|
||||||
|
|
||||||
unmap_and_free_vma:
|
unmap_and_free_vma:
|
||||||
|
@ -203,7 +183,7 @@ index a4d5468..cb06cbd 100644
|
||||||
|
|
||||||
/* Undo any partial mapping done by a device driver. */
|
/* Undo any partial mapping done by a device driver. */
|
||||||
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
|
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
|
||||||
@@ -2586,7 +2586,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
@@ -2586,7 +2586,7 @@ int __split_vma(struct mm_struct *mm, st
|
||||||
goto out_free_mpol;
|
goto out_free_mpol;
|
||||||
|
|
||||||
if (new->vm_file)
|
if (new->vm_file)
|
||||||
|
@ -212,7 +192,7 @@ index a4d5468..cb06cbd 100644
|
||||||
|
|
||||||
if (new->vm_ops && new->vm_ops->open)
|
if (new->vm_ops && new->vm_ops->open)
|
||||||
new->vm_ops->open(new);
|
new->vm_ops->open(new);
|
||||||
@@ -2605,7 +2605,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
|
@@ -2605,7 +2605,7 @@ int __split_vma(struct mm_struct *mm, st
|
||||||
if (new->vm_ops && new->vm_ops->close)
|
if (new->vm_ops && new->vm_ops->close)
|
||||||
new->vm_ops->close(new);
|
new->vm_ops->close(new);
|
||||||
if (new->vm_file)
|
if (new->vm_file)
|
||||||
|
@ -221,7 +201,7 @@ index a4d5468..cb06cbd 100644
|
||||||
unlink_anon_vmas(new);
|
unlink_anon_vmas(new);
|
||||||
out_free_mpol:
|
out_free_mpol:
|
||||||
mpol_put(vma_policy(new));
|
mpol_put(vma_policy(new));
|
||||||
@@ -2767,7 +2767,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
@@ -2767,7 +2767,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
unsigned long populate = 0;
|
unsigned long populate = 0;
|
||||||
unsigned long ret = -EINVAL;
|
unsigned long ret = -EINVAL;
|
||||||
|
@ -230,7 +210,7 @@ index a4d5468..cb06cbd 100644
|
||||||
|
|
||||||
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
|
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
|
||||||
current->comm, current->pid);
|
current->comm, current->pid);
|
||||||
@@ -2842,10 +2842,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
|
@@ -2842,10 +2842,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,7 +239,7 @@ index a4d5468..cb06cbd 100644
|
||||||
out:
|
out:
|
||||||
up_write(&mm->mmap_sem);
|
up_write(&mm->mmap_sem);
|
||||||
if (populate)
|
if (populate)
|
||||||
@@ -3153,7 +3170,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
|
@@ -3153,7 +3170,7 @@ struct vm_area_struct *copy_vma(struct v
|
||||||
if (anon_vma_clone(new_vma, vma))
|
if (anon_vma_clone(new_vma, vma))
|
||||||
goto out_free_mempol;
|
goto out_free_mempol;
|
||||||
if (new_vma->vm_file)
|
if (new_vma->vm_file)
|
||||||
|
@ -268,11 +248,9 @@ index a4d5468..cb06cbd 100644
|
||||||
if (new_vma->vm_ops && new_vma->vm_ops->open)
|
if (new_vma->vm_ops && new_vma->vm_ops->open)
|
||||||
new_vma->vm_ops->open(new_vma);
|
new_vma->vm_ops->open(new_vma);
|
||||||
vma_link(mm, new_vma, prev, rb_link, rb_parent);
|
vma_link(mm, new_vma, prev, rb_link, rb_parent);
|
||||||
diff --git a/mm/nommu.c b/mm/nommu.c
|
|
||||||
index 17c00d9..4bcdf94 100644
|
|
||||||
--- a/mm/nommu.c
|
--- a/mm/nommu.c
|
||||||
+++ b/mm/nommu.c
|
+++ b/mm/nommu.c
|
||||||
@@ -641,7 +641,7 @@ static void __put_nommu_region(struct vm_region *region)
|
@@ -641,7 +641,7 @@ static void __put_nommu_region(struct vm
|
||||||
up_write(&nommu_region_sem);
|
up_write(&nommu_region_sem);
|
||||||
|
|
||||||
if (region->vm_file)
|
if (region->vm_file)
|
||||||
|
@ -281,7 +259,7 @@ index 17c00d9..4bcdf94 100644
|
||||||
|
|
||||||
/* IO memory and memory shared directly out of the pagecache
|
/* IO memory and memory shared directly out of the pagecache
|
||||||
* from ramfs/tmpfs mustn't be released here */
|
* from ramfs/tmpfs mustn't be released here */
|
||||||
@@ -799,7 +799,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
|
@@ -799,7 +799,7 @@ static void delete_vma(struct mm_struct
|
||||||
if (vma->vm_ops && vma->vm_ops->close)
|
if (vma->vm_ops && vma->vm_ops->close)
|
||||||
vma->vm_ops->close(vma);
|
vma->vm_ops->close(vma);
|
||||||
if (vma->vm_file)
|
if (vma->vm_file)
|
||||||
|
@ -299,7 +277,7 @@ index 17c00d9..4bcdf94 100644
|
||||||
kmem_cache_free(vm_region_jar, region);
|
kmem_cache_free(vm_region_jar, region);
|
||||||
region = pregion;
|
region = pregion;
|
||||||
result = start;
|
result = start;
|
||||||
@@ -1396,10 +1396,10 @@ unsigned long do_mmap(struct file *file,
|
@@ -1396,10 +1396,10 @@ error_just_free:
|
||||||
up_write(&nommu_region_sem);
|
up_write(&nommu_region_sem);
|
||||||
error:
|
error:
|
||||||
if (region->vm_file)
|
if (region->vm_file)
|
||||||
|
@ -312,9 +290,6 @@ index 17c00d9..4bcdf94 100644
|
||||||
kmem_cache_free(vm_area_cachep, vma);
|
kmem_cache_free(vm_area_cachep, vma);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
diff --git a/mm/prfile.c b/mm/prfile.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..3f56669
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/mm/prfile.c
|
+++ b/mm/prfile.c
|
||||||
@@ -0,0 +1,86 @@
|
@@ -0,0 +1,86 @@
|
||||||
|
|
|
@ -20,11 +20,9 @@ cc: linux-pci@vger.kernel.org
|
||||||
drivers/pci/syscall.c | 3 ++-
|
drivers/pci/syscall.c | 3 ++-
|
||||||
3 files changed, 19 insertions(+), 2 deletions(-)
|
3 files changed, 19 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
|
|
||||||
index 1eecfa301f7f..e1a3b0e765c2 100644
|
|
||||||
--- a/drivers/pci/pci-sysfs.c
|
--- a/drivers/pci/pci-sysfs.c
|
||||||
+++ b/drivers/pci/pci-sysfs.c
|
+++ b/drivers/pci/pci-sysfs.c
|
||||||
@@ -881,6 +881,9 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj,
|
@@ -930,6 +930,9 @@ static ssize_t pci_write_config(struct f
|
||||||
loff_t init_off = off;
|
loff_t init_off = off;
|
||||||
u8 *data = (u8 *) buf;
|
u8 *data = (u8 *) buf;
|
||||||
|
|
||||||
|
@ -34,7 +32,7 @@ index 1eecfa301f7f..e1a3b0e765c2 100644
|
||||||
if (off > dev->cfg_size)
|
if (off > dev->cfg_size)
|
||||||
return 0;
|
return 0;
|
||||||
if (off + count > dev->cfg_size) {
|
if (off + count > dev->cfg_size) {
|
||||||
@@ -1175,6 +1178,9 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
|
@@ -1224,6 +1227,9 @@ static int pci_mmap_resource(struct kobj
|
||||||
enum pci_mmap_state mmap_type;
|
enum pci_mmap_state mmap_type;
|
||||||
struct resource *res = &pdev->resource[bar];
|
struct resource *res = &pdev->resource[bar];
|
||||||
|
|
||||||
|
@ -44,7 +42,7 @@ index 1eecfa301f7f..e1a3b0e765c2 100644
|
||||||
if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start))
|
if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
@@ -1255,6 +1261,9 @@ static ssize_t pci_write_resource_io(struct file *filp, struct kobject *kobj,
|
@@ -1299,6 +1305,9 @@ static ssize_t pci_write_resource_io(str
|
||||||
struct bin_attribute *attr, char *buf,
|
struct bin_attribute *attr, char *buf,
|
||||||
loff_t off, size_t count)
|
loff_t off, size_t count)
|
||||||
{
|
{
|
||||||
|
@ -54,11 +52,9 @@ index 1eecfa301f7f..e1a3b0e765c2 100644
|
||||||
return pci_resource_io(filp, kobj, attr, buf, off, count, true);
|
return pci_resource_io(filp, kobj, attr, buf, off, count, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
|
|
||||||
index 098360d7ff81..a6c53d855daa 100644
|
|
||||||
--- a/drivers/pci/proc.c
|
--- a/drivers/pci/proc.c
|
||||||
+++ b/drivers/pci/proc.c
|
+++ b/drivers/pci/proc.c
|
||||||
@@ -116,6 +116,9 @@ static ssize_t proc_bus_pci_write(struct file *file, const char __user *buf,
|
@@ -117,6 +117,9 @@ static ssize_t proc_bus_pci_write(struct
|
||||||
int size = dev->cfg_size;
|
int size = dev->cfg_size;
|
||||||
int cnt;
|
int cnt;
|
||||||
|
|
||||||
|
@ -68,7 +64,7 @@ index 098360d7ff81..a6c53d855daa 100644
|
||||||
if (pos >= size)
|
if (pos >= size)
|
||||||
return 0;
|
return 0;
|
||||||
if (nbytes >= size)
|
if (nbytes >= size)
|
||||||
@@ -195,6 +198,9 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd,
|
@@ -196,6 +199,9 @@ static long proc_bus_pci_ioctl(struct fi
|
||||||
#endif /* HAVE_PCI_MMAP */
|
#endif /* HAVE_PCI_MMAP */
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
@ -78,7 +74,7 @@ index 098360d7ff81..a6c53d855daa 100644
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case PCIIOC_CONTROLLER:
|
case PCIIOC_CONTROLLER:
|
||||||
ret = pci_domain_nr(dev->bus);
|
ret = pci_domain_nr(dev->bus);
|
||||||
@@ -236,7 +242,8 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
|
@@ -237,7 +243,8 @@ static int proc_bus_pci_mmap(struct file
|
||||||
struct pci_filp_private *fpriv = file->private_data;
|
struct pci_filp_private *fpriv = file->private_data;
|
||||||
int i, ret, write_combine = 0, res_bit = IORESOURCE_MEM;
|
int i, ret, write_combine = 0, res_bit = IORESOURCE_MEM;
|
||||||
|
|
||||||
|
@ -88,11 +84,9 @@ index 098360d7ff81..a6c53d855daa 100644
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
if (fpriv->mmap_state == pci_mmap_io) {
|
if (fpriv->mmap_state == pci_mmap_io) {
|
||||||
diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
|
|
||||||
index 9bf993e1f71e..afa01cc3ceec 100644
|
|
||||||
--- a/drivers/pci/syscall.c
|
--- a/drivers/pci/syscall.c
|
||||||
+++ b/drivers/pci/syscall.c
|
+++ b/drivers/pci/syscall.c
|
||||||
@@ -92,7 +92,8 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
|
@@ -93,7 +93,8 @@ SYSCALL_DEFINE5(pciconfig_write, unsigne
|
||||||
u32 dword;
|
u32 dword;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
|
@ -101,4 +95,4 @@ index 9bf993e1f71e..afa01cc3ceec 100644
|
||||||
+ kernel_is_locked_down("Direct PCI access"))
|
+ kernel_is_locked_down("Direct PCI access"))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
dev = pci_get_bus_and_slot(bus, dfn);
|
dev = pci_get_domain_bus_and_slot(0, bus, dfn);
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
From d67849c340aa803f25a1b3720ba399fecd4f88ab Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jon Hunter <jonathanh@nvidia.com>
|
|
||||||
Date: Tue, 28 Mar 2017 12:48:38 +0100
|
|
||||||
Subject: [PATCH] arm64: tegra: Add CPU and PSCI nodes for NVIDIA Tegra210
|
|
||||||
platforms
|
|
||||||
|
|
||||||
Add the CPU and PSCI nodes for the NVIDIA Tegra210 platforms so that
|
|
||||||
all CPUs can be enabled on boot. This assumes that the PSCI firmware
|
|
||||||
has been loaded during the initial bootstrap on the device before the
|
|
||||||
kernel starts (which is typically the case for these platforms). The
|
|
||||||
PSCI firmware version is set to v0.2 which aligns with the current
|
|
||||||
shipping version for Tegra.
|
|
||||||
|
|
||||||
Reported-by: Martin Michlmayr <tbm@cyrius.com>
|
|
||||||
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
|
|
||||||
Tested-By: Vagrant Cascadian <vagrant@debian.org>
|
|
||||||
Signed-off-by: Thierry Reding <treding@nvidia.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 23 +++++++++++++++++++++++
|
|
||||||
arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi | 23 +++++++++++++++++++++++
|
|
||||||
2 files changed, 46 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
|
|
||||||
index d10d4430537a..212e6634c9ba 100644
|
|
||||||
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
|
|
||||||
@@ -297,6 +297,29 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+ cpus {
|
|
||||||
+ cpu@0 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ cpu@1 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ cpu@2 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ cpu@3 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ psci {
|
|
||||||
+ compatible = "arm,psci-0.2";
|
|
||||||
+ method = "smc";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
regulators {
|
|
||||||
vdd_gpu: regulator@100 {
|
|
||||||
compatible = "pwm-regulator";
|
|
||||||
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
|
|
||||||
index be6066ff97c9..d0dc03923723 100644
|
|
||||||
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
|
|
||||||
@@ -52,4 +52,27 @@
|
|
||||||
clock-frequency = <32768>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+ cpus {
|
|
||||||
+ cpu@0 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ cpu@1 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ cpu@2 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ cpu@3 {
|
|
||||||
+ enable-method = "psci";
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ psci {
|
|
||||||
+ compatible = "arm,psci-0.2";
|
|
||||||
+ method = "smc";
|
|
||||||
+ };
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
|
@ -78,7 +78,6 @@ bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
|
||||||
bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch
|
bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch
|
||||||
bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch
|
bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch
|
||||||
debian/revert-objtool-fix-config_stack_validation-y-warning.patch
|
debian/revert-objtool-fix-config_stack_validation-y-warning.patch
|
||||||
bugfix/all/crypto-ecc-fix-null-pointer-deref.-on-no-default_rng.patch
|
|
||||||
|
|
||||||
# Miscellaneous features
|
# Miscellaneous features
|
||||||
|
|
||||||
|
@ -136,7 +135,4 @@ bugfix/all/cpupower-fix-checks-for-cpu-existence.patch
|
||||||
bugfix/all/lockdep-stub-nmi-watchdog-reset.patch
|
bugfix/all/lockdep-stub-nmi-watchdog-reset.patch
|
||||||
bugfix/arm64/ARM64-dts-meson-reduce-odroid-c2-eMMC-maximum-rate.patch
|
bugfix/arm64/ARM64-dts-meson-reduce-odroid-c2-eMMC-maximum-rate.patch
|
||||||
|
|
||||||
# Backport patches from linux-next (next-20180103) to support SMP on tegra210 systems
|
|
||||||
features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch
|
|
||||||
|
|
||||||
# ABI maintenance
|
# ABI maintenance
|
||||||
|
|
Loading…
Reference in New Issue