Linux 5.4.216
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.216 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/am335x-baltos.dtsi | 2 arch/arm/boot/dts/am335x-boneblack-common.dtsi | 1 arch/arm/boot/dts/am335x-boneblack-wireless.dts | 1 arch/arm/boot/dts/am335x-boneblue.dts | 1 arch/arm/boot/dts/am335x-bonegreen-wireless.dts | 1 arch/arm/boot/dts/am335x-evm.dts | 3 arch/arm/boot/dts/am335x-evmsk.dts | 2 arch/arm/boot/dts/am335x-lxm.dts | 2 arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi | 2 arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts | 2 arch/arm/boot/dts/am335x-pepper.dts | 4 - arch/arm/boot/dts/am335x-phycore-som.dtsi | 2 arch/arm/boot/dts/am33xx-l4.dtsi | 9 -- arch/arm/boot/dts/am33xx.dtsi | 3 arch/arm/boot/dts/am4372.dtsi | 3 arch/arm/boot/dts/am437x-cm-t43.dts | 2 arch/arm/boot/dts/am437x-gp-evm.dts | 4 - arch/arm/boot/dts/am437x-l4.dtsi | 5 - arch/arm/boot/dts/am437x-sk-evm.dts | 2 arch/arm/boot/dts/integratorap.dts | 1 drivers/ata/libata-core.c | 4 + drivers/clk/bcm/clk-iproc-pll.c | 12 ++- drivers/clk/imx/clk-imx6sx.c | 4 - drivers/clk/ingenic/tcu.c | 15 +--- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 13 ---- drivers/input/touchscreen/melfas_mip4.c | 2 drivers/media/dvb-core/dvb_vb2.c | 11 +++ drivers/mmc/host/moxart-mmc.c | 17 ----- drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c | 4 - drivers/net/usb/qmi_wwan.c | 1 drivers/net/usb/usbnet.c | 7 +- drivers/nvme/host/core.c | 9 +- drivers/soc/sunxi/sunxi_sram.c | 27 +++----- drivers/usb/storage/unusual_uas.h | 21 ++++++ fs/ntfs/super.c | 3 mm/madvise.c | 7 +- mm/migrate.c | 5 - mm/page_alloc.c | 65 +++++++++++++++++---- tools/testing/selftests/net/reuseport_bpf.c | 2 40 files changed, 172 insertions(+), 111 deletions(-)
Aidan MacDonald (1):
clk: ingenic-tcu: Properly enable registers before accessing timers
Alistair Popple (1):
mm/migrate_device.c: flush TLB while holding PTL
Brian Norris (1):
Revert "drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time"
Cai Huoqing (1):
soc: sunxi_sram: Make use of the helper function devm_platform_ioremap_resource()
Chaitanya Kulkarni (1):
nvme: add new line after variable declatation
ChenXiaoSong (1):
ntfs: fix BUG_ON in ntfs_lookup_inode_by_name()
Faiz Abbas (1):
ARM: dts: Move am33xx and am43xx mmc nodes to sdhci-omap driver
Florian Fainelli (1):
clk: iproc: Do not rely on node name for correct PLL setup
Frank Wunderlich (1):
net: usb: qmi_wwan: Add new usb-id for Dell branded EM7455
Greg Kroah-Hartman (1):
Linux 5.4.216
Han Xu (1):
clk: imx: imx6sx: remove the SET_RATE_PARENT flag for QSPI clocks
Hangyu Hua (1):
media: dvb_vb2: fix possible out of bound access
Hongling Zeng (3):
uas: add no-uas quirk for Hiksemi usb_disk
usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS
uas: ignore UAS for Thinkplus chips
Linus Walleij (1):
ARM: dts: integrator: Tag PCI host with device_type
Maurizio Lombardi (1):
mm: prevent page_frag_alloc() from corrupting the memory
Mel Gorman (1):
mm/page_alloc: fix race condition between build_all_zonelists and page allocation
Michael Kelley (1):
nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices
Minchan Kim (1):
mm: fix madivse_pageout mishandling on non-LRU page
Niklas Cassel (1):
libata: add ATA_HORKAGE_NOLPM for Pioneer BDR-207M and BDR-205
Peilin Ye (1):
usbnet: Fix memory leak in usbnet_disconnect()
Samuel Holland (4):
soc: sunxi: sram: Actually claim SRAM regions
soc: sunxi: sram: Prevent the driver from being unbound
soc: sunxi: sram: Fix probe function ordering issues
soc: sunxi: sram: Fix debugfs info for A64 SRAM C
Sasha Levin (1):
Revert "net: mvpp2: debugfs: fix memory leak when using debugfs_lookup()"
Sergei Antonov (1):
mmc: moxart: fix 4-bit bus width and remove 8-bit bus width
Wang Yufen (1):
selftests: Fix the if conditions of in test_extra_filter()
Yang Yingliang (1):
Input: melfas_mip4 - fix return value check in mip4_probe()
YuTong Chang (1):
ARM: dts: am33xx: Fix MMCHS0 dma properties
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 215 +SUBLEVEL = 216 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/am335x-baltos.dtsi +1 -1
@@ -381,7 +381,7 @@ &mmc2 { status = "okay"; vmmc-supply = <&wl12xx_vmmc>; - ti,non-removable; + non-removable; bus-width = <4>; cap-power-off-card; pinctrl-names = "default";
arch/arm/boot/dts/am335x-boneblack-common.dtsi +1 -0
@@ -22,6 +22,7 @@ pinctrl-0 = <&emmc_pins>; bus-width = <8>; status = "okay"; + non-removable; }; &am33xx_pinmux {
arch/arm/boot/dts/am335x-boneblack-wireless.dts +0 -1
@@ -75,7 +75,6 @@ bus-width = <4>; non-removable; cap-power-off-card; - ti,needs-special-hs-handling; keep-power-in-suspend; pinctrl-names = "default"; pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
arch/arm/boot/dts/am335x-boneblue.dts +0 -1
@@ -389,7 +389,6 @@ bus-width = <4>; non-removable; cap-power-off-card; - ti,needs-special-hs-handling; keep-power-in-suspend; pinctrl-names = "default"; pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
arch/arm/boot/dts/am335x-bonegreen-wireless.dts +0 -1
@@ -75,7 +75,6 @@ bus-width = <4>; non-removable; cap-power-off-card; - ti,needs-special-hs-handling; keep-power-in-suspend; pinctrl-names = "default"; pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
arch/arm/boot/dts/am335x-evm.dts +1 -2
@@ -782,8 +782,7 @@ bus-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&mmc3_pins &wlan_pins>; - ti,non-removable; - ti,needs-special-hs-handling; + non-removable; cap-power-off-card; keep-power-in-suspend;
arch/arm/boot/dts/am335x-evmsk.dts +1 -1
@@ -700,7 +700,7 @@ &mmc2 { status = "okay"; vmmc-supply = <&wl12xx_vmmc>; - ti,non-removable; + non-removable; bus-width = <4>; cap-power-off-card; keep-power-in-suspend;
arch/arm/boot/dts/am335x-lxm.dts +1 -1
@@ -361,7 +361,7 @@ pinctrl-0 = <&emmc_pins>; vmmc-supply = <&vmmcsd_fixed>; bus-width = <8>; - ti,non-removable; + non-removable; status = "okay"; };
arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi +1 -1
@@ -176,7 +176,7 @@ vmmc-supply = <&vmmcsd_fixed>; bus-width = <8>; pinctrl-0 = <&mmc1_pins_default>; - ti,non-removable; + non-removable; status = "okay"; };
arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts +1 -1
@@ -473,7 +473,7 @@ vmmc-supply = <&vmmcsd_fixed>; bus-width = <8>; pinctrl-0 = <&mmc2_pins_default>; - ti,non-removable; + non-removable; status = "okay"; };
arch/arm/boot/dts/am335x-pepper.dts +2 -2
@@ -341,7 +341,7 @@ pinctrl-0 = <&emmc_pins>; vmmc-supply = <&ldo3_reg>; bus-width = <8>; - ti,non-removable; + non-removable; }; &mmc3 {
@@ -351,7 +351,7 @@ pinctrl-0 = <&wireless_pins>; vmmmc-supply = <&v3v3c_reg>; bus-width = <4>; - ti,non-removable; + non-removable; dmas = <&edma_xbar 12 0 1 &edma_xbar 13 0 2>; dma-names = "tx", "rx";
arch/arm/boot/dts/am335x-phycore-som.dtsi +1 -1
@@ -69,7 +69,7 @@ pinctrl-0 = <&emmc_pins>; vmmc-supply = <&vmmc_reg>; bus-width = <8>; - ti,non-removable; + non-removable; status = "disabled"; };
arch/arm/boot/dts/am33xx-l4.dtsi +3 -6
@@ -1333,12 +1333,9 @@ ranges = <0x0 0x60000 0x1000>; mmc1: mmc@0 { - compatible = "ti,omap4-hsmmc"; - ti,dual-volt; + compatible = "ti,am335-sdhci"; ti,needs-special-reset; - ti,needs-special-hs-handling; - dmas = <&edma_xbar 24 0 0 - &edma_xbar 25 0 0>; + dmas = <&edma 24 0>, <&edma 25 0>; dma-names = "tx", "rx"; interrupts = <64>; reg = <0x0 0x1000>;
@@ -1827,7 +1824,7 @@ ranges = <0x0 0xd8000 0x1000>; mmc2: mmc@0 { - compatible = "ti,omap4-hsmmc"; + compatible = "ti,am335-sdhci"; ti,needs-special-reset; dmas = <&edma 2 0 &edma 3 0>;
arch/arm/boot/dts/am33xx.dtsi +2 -1
@@ -259,10 +259,11 @@ ranges = <0x0 0x47810000 0x1000>; mmc3: mmc@0 { - compatible = "ti,omap4-hsmmc"; + compatible = "ti,am335-sdhci"; ti,needs-special-reset; interrupts = <29>; reg = <0x0 0x1000>; + status = "disabled"; }; };
arch/arm/boot/dts/am4372.dtsi +2 -1
@@ -250,10 +250,11 @@ ranges = <0x0 0x47810000 0x1000>; mmc3: mmc@0 { - compatible = "ti,omap4-hsmmc"; + compatible = "ti,am437-sdhci"; ti,needs-special-reset; interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; reg = <0x0 0x1000>; + status = "disabled"; }; };
arch/arm/boot/dts/am437x-cm-t43.dts +1 -1
@@ -291,7 +291,7 @@ pinctrl-0 = <&emmc_pins>; vmmc-supply = <&vmmc_3v3>; bus-width = <8>; - ti,non-removable; + non-removable; }; &spi0 {
arch/arm/boot/dts/am437x-gp-evm.dts +2 -2
@@ -872,7 +872,7 @@ pinctrl-names = "default", "sleep"; pinctrl-0 = <&emmc_pins_default>; pinctrl-1 = <&emmc_pins_sleep>; - ti,non-removable; + non-removable; }; &mmc3 {
@@ -889,7 +889,7 @@ pinctrl-1 = <&mmc3_pins_sleep>; cap-power-off-card; keep-power-in-suspend; - ti,non-removable; + non-removable; #address-cells = <1>; #size-cells = <0>;
arch/arm/boot/dts/am437x-l4.dtsi +2 -3
@@ -1104,9 +1104,8 @@ ranges = <0x0 0x60000 0x1000>; mmc1: mmc@0 { - compatible = "ti,omap4-hsmmc"; + compatible = "ti,am437-sdhci"; reg = <0x0 0x1000>; - ti,dual-volt; ti,needs-special-reset; dmas = <&edma 24 0>, <&edma 25 0>;
@@ -1641,7 +1640,7 @@ ranges = <0x0 0xd8000 0x1000>; mmc2: mmc@0 { - compatible = "ti,omap4-hsmmc"; + compatible = "ti,am437-sdhci"; reg = <0x0 0x1000>; ti,needs-special-reset; dmas = <&edma 2 0>,
arch/arm/boot/dts/am437x-sk-evm.dts +1 -1
@@ -694,7 +694,7 @@ pinctrl-1 = <&mmc3_pins_sleep>; cap-power-off-card; keep-power-in-suspend; - ti,non-removable; + non-removable; #address-cells = <1>; #size-cells = <0>;
arch/arm/boot/dts/integratorap.dts +1 -0
@@ -155,6 +155,7 @@ pci: pciv3@62000000 { compatible = "arm,integrator-ap-pci", "v3,v360epc-pci"; + device_type = "pci"; #interrupt-cells = <1>; #size-cells = <2>; #address-cells = <3>;
drivers/ata/libata-core.c +4 -0
@@ -4542,6 +4542,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { { "PIONEER DVD-RW DVR-212D", NULL, ATA_HORKAGE_NOSETXFER }, { "PIONEER DVD-RW DVR-216D", NULL, ATA_HORKAGE_NOSETXFER }, +/* These specific Pioneer models have LPM issues */ + { "PIONEER BD-RW BDR-207M", NULL, ATA_HORKAGE_NOLPM }, + { "PIONEER BD-RW BDR-205", NULL, ATA_HORKAGE_NOLPM }, +/* Crucial BX100 SSD 500GB has broken LPM support */ { "CT500BX100SSD1", NULL, ATA_HORKAGE_NOLPM },
drivers/clk/bcm/clk-iproc-pll.c +8 -4
@@ -736,6 +736,7 @@ void iproc_pll_clk_setup(struct device_node *node,const char *parent_name;struct iproc_clk *iclk_array;struct clk_hw_onecell_data *clk_data; +const char *clk_name;if (WARN_ON (!pll_ctrl) ||WARN_ON (!clk_ctrl))return ;
@@ -783,7 +784,12 @@ void iproc_pll_clk_setup(struct device_node *node, iclk = &iclk_array[0 ]; iclk->pll = pll; - init.name = node->name; + ret =of_property_read_string_index (node,"clock-output-names" , +0 , &clk_name); +if (WARN_ON (ret)) + goto err_pll_register; + + init.name = clk_name; init.ops = &iproc_pll_ops; init.flags =0 ; parent_name =of_clk_get_parent_name (node,0 );
@@ -803,13 +809,11 @@ void iproc_pll_clk_setup(struct device_node *node, goto err_pll_register; clk_data->hws[0 ] = &iclk->hw; + parent_name = clk_name;/* now initialize and register all leaf clocks */ for (i =1 ; i < num_clks; i++) { -const char *clk_name; -memset (&init,0 ,sizeof (init)); - parent_name = node->name; ret =of_property_read_string_index (node,"clock-output-names" , i, &clk_name);
drivers/clk/imx/clk-imx6sx.c +2 -2
@@ -287,13 +287,13 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node) hws[IMX6SX_CLK_SSI3_SEL ] =imx_clk_hw_mux ("ssi3_sel" , base +0x1c ,14 ,2 , ssi_sels,ARRAY_SIZE (ssi_sels)); hws[IMX6SX_CLK_SSI2_SEL ] =imx_clk_hw_mux ("ssi2_sel" , base +0x1c ,12 ,2 , ssi_sels,ARRAY_SIZE (ssi_sels)); hws[IMX6SX_CLK_SSI1_SEL ] =imx_clk_hw_mux ("ssi1_sel" , base +0x1c ,10 ,2 , ssi_sels,ARRAY_SIZE (ssi_sels)); - hws[IMX6SX_CLK_QSPI1_SEL ] =imx_clk_hw_mux_flags ("qspi1_sel" , base +0x1c ,7 ,3 , qspi1_sels,ARRAY_SIZE (qspi1_sels),CLK_SET_RATE_PARENT ); + hws[IMX6SX_CLK_QSPI1_SEL ] =imx_clk_hw_mux ("qspi1_sel" , base +0x1c ,7 ,3 , qspi1_sels,ARRAY_SIZE (qspi1_sels)); hws[IMX6SX_CLK_PERCLK_SEL ] =imx_clk_hw_mux ("perclk_sel" , base +0x1c ,6 ,1 , perclk_sels,ARRAY_SIZE (perclk_sels)); hws[IMX6SX_CLK_VID_SEL ] =imx_clk_hw_mux ("vid_sel" , base +0x20 ,21 ,3 , vid_sels,ARRAY_SIZE (vid_sels)); hws[IMX6SX_CLK_ESAI_SEL ] =imx_clk_hw_mux ("esai_sel" , base +0x20 ,19 ,2 , audio_sels,ARRAY_SIZE (audio_sels)); hws[IMX6SX_CLK_CAN_SEL ] =imx_clk_hw_mux ("can_sel" , base +0x20 ,8 ,2 , can_sels,ARRAY_SIZE (can_sels)); hws[IMX6SX_CLK_UART_SEL ] =imx_clk_hw_mux ("uart_sel" , base +0x24 ,6 ,1 , uart_sels,ARRAY_SIZE (uart_sels)); - hws[IMX6SX_CLK_QSPI2_SEL ] =imx_clk_hw_mux_flags ("qspi2_sel" , base +0x2c ,15 ,3 , qspi2_sels,ARRAY_SIZE (qspi2_sels),CLK_SET_RATE_PARENT ); + hws[IMX6SX_CLK_QSPI2_SEL ] =imx_clk_hw_mux ("qspi2_sel" , base +0x2c ,15 ,3 , qspi2_sels,ARRAY_SIZE (qspi2_sels)); hws[IMX6SX_CLK_SPDIF_SEL ] =imx_clk_hw_mux ("spdif_sel" , base +0x30 ,20 ,2 , audio_sels,ARRAY_SIZE (audio_sels)); hws[IMX6SX_CLK_AUDIO_SEL ] =imx_clk_hw_mux ("audio_sel" , base +0x30 ,7 ,2 , audio_sels,ARRAY_SIZE (audio_sels)); hws[IMX6SX_CLK_ENET_PRE_SEL ] =imx_clk_hw_mux ("enet_pre_sel" , base +0x34 ,15 ,3 , enet_pre_sels,ARRAY_SIZE (enet_pre_sels));
drivers/clk/ingenic/tcu.c +5 -10
@@ -100,15 +100,11 @@ static bool ingenic_tcu_enable_regs(struct clk_hw *hw)bool enabled = false;/* -* If the SoC has no global TCU clock, we must ungate the channel's -* clock to be able to access its registers. -* If we have a TCU clock, it will be enabled automatically as it has -* been attached to the regmap. +* According to the programming manual, a timer channel's registers can +* only be accessed when the channel's stop bit is clear. */ -if (!tcu->clk) { - enabled = !!ingenic_tcu_is_enabled (hw); -regmap_write (tcu->map,TCU_REG_TSCR ,BIT (info->gate_bit)); - } + enabled = !!ingenic_tcu_is_enabled (hw); +regmap_write (tcu->map,TCU_REG_TSCR ,BIT (info->gate_bit));return enabled; }
@@ -119,8 +115,7 @@ static void ingenic_tcu_disable_regs(struct clk_hw *hw)const struct ingenic_tcu_clk_info *info = tcu_clk->info;struct ingenic_tcu *tcu = tcu_clk->tcu; -if (!tcu->clk) -regmap_write (tcu->map,TCU_REG_TSSR ,BIT (info->gate_bit)); +regmap_write (tcu->map,TCU_REG_TSSR ,BIT (info->gate_bit)); }static u8 ingenic_tcu_get_parent (struct clk_hw *hw)
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +0 -13
@@ -1823,12 +1823,6 @@ EXPORT_SYMBOL_GPL(analogix_dp_remove);int analogix_dp_suspend (struct analogix_dp_device *dp) {clk_disable_unprepare (dp->clock); - -if (dp->plat_data->panel) { -if (drm_panel_unprepare (dp->plat_data->panel)) -DRM_ERROR ("failed to turnoff the panel\n" ); - } -return 0 ; }EXPORT_SYMBOL_GPL (analogix_dp_suspend);
@@ -1843,13 +1837,6 @@ int analogix_dp_resume(struct analogix_dp_device *dp)return ret; } -if (dp->plat_data->panel) { -if (drm_panel_prepare (dp->plat_data->panel)) { -DRM_ERROR ("failed to setup the panel\n" ); -return -EBUSY ; - } - } -return 0 ; }EXPORT_SYMBOL_GPL (analogix_dp_resume);
drivers/input/touchscreen/melfas_mip4.c +1 -1
@@ -1453,7 +1453,7 @@ static int mip4_probe(struct i2c_client *client, const struct i2c_device_id *id) "ce", GPIOD_OUT_LOW);if (IS_ERR (ts->gpio_ce)) { error =PTR_ERR (ts->gpio_ce); -if (error !=EPROBE_DEFER ) +if (error != -EPROBE_DEFER )dev_err (&client->dev,"Failed to get gpio: %d\n" , error);return error;
drivers/media/dvb-core/dvb_vb2.c +11 -0
@@ -358,6 +358,12 @@ int dvb_vb2_reqbufs(struct dvb_vb2_ctx *ctx, struct dmx_requestbuffers *req)int dvb_vb2_querybuf (struct dvb_vb2_ctx *ctx,struct dmx_buffer *b) { +struct vb2_queue *q = &ctx->vb_q; + +if (b->index >= q->num_buffers) { +dprintk (1 ,"[%s] buffer index out of range\n" , ctx->name); +return -EINVAL ; + }vb2_core_querybuf (&ctx->vb_q, b->index, b);dprintk (3 ,"[%s] index=%d\n" , ctx->name, b->index);return 0 ;
@@ -382,8 +388,13 @@ int dvb_vb2_expbuf(struct dvb_vb2_ctx *ctx, struct dmx_exportbuffer *exp)int dvb_vb2_qbuf (struct dvb_vb2_ctx *ctx,struct dmx_buffer *b) { +struct vb2_queue *q = &ctx->vb_q;int ret; +if (b->index >= q->num_buffers) { +dprintk (1 ,"[%s] buffer index out of range\n" , ctx->name); +return -EINVAL ; + } ret =vb2_core_qbuf (&ctx->vb_q, b->index, b,NULL );if (ret) { dprintk(1, "[%s] index=%d errno=%d\n", ctx->name,
drivers/mmc/host/moxart-mmc.c +3 -14
@@ -111,8 +111,8 @@#define CLK_DIV_MASK 0x7f/* REG_BUS_WIDTH */ -#define BUS_WIDTH_8 BIT(2) -#define BUS_WIDTH_4 BIT(1) +#define BUS_WIDTH_4_SUPPORT BIT(3) +#define BUS_WIDTH_4 BIT(2)#define BUS_WIDTH_1 BIT(0)#define MMC_VDD_360 23
@@ -527,9 +527,6 @@ static void moxart_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)case MMC_BUS_WIDTH_4 :writel (BUS_WIDTH_4 , host->base +REG_BUS_WIDTH );break ; -case MMC_BUS_WIDTH_8 : -writel (BUS_WIDTH_8 , host->base +REG_BUS_WIDTH ); -break ;default :writel (BUS_WIDTH_1 , host->base +REG_BUS_WIDTH );break ;
@@ -646,16 +643,8 @@ static int moxart_probe(struct platform_device *pdev)dmaengine_slave_config (host->dma_chan_rx, &cfg); } -switch ((readl (host->base +REG_BUS_WIDTH ) >>3 ) &3 ) { -case 1 : +if (readl (host->base +REG_BUS_WIDTH ) &BUS_WIDTH_4_SUPPORT ) mmc->caps |=MMC_CAP_4_BIT_DATA ; -break ; -case 2 : - mmc->caps |=MMC_CAP_4_BIT_DATA |MMC_CAP_8_BIT_DATA ; -break ; -default : -break ; - }writel (0 , host->base +REG_INTERRUPT_MASK );
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c +2 -2
@@ -700,10 +700,10 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *priv)void mvpp2_dbgfs_init (struct mvpp2 *priv,const char *name) { -static struct dentry *mvpp2_root; -struct dentry *mvpp2_dir; +struct dentry *mvpp2_dir, *mvpp2_root;int ret, i; + mvpp2_root =debugfs_lookup (MVPP2_DRIVER_NAME ,NULL );if (!mvpp2_root) mvpp2_root =debugfs_create_dir (MVPP2_DRIVER_NAME ,NULL );
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1354,6 +1354,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x413c, 0x81b3, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ {QMI_FIXED_INTF(0x413c, 0x81b6, 8)}, /* Dell Wireless 5811e */ {QMI_FIXED_INTF(0x413c, 0x81b6, 10)}, /* Dell Wireless 5811e */ + {QMI_FIXED_INTF(0x413c, 0x81c2, 8)}, /* Dell Wireless 5811e */ {QMI_FIXED_INTF(0x413c, 0x81cc, 8)}, /* Dell Wireless 5816e */ {QMI_FIXED_INTF(0x413c, 0x81d7, 0)}, /* Dell Wireless 5821e */ {QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e preproduction config */
drivers/net/usb/usbnet.c +6 -1
@@ -1585,6 +1585,7 @@ void usbnet_disconnect (struct usb_interface *intf)struct usbnet *dev;struct usb_device *xdev;struct net_device *net; +struct urb *urb; dev =usb_get_intfdata (intf);usb_set_intfdata (intf,NULL );
@@ -1601,7 +1602,11 @@ void usbnet_disconnect (struct usb_interface *intf) net = dev->net;unregister_netdev (net); -usb_scuttle_anchored_urbs (&dev->deferred); +while ((urb =usb_get_from_anchor (&dev->deferred))) { +dev_kfree_skb (urb->context); +kfree (urb->sg); +usb_free_urb (urb); + }if (dev->driver_info->unbind) dev->driver_info->unbind (dev, intf);
drivers/nvme/host/core.c +6 -3
@@ -2018,18 +2018,21 @@ static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new, enum pr_type type, bool abort) {u32 cdw10 =nvme_pr_type (type) <<8 | (abort ?2 :1 ); +return nvme_pr_command (bdev, cdw10, old, new, nvme_cmd_resv_acquire); }static int nvme_pr_clear (struct block_device *bdev,u64 key) { -u32 cdw10 =1 | (key ?1 <<3 :0 ); -return nvme_pr_command (bdev, cdw10, key,0 , nvme_cmd_resv_register); +u32 cdw10 =1 | (key ?0 :1 <<3 ); + +return nvme_pr_command (bdev, cdw10, key,0 , nvme_cmd_resv_release); }static int nvme_pr_release (struct block_device *bdev,u64 key,enum pr_type type) { -u32 cdw10 =nvme_pr_type (type) <<8 | (key ?1 <<3 :0 ); +u32 cdw10 =nvme_pr_type (type) <<8 | (key ?0 :1 <<3 ); +return nvme_pr_command (bdev, cdw10, key,0 , nvme_cmd_resv_release); }
drivers/soc/sunxi/sunxi_sram.c +11 -16
@@ -78,8 +78,8 @@ static struct sunxi_sram_desc sun4i_a10_sram_d = {static struct sunxi_sram_desc sun50i_a64_sram_c = { .data =SUNXI_SRAM_DATA ("C" ,0x4 ,24 ,1 , -SUNXI_SRAM_MAP (0 ,1 ,"cpu" ), -SUNXI_SRAM_MAP (1 ,0 ,"de2" )), +SUNXI_SRAM_MAP (1 ,0 ,"cpu" ), +SUNXI_SRAM_MAP (0 ,1 ,"de2" )), };static const struct of_device_id sunxi_sram_dt_ids[] = {
@@ -254,6 +254,7 @@ int sunxi_sram_claim(struct device *dev)writel (val | ((device << sram_data->offset) & mask), base + sram_data->reg); + sram_desc->claimed = true;spin_unlock (&sram_lock);return 0 ;
@@ -318,12 +319,11 @@ static struct regmap_config sunxi_sram_emac_clock_regmap = { .writeable_reg = sunxi_sram_regmap_accessible_reg, }; -static int sunxi_sram_probe (struct platform_device *pdev) +static int __init sunxi_sram_probe (struct platform_device *pdev) { -struct resource *res; -struct dentry *d;struct regmap *emac_clock;const struct sunxi_sramc_variant *variant; +struct device *dev = &pdev->dev; sram_dev = &pdev->dev;
@@ -331,18 +331,10 @@ static int sunxi_sram_probe(struct platform_device *pdev)if (!variant)return -EINVAL ; - res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); - base =devm_ioremap_resource (&pdev->dev, res); + base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (base))return PTR_ERR (base); -of_platform_populate (pdev->dev.of_node,NULL ,NULL , &pdev->dev); - - d =debugfs_create_file ("sram" ,S_IRUGO ,NULL ,NULL , - &sunxi_sram_fops); -if (!d) -return -ENOMEM ; -if (variant->has_emac_clock) { emac_clock =devm_regmap_init_mmio (&pdev->dev, base, &sunxi_sram_emac_clock_regmap);
@@ -351,6 +343,10 @@ static int sunxi_sram_probe(struct platform_device *pdev)return PTR_ERR (emac_clock); } +of_platform_populate (dev->of_node,NULL ,NULL , dev); + +debugfs_create_file ("sram" ,0444 ,NULL ,NULL , &sunxi_sram_fops); +return 0 ; }
@@ -396,9 +392,8 @@ static struct platform_driver sunxi_sram_driver = { .name = "sunxi-sram", .of_match_table = sunxi_sram_dt_match, }, - .probe = sunxi_sram_probe, }; -module_platform_driver (sunxi_sram_driver); +builtin_platform_driver_probe (sunxi_sram_driver, sunxi_sram_probe);MODULE_AUTHOR ("Maxime Ripard <[email protected]>" );MODULE_DESCRIPTION ("Allwinner sunXi SRAM Controller Driver" );
drivers/usb/storage/unusual_uas.h +21 -0
@@ -52,6 +52,13 @@ UNUSUAL_DEV(0x059f, 0x1061, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME), +/* Reported-by: Hongling Zeng <[email protected]> */ +UNUSUAL_DEV (0x090c ,0x2000 ,0x0000 ,0x9999 , +"Hiksemi" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , + US_FL_IGNORE_UAS), +/* * Apricorn USB3 dongle sometimes returns "USBSUSBSUSBS" in response to SCSI * commands in UAS mode. Observed with the 1.28 firmware; are there others?
@@ -76,6 +83,13 @@ UNUSUAL_DEV(0x0bc2, 0x331a, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_REPORT_LUNS), +/* Reported-by: Hongling Zeng <[email protected]> */ +UNUSUAL_DEV (0x0bda ,0x9210 ,0x0000 ,0x9999 , +"Hiksemi" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_IGNORE_UAS ), +/* Reported-by: Benjamin Tissoires <[email protected]> */ UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999, "Initio Corporation",
@@ -118,6 +132,13 @@ UNUSUAL_DEV(0x154b, 0xf00d, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_ATA_1X), +/* Reported-by: Hongling Zeng <[email protected]> */ +UNUSUAL_DEV (0x17ef ,0x3899 ,0x0000 ,0x9999 , +"Thinkplus" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_IGNORE_UAS ), +/* Reported-by: Hans de Goede <[email protected]> */ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999, "VIA",
fs/ntfs/super.c +2 -1
@@ -2092,7 +2092,8 @@ static bool load_system_files(ntfs_volume *vol)// TODO: Initialize security. /* Get the extended system files' directory inode. */ vol->extend_ino =ntfs_iget (sb, FILE_Extend); -if (IS_ERR (vol->extend_ino) ||is_bad_inode (vol->extend_ino)) { +if (IS_ERR (vol->extend_ino) ||is_bad_inode (vol->extend_ino) || + !S_ISDIR (vol->extend_ino->i_mode)) {if (!IS_ERR (vol->extend_ino))iput (vol->extend_ino);ntfs_error (sb,"Failed to load $Extend." );
mm/madvise.c +5 -2
@@ -428,8 +428,11 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,continue ; } -/* Do not interfere with other mappings of this page */ -if (page_mapcount (page) !=1 ) +/* +* Do not interfere with other mappings of this page and +* non-LRU page. +*/ +if (!PageLRU (page) ||page_mapcount (page) !=1 )continue ;VM_BUG_ON_PAGE (PageTransCompound (page), page);
mm/migrate.c +3 -2
@@ -2343,13 +2343,14 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, migrate->dst[migrate->npages] =0 ; migrate->src[migrate->npages++] = mpfn; } -arch_leave_lazy_mmu_mode (); -pte_unmap_unlock (ptep -1 , ptl);/* Only flush the TLB if we actually modified any entries */ if (unmapped)flush_tlb_range (walk->vma, start, end); +arch_leave_lazy_mmu_mode (); +pte_unmap_unlock (ptep -1 , ptl); +return 0 ; }
mm/page_alloc.c +55 -10
118 lines not on this page · raw message
tools/testing/selftests/net/reuseport_bpf.c +1 -1
@@ -330,7 +330,7 @@ static void test_extra_filter(const struct test_params p)if (bind (fd1, addr,sockaddr_size ()))error (1 , errno,"failed to bind recv socket 1" ); -if (!bind (fd2, addr,sockaddr_size ()) && errno !=EADDRINUSE ) +if (!bind (fd2, addr,sockaddr_size ()) || errno !=EADDRINUSE )error (1 , errno,"bind socket 2 should fail with EADDRINUSE" );free (addr);