Linux 4.19.261
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.261 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.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/integratorap.dts | 1 drivers/ata/libata-core.c | 4 + drivers/clk/bcm/clk-iproc-pll.c | 12 ++- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 13 ---- drivers/input/touchscreen/melfas_mip4.c | 2 drivers/mmc/host/moxart-mmc.c | 17 ----- 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 | 23 +++---- drivers/usb/storage/unusual_uas.h | 21 ++++++ fs/ntfs/super.c | 3 mm/migrate.c | 5 - mm/page_alloc.c | 65 +++++++++++++++++---- security/integrity/ima/ima.h | 5 + security/integrity/ima/ima_policy.c | 24 +++++-- tools/testing/selftests/net/reuseport_bpf.c | 2 18 files changed, 146 insertions(+), 70 deletions(-)
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"
Chaitanya Kulkarni (1):
nvme: add new line after variable declatation
ChenXiaoSong (1):
ntfs: fix BUG_ON in ntfs_lookup_inode_by_name()
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 4.19.261
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
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
Sergei Antonov (1):
mmc: moxart: fix 4-bit bus width and remove 8-bit bus width
Tyler Hicks (3):
ima: Have the LSM free its audit rule
ima: Free the entire rule when deleting a list of rules
ima: Free the entire rule if it fails to parse
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()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 260 +SUBLEVEL = 261 EXTRAVERSION = NAME = "People's Front"
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
@@ -4560,6 +4560,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/gpu/drm/bridge/analogix/analogix_dp_core.c +0 -13
@@ -1690,12 +1690,6 @@ EXPORT_SYMBOL_GPL(analogix_dp_unbind);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);
@@ -1710,13 +1704,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
@@ -1462,7 +1462,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/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/usb/qmi_wwan.c +1 -0
@@ -1357,6 +1357,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
@@ -1596,6 +1596,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 );
@@ -1612,7 +1613,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
@@ -1716,18 +1716,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 +10 -13
@@ -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[] = {
@@ -264,6 +264,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 ;
@@ -324,12 +325,12 @@ 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;
@@ -342,13 +343,6 @@ static int sunxi_sram_probe(struct platform_device *pdev)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);
@@ -357,6 +351,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 ; }
@@ -398,9 +396,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
@@ -2106,7 +2106,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/migrate.c +3 -2
@@ -2359,13 +2359,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
security/integrity/ima/ima.h +5 -0
@@ -298,6 +298,7 @@ static inline int ima_read_xattr(struct dentry *dentry,#ifdef CONFIG_IMA_LSM_RULES #define security_filter_rule_init security_audit_rule_init +#define security_filter_rule_free security_audit_rule_free#define security_filter_rule_match security_audit_rule_match#else
@@ -308,6 +309,10 @@ static inline int security_filter_rule_init(u32 field, u32 op, char *rulestr,return -EINVAL ; } +static inline void security_filter_rule_free (void *lsmrule) +{ +} +static inline int security_filter_rule_match (u32 secid,u32 field,u32 op,void *lsmrule,struct audit_context *actx)
security/integrity/ima/ima_policy.c +18 -6
@@ -241,6 +241,21 @@ static int __init default_appraise_policy_setup(char *str) }__setup ("ima_appraise_tcb" , default_appraise_policy_setup); +static void ima_free_rule (struct ima_rule_entry *entry) +{ +int i; + +if (!entry) +return ; + +kfree (entry->fsname); +for (i =0 ; i <MAX_LSM_RULES ; i++) { +security_filter_rule_free (entry->lsm[i].rule); +kfree (entry->lsm[i].args_p); + } +kfree (entry); +} +/* * The LSM policy can be reloaded, leaving the IMA LSM based rules referring * to the old, stale LSM policy. Update the IMA LSM based rules to reflect
@@ -647,6 +662,7 @@ static int ima_lsm_rule_init(struct ima_rule_entry *entry, &entry->lsm[lsm_rule].rule);if (!entry->lsm[lsm_rule].rule) {kfree (entry->lsm[lsm_rule].args_p); + entry->lsm[lsm_rule].args_p =NULL ;return -EINVAL ; }
@@ -1019,7 +1035,7 @@ ssize_t ima_parse_add_rule(char *rule) result =ima_parse_rule (p, entry);if (result) { -kfree (entry); +ima_free_rule (entry);integrity_audit_msg (AUDIT_INTEGRITY_STATUS ,NULL ,NULL , op,"invalid-policy" , result, audit_info);
@@ -1040,15 +1056,11 @@ ssize_t ima_parse_add_rule(char *rule)void ima_delete_rules (void ) {struct ima_rule_entry *entry, *tmp; -int i; temp_ima_appraise =0 ;list_for_each_entry_safe (entry, tmp, &ima_temp_rules, list) { -for (i =0 ; i <MAX_LSM_RULES ; i++) -kfree (entry->lsm[i].args_p); -list_del (&entry->list); -kfree (entry); +ima_free_rule (entry); } }
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);