Linux 5.4.181
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 180 +SUBLEVEL = 181 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/mach-omap2/display.c +1 -1
@@ -263,9 +263,9 @@ static int __init omapdss_init_of(void) } r =of_platform_populate (node,NULL ,NULL , &pdev->dev); +put_device (&pdev->dev);if (r) {pr_err ("Unable to populate DSS submodule devices\n" ); -put_device (&pdev->dev);return r; }
arch/arm/mach-omap2/omap_hwmod.c +3 -1
@@ -782,8 +782,10 @@ static int __init _init_clkctrl_providers(void)for_each_matching_node (np, ti_clkctrl_match_table) { ret =_setup_clkctrl_provider (np); -if (ret) +if (ret) { +of_node_put (np);break ; + } }return ret;
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +6 -0
@@ -76,6 +76,12 @@ no-map; }; + /* 32 MiB reserved for ARM Trusted Firmware (BL32) */ + secmon_reserved_bl32: secmon@5300000 { + reg = <0x0 0x05300000 0x0 0x2000000>; + no-map; + }; + linux,cma { compatible = "shared-dma-pool"; reusable;
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts +0 -8
@@ -157,14 +157,6 @@ regulator-always-on; }; - reserved-memory { - /* TEE Reserved Memory */ - bl32_reserved: bl32@5000000 { - reg = <0x0 0x05300000 0x0 0x2000000>; - no-map; - }; - }; - sdio_pwrseq: sdio-pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
arch/arm64/boot/dts/amlogic/meson-gx.dtsi +6 -0
@@ -41,6 +41,12 @@ no-map; }; + /* 32 MiB reserved for ARM Trusted Firmware (BL32) */ + secmon_reserved_bl32: secmon@5300000 { + reg = <0x0 0x05300000 0x0 0x2000000>; + no-map; + }; + linux,cma { compatible = "shared-dma-pool"; reusable;
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts +0 -8
@@ -164,14 +164,6 @@ regulator-always-on; }; - reserved-memory { - /* TEE Reserved Memory */ - bl32_reserved: bl32@5000000 { - reg = <0x0 0x05300000 0x0 0x2000000>; - no-map; - }; - }; - sdio_pwrseq: sdio-pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
arch/arm64/kernel/ftrace.c +14 -41
69 lines not on this page · raw message
arch/arm64/kernel/module.c +37 -10
65 lines not on this page · raw message
arch/parisc/Makefile +0 -1
@@ -65,7 +65,6 @@ KBUILD_CFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY=1 \ -DFTRACE_PATCHABLE_FUNCTION_SIZE=$(NOP_COUNT) CC_FLAGS_FTRACE := -fpatchable-function-entry=$(NOP_COUNT),$(shell echo $$(($(NOP_COUNT)-1))) -KBUILD_LDS_MODULE += $(srctree)/arch/parisc/kernel/module.lds endif OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
arch/parisc/kernel/module.c +7 -3
@@ -43,6 +43,7 @@#include <linux/elf.h> #include <linux/vmalloc.h> #include <linux/fs.h> +#include <linux/ftrace.h> #include <linux/string.h> #include <linux/kernel.h> #include <linux/bug.h>
@@ -862,7 +863,7 @@ int module_finalize(const Elf_Ehdr *hdr,const char *strtab =NULL ;const Elf_Shdr *s;char *secstrings; -int err, symindex =-1 ; +int symindex =-1 ;Elf_Sym *newptr, *oldptr;Elf_Shdr *symhdr =NULL ;#ifdef DEBUG
@@ -946,11 +947,13 @@ int module_finalize(const Elf_Ehdr *hdr,/* patch .altinstructions */ apply_alternatives (aseg, aseg + s->sh_size, me->name); +#ifdef CONFIG_DYNAMIC_FTRACE /* For 32 bit kernels we're compiling modules with * -ffunction-sections so we must relocate the addresses in the -*__mcount_loc section. +* ftrace callsite section. */ -if (symindex !=-1 && !strcmp (secname,"__mcount_loc" )) { +if (symindex !=-1 && !strcmp (secname,FTRACE_CALLSITE_SECTION )) { +int err;if (s->sh_type ==SHT_REL ) err = apply_relocate((Elf_Shdr *)sechdrs, strtab, symindex,
@@ -962,6 +965,7 @@ int module_finalize(const Elf_Ehdr *hdr,if (err) return err; } +#endif }return 0 ; }
arch/parisc/kernel/module.lds deleted +0 -7
@@ -1,7 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ - -SECTIONS { - __mcount_loc : { - *(__patchable_function_entries) - } -}
arch/parisc/mm/init.c +4 -5
@@ -347,9 +347,9 @@ static void __init setup_bootmem(void)static bool kernel_set_to_readonly; -static void __init map_pages (unsigned long start_vaddr, -unsigned long start_paddr,unsigned long size, -pgprot_t pgprot,int force) +static void __ref map_pages (unsigned long start_vaddr, +unsigned long start_paddr,unsigned long size, +pgprot_t pgprot,int force) {pgd_t *pg_dir;pmd_t *pmd;
@@ -485,7 +485,7 @@ void __init set_kernel_text_rw(int enable_read_write)flush_tlb_all (); } -void __ref free_initmem (void ) +void free_initmem (void ) {unsigned long init_begin = (unsigned long )__init_begin;unsigned long init_end = (unsigned long )__init_end;
@@ -499,7 +499,6 @@ void __ref free_initmem(void)/* The init text pages are marked R-X. We have to * flush the icache and mark them RW- * -* This is tricky, because map_pages is in the init section. * Do a dummy remap of the data section first (the data * section is already PAGE_KERNEL) to pull in the TLB entries * for map_kernel */
arch/powerpc/lib/sstep.c +2 -0
@@ -2787,12 +2787,14 @@ void emulate_update_regs(struct pt_regs *regs, struct instruction_op *op)case BARRIER_EIEIO :eieio ();break ; +#ifdef CONFIG_PPC64 case BARRIER_LWSYNC : asmvolatile ("lwsync" : : :"memory" );break ;case BARRIER_PTESYNC : asmvolatile ("ptesync" : : :"memory" );break ; +#endif }break ;
arch/x86/kvm/pmu.c +1 -1
@@ -191,7 +191,7 @@ void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel) }if (type ==PERF_TYPE_RAW ) - config = eventsel &X86_RAW_EVENT_MASK ; + config = eventsel &AMD64_RAW_EVENT_MASK ; pmc_reprogram_counter(pmc, type, config, !(eventsel & ARCH_PERFMON_EVENTSEL_USR),
arch/x86/kvm/svm.c +0 -2
@@ -4585,8 +4585,6 @@ static int avic_incomplete_ipi_interception(struct vcpu_svm *svm)break ; }case AVIC_IPI_FAILURE_INVALID_TARGET : -WARN_ONCE (1 ,"Invalid IPI target: index=%u, vcpu=%d, icr=%#0x:%#0x\n" , - index, svm->vcpu.vcpu_id, icrh, icrl);break ;case AVIC_IPI_FAILURE_INVALID_BACKING_PAGE :WARN_ONCE (1 ,"Invalid backing page\n" );
block/bfq-iosched.c +2 -0
@@ -6389,6 +6389,8 @@ static void bfq_exit_queue(struct elevator_queue *e)spin_unlock_irq (&bfqd->lock);#endif +wbt_enable_default (bfqd->queue); +kfree (bfqd); }
block/elevator.c +0 -2
@@ -522,8 +522,6 @@ void elv_unregister_queue(struct request_queue *q)kobject_del (&e->kobj); e->registered =0 ; -/* Re-enable throttling in case elevator disabled it */ -wbt_enable_default (q); } }
drivers/ata/libata-core.c +1 -0
@@ -4595,6 +4595,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {/* devices that don't properly handle TRIM commands */ { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, }, + { "M88V29*", NULL, ATA_HORKAGE_NOTRIM, },/* * As defined, the DRAT (Deterministic Read After Trim) and RZAT
drivers/dma/at_xdmac.c +4 -2
@@ -1726,11 +1726,13 @@ static irqreturn_t at_xdmac_interrupt(int irq, void *dev_id)static void at_xdmac_issue_pending (struct dma_chan *chan) {struct at_xdmac_chan *atchan =to_at_xdmac_chan (chan); +unsigned long flags;dev_dbg (chan2dev (&atchan->chan),"%s\n" , __func__); -if (!at_xdmac_chan_is_cyclic (atchan)) -at_xdmac_advance_work (atchan); +spin_lock_irqsave (&atchan->lock, flags); +at_xdmac_advance_work (atchan); +spin_unlock_irqrestore (&atchan->lock, flags);return ; }
drivers/dma/sh/rcar-dmac.c +3 -1
@@ -1825,7 +1825,9 @@ static int rcar_dmac_probe(struct platform_device *pdev)platform_set_drvdata (pdev, dmac); dmac->dev->dma_parms = &dmac->parms;dma_set_max_seg_size (dmac->dev,RCAR_DMATCR_MASK ); -dma_set_mask_and_coherent (dmac->dev,DMA_BIT_MASK (40 )); + ret =dma_set_mask_and_coherent (dmac->dev,DMA_BIT_MASK (40 )); +if (ret) +return ret; ret =rcar_dmac_parse_of (&pdev->dev, dmac);if (ret <0 )
drivers/edac/edac_mc.c +1 -1
@@ -263,7 +263,7 @@ void *edac_align_ptr(void **p, unsigned int size, int n_elems)else return (char *)ptr; - r = (unsigned long )p % align; + r = (unsigned long )ptr % align;if (r ==0 )return (char *)ptr;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -1
@@ -1976,7 +1976,7 @@ int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset,unsigned i;int r; -if (direct_submit && !ring->sched.ready) { +if (!direct_submit && !ring->sched.ready) {DRM_ERROR ("Trying to move memory with ring turned off.\n" );return -EINVAL ; }
drivers/gpu/drm/radeon/atombios_encoders.c +2 -1
@@ -197,7 +197,8 @@ void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder,* so don't register a backlight device */ if ((rdev->pdev->subsystem_vendor ==PCI_VENDOR_ID_APPLE ) && - (rdev->pdev->device ==0x6741 )) + (rdev->pdev->device ==0x6741 ) && + !dmi_match (DMI_PRODUCT_NAME ,"iMac12,1" ))return ;if (!radeon_encoder->enc_priv)
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +7 -7
@@ -528,13 +528,6 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,return ret; } - ret =clk_prepare_enable (hdmi->vpll_clk); -if (ret) { -DRM_DEV_ERROR (hdmi->dev,"Failed to enable HDMI vpll: %d\n" , - ret); -return ret; - } - hdmi->phy =devm_phy_optional_get (dev,"hdmi" );if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);
@@ -543,6 +536,13 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,return ret; } + ret =clk_prepare_enable (hdmi->vpll_clk); +if (ret) { +DRM_DEV_ERROR (hdmi->dev,"Failed to enable HDMI vpll: %d\n" , + ret); +return ret; + } +drm_encoder_helper_add (encoder, &dw_hdmi_rockchip_encoder_helper_funcs);drm_encoder_init (drm, encoder, &dw_hdmi_rockchip_encoder_funcs,DRM_MODE_ENCODER_TMDS ,NULL );
drivers/hid/hid-ids.h +1 -0
@@ -1311,6 +1311,7 @@#define USB_VENDOR_ID_UGTIZER 0x2179#define USB_DEVICE_ID_UGTIZER_TABLET_GP0610 0x0053#define USB_DEVICE_ID_UGTIZER_TABLET_GT5040 0x0077 +#define USB_DEVICE_ID_UGTIZER_TABLET_WP5540 0x0004#define USB_VENDOR_ID_VIEWSONIC 0x0543#define USB_DEVICE_ID_VIEWSONIC_PD1011 0xe621
drivers/hid/hid-quirks.c +1 -0
@@ -187,6 +187,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_KNA5), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_TWA60), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_WP5540), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT },
drivers/hv/vmbus_drv.c +4 -1
@@ -1787,8 +1787,10 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct vmbus_channel *channel) kobj->kset = dev->channels_kset; ret =kobject_init_and_add (kobj, &vmbus_chan_ktype,NULL ,"%u" , relid); -if (ret) +if (ret) { +kobject_put (kobj);return ret; + } ret =sysfs_create_group (kobj, &vmbus_chan_group);
@@ -1797,6 +1799,7 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct vmbus_channel *channel)* The calling functions' error handling paths will cleanup the * empty channel directory. */ +kobject_put (kobj);dev_err (device,"Unable to set up channel sysfs files\n" );return ret; }
drivers/i2c/busses/i2c-brcmstb.c +1 -1
@@ -640,7 +640,7 @@ static int brcmstb_i2c_probe(struct platform_device *pdev)/* set the data in/out register size for compatible SoCs */ if (of_device_is_compatible (dev->device->of_node, -"brcmstb,brcmper-i2c" )) +"brcm,brcmper-i2c" )) dev->data_regsz =sizeof (u8);else dev->data_regsz =sizeof (u32);
drivers/irqchip/irq-sifive-plic.c +1 -0
@@ -313,3 +313,4 @@ static int __init plic_init(struct device_node *node,IRQCHIP_DECLARE (sifive_plic,"sifive,plic-1.0.0" , plic_init);IRQCHIP_DECLARE (riscv_plic0,"riscv,plic0" , plic_init);/* for legacy systems */ +IRQCHIP_DECLARE (thead_c900_plic,"thead,c900-plic" , plic_init);/* for firmware driver */
drivers/mmc/core/block.c +14 -14
@@ -1671,31 +1671,31 @@ static void mmc_blk_read_single(struct mmc_queue *mq, struct request *req)struct mmc_card *card = mq->card;struct mmc_host *host = card->host;blk_status_t error =BLK_STS_OK ; -int retries =0 ; do { u32 status; int err; + int retries = 0; - mmc_blk_rw_rq_prep(mqrq, card, 1, mq); + while (retries++ <= MMC_READ_SINGLE_RETRIES) { + mmc_blk_rw_rq_prep(mqrq, card, 1, mq); - mmc_wait_for_req(host, mrq); + mmc_wait_for_req(host, mrq); - err = mmc_send_status(card, &status); - if (err) - goto error_exit; - - if (!mmc_host_is_spi(host) && - !mmc_blk_in_tran_state(status)) { - err = mmc_blk_fix_state(card, req); + err = mmc_send_status(card, &status); if (err) goto error_exit; - } - if (mrq->cmd->error && retries++ < MMC_READ_SINGLE_RETRIES) - continue; + if (!mmc_host_is_spi(host) && + !mmc_blk_in_tran_state(status)) { + err = mmc_blk_fix_state(card, req); + if (err) + goto error_exit; + } - retries = 0; + if (!mrq->cmd->error) + break; + } if (mrq->cmd->error || mrq->data->error ||
drivers/mtd/nand/raw/brcmnand/brcmnand.c +1 -1
@@ -1756,7 +1756,7 @@ static int brcmnand_read_by_pio(struct mtd_info *mtd, struct nand_chip *chip, mtd->oobsize / trans, host->hwcfg.sector_size_1k); -if (!ret) { +if (ret != -EBADMSG ) { *err_addr =brcmnand_get_uncorrecc_addr (ctrl);if (*err_addr)
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +2 -1
@@ -2442,7 +2442,7 @@ static int gpmi_nfc_exec_op(struct nand_chip *chip, this->hw.must_apply_timings = false; ret =gpmi_nfc_apply_timings (this);if (ret) -return ret; + goto out_pm; }dev_dbg (this->dev,"%s: %d instructions\n" , __func__, op->ninstrs);
@@ -2571,6 +2571,7 @@ static int gpmi_nfc_exec_op(struct nand_chip *chip, this->bch = false; +out_pm:pm_runtime_mark_last_busy (this->dev);pm_runtime_put_autosuspend (this->dev);
drivers/mtd/nand/raw/qcom_nandc.c +6 -8
@@ -2,7 +2,6 @@/* * Copyright (c) 2016, The Linux Foundation. All rights reserved. */ -#include <linux/clk.h> #include <linux/slab.h> #include <linux/bitops.h>
@@ -2944,10 +2943,6 @@ static int qcom_nandc_probe(struct platform_device *pdev)if (!nandc->base_dma)return -ENXIO ; - ret =qcom_nandc_alloc (nandc); -if (ret) - goto err_nandc_alloc; - ret =clk_prepare_enable (nandc->core_clk);if (ret) goto err_core_clk;
@@ -2956,6 +2951,10 @@ static int qcom_nandc_probe(struct platform_device *pdev)if (ret) goto err_aon_clk; + ret =qcom_nandc_alloc (nandc); +if (ret) + goto err_nandc_alloc; + ret =qcom_nandc_setup (nandc);if (ret) goto err_setup;
@@ -2967,15 +2966,14 @@ static int qcom_nandc_probe(struct platform_device *pdev)return 0 ; err_setup: +qcom_nandc_unalloc (nandc); +err_nandc_alloc:clk_disable_unprepare (nandc->aon_clk); err_aon_clk:clk_disable_unprepare (nandc->core_clk); err_core_clk: -qcom_nandc_unalloc (nandc); -err_nandc_alloc:dma_unmap_resource (dev, res->start,resource_size (res),DMA_BIDIRECTIONAL ,0 ); -return ret; }
drivers/net/bonding/bond_3ad.c +25 -5
@@ -233,7 +233,7 @@ static inline int __check_agg_selection_timer(struct port *port)if (bond ==NULL )return 0 ; -return BOND_AD_INFO (bond).agg_select_timer ?1 :0 ; +return atomic_read (&BOND_AD_INFO (bond).agg_select_timer) ?1 :0 ; }/**
@@ -1985,7 +1985,7 @@ static void ad_marker_response_received(struct bond_marker *marker,*/ void bond_3ad_initiate_agg_selection (struct bonding *bond,int timeout) { -BOND_AD_INFO (bond).agg_select_timer = timeout; +atomic_set (&BOND_AD_INFO (bond).agg_select_timer, timeout); }/**
@@ -2268,6 +2268,28 @@ void bond_3ad_update_ad_actor_settings(struct bonding *bond)spin_unlock_bh (&bond->mode_lock); } +/** +* bond_agg_timer_advance - advance agg_select_timer +* @bond: bonding structure +* +* Return true when agg_select_timer reaches 0. +*/ +static bool bond_agg_timer_advance (struct bonding *bond) +{ +int val, nval; + +while (1 ) { + val =atomic_read (&BOND_AD_INFO (bond).agg_select_timer); +if (!val) +return false; + nval = val -1 ; +if (atomic_cmpxchg (&BOND_AD_INFO (bond).agg_select_timer, + val, nval) == val) +break ; + } +return nval ==0 ; +} +/** * bond_3ad_state_machine_handler - handle state machines timeout * @bond: bonding struct to work on
@@ -2303,9 +2325,7 @@ void bond_3ad_state_machine_handler(struct work_struct *work)if (!bond_has_slaves (bond)) goto re_arm; -/* check if agg_select_timer timer after initialize is timed out */ -if (BOND_AD_INFO (bond).agg_select_timer && - !(--BOND_AD_INFO (bond).agg_select_timer)) { +if (bond_agg_timer_advance (bond)) { slave =bond_first_slave_rcu (bond); port = slave ? &(SLAVE_AD_INFO (slave)->port) :NULL ;
drivers/net/bonding/bond_main.c +2 -3
@@ -1979,10 +1979,9 @@ static int __bond_release_one(struct net_device *bond_dev,bond_select_active_slave (bond); } -if (!bond_has_slaves (bond)) { -bond_set_carrier (bond); +bond_set_carrier (bond); +if (!bond_has_slaves (bond))eth_hw_addr_random (bond_dev); - }unblock_netpoll_tx ();synchronize_rcu ();
drivers/net/dsa/lan9303-core.c +1 -1
@@ -1303,7 +1303,7 @@ static int lan9303_probe_reset_gpio(struct lan9303 *chip, struct device_node *np) { chip->reset_gpio =devm_gpiod_get_optional (chip->dev,"reset" , -GPIOD_OUT_LOW ); +GPIOD_OUT_HIGH );if (IS_ERR (chip->reset_gpio))return PTR_ERR (chip->reset_gpio);
drivers/net/ethernet/cadence/macb_main.c +1 -1
@@ -4284,7 +4284,7 @@ static int macb_probe(struct platform_device *pdev)#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT if (GEM_BFEXT (DAW64 ,gem_readl (bp,DCFG6 ))) { -dma_set_mask (&pdev->dev,DMA_BIT_MASK (44 )); +dma_set_mask_and_coherent (&pdev->dev,DMA_BIT_MASK (44 )); bp->hw_dma_cap |=HW_DMA_CAP_64B ; }#endif
drivers/net/ieee802154/at86rf230.c +11 -2
@@ -100,6 +100,7 @@ struct at86rf230_local {unsigned long cal_timeout;bool is_tx;bool is_tx_from_off; +bool was_tx;u8 tx_retry;struct sk_buff *tx_skb;struct at86rf230_state_change tx;
@@ -343,7 +344,11 @@ at86rf230_async_error_recover_complete(void *context)if (ctx->free)kfree (ctx); -ieee802154_wake_queue (lp->hw); +if (lp->was_tx) { + lp->was_tx =0 ; +dev_kfree_skb_any (lp->tx_skb); +ieee802154_wake_queue (lp->hw); + } } static void
@@ -352,7 +357,11 @@ at86rf230_async_error_recover(void *context)struct at86rf230_state_change *ctx = context;struct at86rf230_local *lp = ctx->lp; - lp->is_tx =0 ; +if (lp->is_tx) { + lp->was_tx =1 ; + lp->is_tx =0 ; + } +at86rf230_async_state_change (lp, ctx,STATE_RX_AACK_ON , at86rf230_async_error_recover_complete); }
drivers/net/ieee802154/ca8210.c +2 -2
@@ -2976,8 +2976,8 @@ static void ca8210_hw_setup(struct ieee802154_hw *ca8210_hw) ca8210_hw->phy->cca.opt =NL802154_CCA_OPT_ENERGY_CARRIER_AND ; ca8210_hw->phy->cca_ed_level =-9800 ; ca8210_hw->phy->symbol_duration =16 ; - ca8210_hw->phy->lifs_period =40 ; - ca8210_hw->phy->sifs_period =12 ; + ca8210_hw->phy->lifs_period =40 * ca8210_hw->phy->symbol_duration; + ca8210_hw->phy->sifs_period =12 * ca8210_hw->phy->symbol_duration; ca8210_hw->flags =IEEE802154_HW_AFILT | IEEE802154_HW_OMIT_CKSUM |
drivers/net/usb/qmi_wwan.c +2 -0
@@ -1355,6 +1355,8 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x413c, 0x81d7, 0)}, /* Dell Wireless 5821e */ {QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e preproduction config */ {QMI_FIXED_INTF(0x413c, 0x81e0, 0)}, /* Dell Wireless 5821e with eSIM support*/ + {QMI_FIXED_INTF(0x413c, 0x81e4, 0)}, /* Dell Wireless 5829e with eSIM support*/ + {QMI_FIXED_INTF(0x413c, 0x81e6, 0)}, /* Dell Wireless 5829e */ {QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */ {QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
drivers/net/wireless/intel/iwlwifi/iwl-drv.c +2 -0
@@ -1616,6 +1616,8 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context) out_unbind:complete (&drv->request_firmware_complete);device_release_driver (drv->trans->dev); +/* drv has just been freed by the release */ + failure = false; free:if (failure)iwl_dealloc_ucode (drv);
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +1 -2
@@ -292,8 +292,7 @@ int iwl_trans_pcie_gen2_start_fw(struct iwl_trans *trans,/* This may fail if AMT took ownership of the device */ if (iwl_pcie_prepare_card_hw (trans)) {IWL_WARN (trans,"Exit HW not ready\n" ); - ret = -EIO ; - goto out; +return -EIO ; }iwl_enable_rfkill_int (trans);
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +1 -2
@@ -1335,8 +1335,7 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,/* This may fail if AMT took ownership of the device */ if (iwl_pcie_prepare_card_hw (trans)) {IWL_WARN (trans,"Exit HW not ready\n" ); - ret = -EIO ; - goto out; +return -EIO ; }iwl_enable_rfkill_int (trans);
drivers/nvme/host/core.c +8 -1
@@ -3896,7 +3896,14 @@ static void nvme_async_event_work(struct work_struct *work) container_of(work, struct nvme_ctrl, async_event_work);nvme_aen_uevent (ctrl); - ctrl->ops->submit_async_event (ctrl); + +/* +* The transport drivers must guarantee AER submission here is safe by +* flushing ctrl async_event_work after changing the controller state +* from LIVE and before freeing the admin queue. +*/ +if (ctrl->state ==NVME_CTRL_LIVE ) + ctrl->ops->submit_async_event (ctrl); }static bool nvme_ctrl_pp_status (struct nvme_ctrl *ctrl)
drivers/nvme/host/rdma.c +1 -0
@@ -1110,6 +1110,7 @@ static void nvme_rdma_error_recovery_work(struct work_struct *work) struct nvme_rdma_ctrl, err_work);nvme_stop_keep_alive (&ctrl->ctrl); +flush_work (&ctrl->ctrl.async_event_work);nvme_rdma_teardown_io_queues (ctrl, false);nvme_start_queues (&ctrl->ctrl);nvme_rdma_teardown_admin_queue (ctrl, false);
drivers/nvme/host/tcp.c +1 -0
@@ -1955,6 +1955,7 @@ static void nvme_tcp_error_recovery_work(struct work_struct *work)struct nvme_ctrl *ctrl = &tcp_ctrl->ctrl;nvme_stop_keep_alive (ctrl); +flush_work (&ctrl->async_event_work);nvme_tcp_teardown_io_queues (ctrl, false);/* unquiesce to fail fast pending requests */ nvme_start_queues (ctrl);
drivers/parisc/ccio-dma.c +2 -1
@@ -1003,7 +1003,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, ioc->usg_calls++;#endif -while (sg_dma_len (sglist) && nents--) { +while (nents &&sg_dma_len (sglist)) {#ifdef CCIO_COLLECT_STATS ioc->usg_pages +=sg_dma_len (sglist) >>PAGE_SHIFT ;
@@ -1011,6 +1011,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,ccio_unmap_page (dev,sg_dma_address (sglist),sg_dma_len (sglist), direction,0 ); ++sglist; + nents--; }DBG_RUN_SG ("%s() DONE (nents %d)\n" , __func__, nents);
drivers/parisc/sba_iommu.c +2 -1
@@ -1047,7 +1047,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,spin_unlock_irqrestore (&ioc->res_lock, flags);#endif -while (sg_dma_len (sglist) && nents--) { +while (nents &&sg_dma_len (sglist)) {sba_unmap_page (dev,sg_dma_address (sglist),sg_dma_len (sglist), direction,0 );
@@ -1056,6 +1056,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, ioc->usingle_calls--;/* kluge since call is unmap_sg() */ #endif ++sglist; + nents--; }DBG_RUN_SG ("%s() DONE (nents %d)\n" , __func__, nents);
drivers/platform/x86/intel_speed_select_if/isst_if_common.c +63 -34
158 lines not on this page · raw message
drivers/scsi/lpfc/lpfc.h +1 -0
@@ -377,6 +377,7 @@ struct lpfc_vport {#define FC_VPORT_LOGO_RCVD 0x200/* LOGO received on vport */ #define FC_RSCN_DISCOVERY 0x400/* Auth all devices after RSCN */ #define FC_LOGO_RCVD_DID_CHNG 0x800/* FDISC on phys port detect DID chng*/ +#define FC_PT2PT_NO_NVME 0x1000/* Don't send NVME PRLI */ #define FC_SCSI_SCAN_TMO 0x4000/* scsi scan timer running */ #define FC_ABORT_DISCOVERY 0x8000/* we want to abort discovery */ #define FC_NDISC_ACTIVE 0x10000/* NPort discovery active */
drivers/scsi/lpfc/lpfc_attr.c +3 -0
@@ -1145,6 +1145,9 @@ lpfc_issue_lip(struct Scsi_Host *shost) pmboxq->u.mb.mbxCommand =MBX_DOWN_LINK ; pmboxq->u.mb.mbxOwner =OWN_HOST ; +if ((vport->fc_flag &FC_PT2PT ) && (vport->fc_flag &FC_PT2PT_NO_NVME )) + vport->fc_flag &= ~FC_PT2PT_NO_NVME ; + mbxstatus =lpfc_sli_issue_mbox_wait (phba, pmboxq,LPFC_MBOX_TMO *2 ); if ((mbxstatus == MBX_SUCCESS) &&
drivers/scsi/lpfc/lpfc_els.c +19 -1
@@ -1066,7 +1066,8 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,/* FLOGI failed, so there is no fabric */ spin_lock_irq (shost->host_lock); - vport->fc_flag &= ~(FC_FABRIC |FC_PUBLIC_LOOP ); + vport->fc_flag &= ~(FC_FABRIC |FC_PUBLIC_LOOP | +FC_PT2PT_NO_NVME );spin_unlock_irq (shost->host_lock);/* If private loop, then allow max outstanding els to be
@@ -3740,6 +3741,23 @@ lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,/* Added for Vendor specifc support * Just keep retrying for these Rsn / Exp codes */ +if ((vport->fc_flag &FC_PT2PT ) && + cmd ==ELS_CMD_NVMEPRLI ) { +switch (stat.un.b.lsRjtRsnCode) { +case LSRJT_UNABLE_TPC : +case LSRJT_INVALID_CMD : +case LSRJT_LOGICAL_ERR : +case LSRJT_CMD_UNSUPPORTED : +lpfc_printf_vlog (vport,KERN_WARNING ,LOG_ELS , +"0168 NVME PRLI LS_RJT " +"reason %x port doesn't " +"support NVME, disabling NVME\n" , + stat.un.b.lsRjtRsnCode); + retry =0 ; + vport->fc_flag |=FC_PT2PT_NO_NVME ; + goto out_retry; + } + }switch (stat.un.b.lsRjtRsnCode) {case LSRJT_UNABLE_TPC :/* The driver has a VALID PLOGI but the rport has
drivers/scsi/lpfc/lpfc_nportdisc.c +3 -2
@@ -1987,8 +1987,9 @@ lpfc_cmpl_reglogin_reglogin_issue(struct lpfc_vport *vport,* is configured try it. */ ndlp->nlp_fc4_type |=NLP_FC4_FCP ; -if ((vport->cfg_enable_fc4_type ==LPFC_ENABLE_BOTH ) || - (vport->cfg_enable_fc4_type ==LPFC_ENABLE_NVME )) { +if ((!(vport->fc_flag &FC_PT2PT_NO_NVME )) && + (vport->cfg_enable_fc4_type ==LPFC_ENABLE_BOTH || + vport->cfg_enable_fc4_type ==LPFC_ENABLE_NVME )) { ndlp->nlp_fc4_type |=NLP_FC4_NVME ;/* We need to update the localport also */ lpfc_nvme_update_localport (vport);
drivers/tty/serial/8250/8250_gsc.c +1 -1
@@ -26,7 +26,7 @@ static int __init serial_init_chip(struct parisc_device *dev)unsigned long address;int err; -#ifdef CONFIG_64BIT +#if defined(CONFIG_64BIT ) && defined(CONFIG_IOSAPIC )if (!dev->irq && (dev->id.sversion ==0xad )) dev->irq =iosapic_serial_irq (dev);#endif
fs/btrfs/send.c +4 -0
@@ -5005,6 +5005,10 @@ static ssize_t fill_read_buf(struct send_ctx *sctx, u64 offset, u32 len)lock_page (page);if (!PageUptodate (page)) {unlock_page (page); +btrfs_err (fs_info, +"send: IO error at offset %llu for inode %llu root %llu" , +page_offset (page), sctx->cur_ino, + sctx->send_root->root_key.objectid);put_page (page); ret = -EIO ;break ;
fs/ext4/extents.c +63 -29
225 lines not on this page · raw message
fs/nfs/dir.c +2 -2
@@ -1641,14 +1641,14 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,if (!res) { inode =d_inode (dentry);if ((lookup_flags &LOOKUP_DIRECTORY ) && inode && - !S_ISDIR (inode->i_mode)) + !(S_ISDIR (inode->i_mode) ||S_ISLNK (inode->i_mode))) res =ERR_PTR (-ENOTDIR );else if (inode &&S_ISREG (inode->i_mode)) res =ERR_PTR (-EOPENSTALE ); }else if (!IS_ERR (res)) { inode =d_inode (res);if ((lookup_flags &LOOKUP_DIRECTORY ) && inode && - !S_ISDIR (inode->i_mode)) { + !(S_ISDIR (inode->i_mode) ||S_ISLNK (inode->i_mode))) {dput (res); res =ERR_PTR (-ENOTDIR ); }else if (inode &&S_ISREG (inode->i_mode)) {
fs/nfs/inode.c +3 -6
@@ -791,12 +791,9 @@ int nfs_getattr(const struct path *path, struct kstat *stat, goto out_no_update;/* Flush out writes to the server in order to update c/mtime. */ -if ((request_mask & (STATX_CTIME |STATX_MTIME )) && -S_ISREG (inode->i_mode)) { - err =filemap_write_and_wait (inode->i_mapping); -if (err) - goto out; - } +if ((request_mask & (STATX_CTIME |STATX_MTIME )) && +S_ISREG (inode->i_mode)) +filemap_write_and_wait (inode->i_mapping);/* * We may force a getattr if the user cares about atime.
fs/quota/dquot.c +8 -3
@@ -693,9 +693,14 @@ int dquot_quota_sync(struct super_block *sb, int type)/* This is not very clever (and fast) but currently I don't know about * any other simple way of getting quota data to disk and we must get * them there for userspace to be visible... */ -if (sb->s_op->sync_fs) - sb->s_op->sync_fs (sb,1 ); -sync_blockdev (sb->s_bdev); +if (sb->s_op->sync_fs) { + ret = sb->s_op->sync_fs (sb,1 ); +if (ret) +return ret; + } + ret =sync_blockdev (sb->s_bdev); +if (ret) +return ret;/* * Now when everything is written we can discard the pagecache so
fs/super.c +12 -7
@@ -1691,11 +1691,9 @@ static void lockdep_sb_freeze_acquire(struct super_block *sb)percpu_rwsem_acquire (sb->s_writers.rw_sem + level,0 , _THIS_IP_); } -static void sb_freeze_unlock (struct super_block *sb) +static void sb_freeze_unlock (struct super_block *sb,int level) { -int level; - -for (level =SB_FREEZE_LEVELS -1 ; level >=0 ; level--) +for (level--; level >=0 ; level--)percpu_up_write (sb->s_writers.rw_sem + level); }
@@ -1766,7 +1764,14 @@ int freeze_super(struct super_block *sb)sb_wait_write (sb,SB_FREEZE_PAGEFAULT );/* All writers are done so after syncing there won't be dirty data */ -sync_filesystem (sb); + ret =sync_filesystem (sb); +if (ret) { + sb->s_writers.frozen =SB_UNFROZEN ; +sb_freeze_unlock (sb,SB_FREEZE_PAGEFAULT ); +wake_up (&sb->s_writers.wait_unfrozen); +deactivate_locked_super (sb); +return ret; + }/* Now wait for internal filesystem counter */ sb->s_writers.frozen =SB_FREEZE_FS ;
@@ -1778,7 +1783,7 @@ int freeze_super(struct super_block *sb)printk (KERN_ERR "VFS:Filesystem freeze failed\n" ); sb->s_writers.frozen =SB_UNFROZEN ; -sb_freeze_unlock (sb); +sb_freeze_unlock (sb,SB_FREEZE_FS );wake_up (&sb->s_writers.wait_unfrozen);deactivate_locked_super (sb);return ret;
@@ -1829,7 +1834,7 @@ static int thaw_super_locked(struct super_block *sb) } sb->s_writers.frozen =SB_UNFROZEN ; -sb_freeze_unlock (sb); +sb_freeze_unlock (sb,SB_FREEZE_FS ); out:wake_up (&sb->s_writers.wait_unfrozen);deactivate_locked_super (sb);
include/asm-generic/vmlinux.lds.h +7 -7
@@ -110,17 +110,17 @@#endif #ifdef CONFIG_FTRACE_MCOUNT_RECORD -#ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY -#define MCOUNT_REC () . = ALIGN(8); \ - __start_mcount_loc = .; \ - KEEP(*(__patchable_function_entries)) \ - __stop_mcount_loc = .; -#else +/* +* The ftrace call sites are logged to a section whose name depends on the +* compiler option used. A given kernel image will only use one, AKA +* FTRACE_CALLSITE_SECTION. We capture all of them here to avoid header +* dependencies for FTRACE_CALLSITE_SECTION's definition. +*/ #define MCOUNT_REC () . = ALIGN(8); \ __start_mcount_loc = .; \ KEEP(*(__mcount_loc)) \ + KEEP(*(__patchable_function_entries)) \ __stop_mcount_loc = .; -#endif #else #define MCOUNT_REC ()#endif
include/linux/ftrace.h +37 -3
@@ -499,7 +499,7 @@ static inline int ftrace_disable_ftrace_graph_caller(void) { return 0; }/** * ftrace_make_nop - convert code into nop * @mod: module structure if called by module load initialization -* @rec: the mcount call site record +* @rec: the call site record (e.g. mcount/fentry) * @addr: the address that the call site should be calling * * This is a very sensitive operation and great care needs
@@ -520,9 +520,38 @@ static inline int ftrace_disable_ftrace_graph_caller(void) { return 0; }extern int ftrace_make_nop (struct module *mod,struct dyn_ftrace *rec,unsigned long addr); + +/** +* ftrace_init_nop - initialize a nop call site +* @mod: module structure if called by module load initialization +* @rec: the call site record (e.g. mcount/fentry) +* +* This is a very sensitive operation and great care needs +* to be taken by the arch. The operation should carefully +* read the location, check to see if what is read is indeed +* what we expect it to be, and then on success of the compare, +* it should write to the location. +* +* The code segment at @rec->ip should contain the contents created by +* the compiler +* +* Return must be: +* 0 on success +* -EFAULT on error reading the location +* -EINVAL on a failed compare of the contents +* -EPERM on error writing to the location +* Any other value will be considered a failure. +*/ +#ifndef ftrace_init_nop +static inline int ftrace_init_nop (struct module *mod,struct dyn_ftrace *rec) +{ +return ftrace_make_nop (mod, rec,MCOUNT_ADDR ); +} +#endif +/** * ftrace_make_call - convert a nop call site into a call to addr -* @rec: the mcount call site record +* @rec: the call site record (e.g. mcount/fentry) * @addr: the address that the call site should call * * This is a very sensitive operation and great care needs
@@ -545,7 +574,7 @@ extern int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr);#ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS /** * ftrace_modify_call - convert from one addr to another (no nop) -* @rec: the mcount call site record +* @rec: the call site record (e.g. mcount/fentry) * @old_addr: the address expected to be currently called to * @addr: the address to change to *
@@ -709,6 +738,11 @@ static inline unsigned long get_lock_parent_ip(void)#ifdef CONFIG_FTRACE_MCOUNT_RECORD extern void ftrace_init (void ); +#ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY +#define FTRACE_CALLSITE_SECTION "__patchable_function_entries" +#else +#define FTRACE_CALLSITE_SECTION "__mcount_loc" +#endif #else static inline void ftrace_init (void ) { }#endif
include/linux/sched.h +0 -1
@@ -1454,7 +1454,6 @@ extern struct pid *cad_pid;#define PF_MEMALLOC 0x00000800/* Allocating memory */ #define PF_NPROC_EXCEEDED 0x00001000/* set_user() noticed that RLIMIT_NPROC was exceeded */ #define PF_USED_MATH 0x00002000/* If unset the fpu must be initialized before use */ -#define PF_USED_ASYNC 0x00004000/* Used async_schedule*(), used by module init */ #define PF_NOFREEZE 0x00008000/* This thread should not be frozen */ #define PF_FROZEN 0x00010000/* Frozen for system suspend */ #define PF_KSWAPD 0x00020000/* I am kswapd */
include/net/bond_3ad.h +1 -1
@@ -262,7 +262,7 @@ struct ad_system {struct ad_bond_info {struct ad_system system;/* 802.3ad system structure */ struct bond_3ad_stats stats; -u32 agg_select_timer;/* Timer to select aggregator after all adapter's hand shakes */ +atomic_t agg_select_timer;/* Timer to select aggregator after all adapter's hand shakes */ u16 aggregator_identifier; };
kernel/async.c +0 -3
@@ -205,9 +205,6 @@ async_cookie_t async_schedule_node_domain(async_func_t func, void *data,atomic_inc (&entry_count);spin_unlock_irqrestore (&async_lock, flags); -/* mark that this task has queued an async job, used by module init */ - current->flags |=PF_USED_ASYNC ; -/* schedule for execution */ queue_work_node (node, system_unbound_wq, &entry->work);
kernel/fork.c +3 -4
@@ -2182,10 +2182,6 @@ static __latent_entropy struct task_struct *copy_process( goto bad_fork_cancel_cgroup; } -/* past the last point of failure */ -if (pidfile) -fd_install (pidfd, pidfile); -init_task_pid_links (p);if (likely (p->pid)) {ptrace_init_task (p, (clone_flags &CLONE_PTRACE ) || trace);
@@ -2234,6 +2230,9 @@ static __latent_entropy struct task_struct *copy_process(syscall_tracepoint_update (p);write_unlock_irq (&tasklist_lock); +if (pidfile) +fd_install (pidfd, pidfile); +proc_fork_connector (p);cgroup_post_fork (p);cgroup_threadgroup_change_end (current);
kernel/module.c +6 -21
@@ -3377,7 +3377,7 @@ static int find_module_sections(struct module *mod, struct load_info *info)#endif #ifdef CONFIG_FTRACE_MCOUNT_RECORD /* sechdrs[0].sh_size is always zero */ - mod->ftrace_callsites =section_objs (info,"__mcount_loc" , + mod->ftrace_callsites =section_objs (info,FTRACE_CALLSITE_SECTION ,sizeof (*mod->ftrace_callsites), &mod->num_ftrace_callsites);#endif
@@ -3711,12 +3711,6 @@ static noinline int do_init_module(struct module *mod) } freeinit->module_init = mod->init_layout.base; -/* -* We want to find out whether @mod uses async during init. Clear -* PF_USED_ASYNC. async_schedule*() will set it. -*/ - current->flags &= ~PF_USED_ASYNC ; -do_mod_ctors (mod);/* Start the module */ if (mod->init !=NULL )
@@ -3742,22 +3736,13 @@ static noinline int do_init_module(struct module *mod)/* * We need to finish all async code before the module init sequence -* is done. This has potential to deadlock. For example, a newly -* detected block device can trigger request_module() of the -* default iosched from async probing task. Once userland helper -* reaches here, async_synchronize_full() will wait on the async -* task waiting on request_module() and deadlock. -* -* This deadlock is avoided by perfomring async_synchronize_full() -* iff module init queued any async jobs. This isn't a full -* solution as it will deadlock the same if module loading from -* async jobs nests more than once; however, due to the various -* constraints, this hack seems to be the best option for now. -* Please refer to the following thread for details. +* is done. This has potential to deadlock if synchronous module +* loading is requested from async (which is not allowed!). * -* http://thread.gmane.org/gmane.linux.kernel/1420814 +* See commit 0fdff3ec6d87 ("async, kmod: warn on synchronous +* request_module() from async workers") for more details. */ -if (!mod->async_probe_requested && (current->flags &PF_USED_ASYNC )) +if (!mod->async_probe_requested)async_synchronize_full (); ftrace_free_mem(mod, mod->init_layout.base, mod->init_layout.base +
kernel/trace/ftrace.c +3 -3
@@ -2520,14 +2520,14 @@ struct dyn_ftrace *ftrace_rec_iter_record(struct ftrace_rec_iter *iter) }static int -ftrace_code_disable (struct module *mod,struct dyn_ftrace *rec) +ftrace_nop_initialize (struct module *mod,struct dyn_ftrace *rec) {int ret;if (unlikely (ftrace_disabled))return 0 ; - ret =ftrace_make_nop (mod, rec,MCOUNT_ADDR ); + ret =ftrace_init_nop (mod, rec);if (ret) { ftrace_bug_type =FTRACE_BUG_INIT ;ftrace_bug (ret, rec);
@@ -2969,7 +2969,7 @@ static int ftrace_update_code(struct module *mod, struct ftrace_page *new_pgs)* to the NOP instructions. */ if (!__is_defined (CC_USING_NOP_MCOUNT ) && - !ftrace_code_disable (mod, p)) + !ftrace_nop_initialize (mod, p))break ; update_cnt++;
kernel/trace/trace.c +4 -0
@@ -236,6 +236,10 @@ __setup("trace_clock=", set_trace_boot_clock);static int __init set_tracepoint_printk (char *str) { +/* Ignore the "tp_printk_stop_on_boot" param */ +if (*str =='_' ) +return 0 ; +if ((strcmp (str,"=0" ) !=0 &&strcmp (str,"=off" ) !=0 )) tracepoint_printk =1 ;return 1 ;
kernel/tsacct.c +3 -4
@@ -35,11 +35,10 @@ void bacct_add_tsk(struct user_namespace *user_ns,/* Convert to seconds for btime */ do_div (delta,USEC_PER_SEC ); stats->ac_btime =get_seconds () - delta; -if (thread_group_leader (tsk)) { +if (tsk->flags &PF_EXITING ) stats->ac_exitcode = tsk->exit_code; -if (tsk->flags &PF_FORKNOEXEC ) - stats->ac_flag |=AFORK ; - } +if (thread_group_leader (tsk) && (tsk->flags &PF_FORKNOEXEC )) + stats->ac_flag |=AFORK ;if (tsk->flags &PF_SUPERPRIV ) stats->ac_flag |=ASU ;if (tsk->flags &PF_DUMPCORE )
lib/iov_iter.c +2 -0
@@ -398,6 +398,7 @@ static size_t copy_page_to_iter_pipe(struct page *page, size_t offset, size_t byreturn 0 ; pipe->nrbufs++; buf->ops = &page_cache_pipe_buf_ops; + buf->flags =0 ;get_page (buf->page = page); buf->offset = offset; buf->len = bytes;
@@ -524,6 +525,7 @@ static size_t push_pipe(struct iov_iter *i, size_t size,break ; pipe->nrbufs++; pipe->bufs[idx].ops = &default_pipe_buf_ops; + pipe->bufs[idx].flags =0 ; pipe->bufs[idx].page = page; pipe->bufs[idx].offset =0 ;if (left <=PAGE_SIZE ) {
net/ax25/af_ax25.c +6 -3
@@ -77,6 +77,7 @@ static void ax25_kill_by_device(struct net_device *dev) {ax25_dev *ax25_dev;ax25_cb *s; +struct sock *sk;if ((ax25_dev =ax25_dev_ax25dev (dev)) ==NULL )return ;
@@ -85,13 +86,15 @@ static void ax25_kill_by_device(struct net_device *dev) again:ax25_for_each (s, &ax25_list) {if (s->ax25_dev == ax25_dev) { + sk = s->sk; +sock_hold (sk);spin_unlock_bh (&ax25_list_lock); -lock_sock (s->sk); +lock_sock (sk); s->ax25_dev =NULL ; -release_sock (s->sk); +release_sock (sk);ax25_disconnect (s,ENETUNREACH );spin_lock_bh (&ax25_list_lock); - +sock_put (sk);/* The entry could have been deleted from the * list meanwhile and thus the next pointer is * no longer valid. Play it safe and restart
net/core/drop_monitor.c +9 -2
@@ -277,13 +277,17 @@ static void trace_napi_poll_hit(void *ignore, struct napi_struct *napi,rcu_read_lock ();list_for_each_entry_rcu (new_stat, &hw_stats_list, list) { +struct net_device *dev; +/* * only add a note to our monitor buffer if: * 1) this is the dev we received on * 2) its after the last_rx delta * 3) our rx_dropped count has gone up */ -if ((new_stat->dev == napi->dev) && +/* Paired with WRITE_ONCE() in dropmon_net_event() */ + dev =READ_ONCE (new_stat->dev); +if ((dev == napi->dev) && (time_after (jiffies, new_stat->last_rx + dm_hw_check_delta)) && (napi->dev->stats.rx_dropped != new_stat->last_drop_val)) {trace_drop_common (NULL ,NULL );
@@ -1497,7 +1501,10 @@ static int dropmon_net_event(struct notifier_block *ev_block,mutex_lock (&net_dm_mutex);list_for_each_entry_safe (new_stat, tmp, &hw_stats_list, list) {if (new_stat->dev == dev) { - new_stat->dev =NULL ; + +/* Paired with READ_ONCE() in trace_napi_poll_hit() */ +WRITE_ONCE (new_stat->dev,NULL ); +if (trace_state ==TRACE_OFF ) {list_del_rcu (&new_stat->list);kfree_rcu (new_stat, rcu);
net/ipv4/ping.c +9 -2
@@ -172,16 +172,23 @@ static struct sock *ping_lookup(struct net *net, struct sk_buff *skb, u16 ident)struct sock *sk =NULL ;struct inet_sock *isk;struct hlist_nulls_node *hnode; -int dif = skb->dev->ifindex; +int dif, sdif;if (skb->protocol ==htons (ETH_P_IP )) { + dif =inet_iif (skb); + sdif =inet_sdif (skb);pr_debug ("try to find: num = %d, daddr = %pI4, dif = %d\n" , (int )ident, &ip_hdr (skb)->daddr, dif);#if IS_ENABLED (CONFIG_IPV6 ) } else if (skb->protocol == htons(ETH_P_IPV6)) { + dif =inet6_iif (skb); + sdif =inet6_sdif (skb);pr_debug ("try to find: num = %d, daddr = %pI6c, dif = %d\n" , (int )ident, &ipv6_hdr (skb)->daddr, dif);#endif + }else { +pr_err ("ping: protocol(%x) is not supported\n" ,ntohs (skb->protocol)); +return NULL ; }read_lock_bh (&ping_table.lock);
@@ -221,7 +228,7 @@ static struct sock *ping_lookup(struct net *net, struct sk_buff *skb, u16 ident) }if (sk->sk_bound_dev_if && sk->sk_bound_dev_if != dif && - sk->sk_bound_dev_if !=inet_sdif (skb)) + sk->sk_bound_dev_if != sdif)continue ;sock_hold (sk);
net/netfilter/nf_conntrack_proto_sctp.c +9 -0
@@ -489,6 +489,15 @@ int nf_conntrack_sctp_packet(struct nf_conn *ct,pr_debug ("Setting vtag %x for dir %d\n" , ih->init_tag, !dir); ct->proto.sctp.vtag[!dir] = ih->init_tag; + +/* don't renew timeout on init retransmit so +* port reuse by client or NAT middlebox cannot +* keep entry alive indefinitely (incl. nat info). +*/ +if (new_state ==SCTP_CONNTRACK_CLOSED && + old_state ==SCTP_CONNTRACK_CLOSED && +nf_ct_is_confirmed (ct)) + ignore = true; } ct->proto.sctp.state = new_state;
net/netfilter/nft_synproxy.c +3 -1
@@ -191,8 +191,10 @@ static int nft_synproxy_do_init(const struct nft_ctx *ctx,if (err) goto nf_ct_failure; err =nf_synproxy_ipv6_init (snet, ctx->net); -if (err) +if (err) { +nf_synproxy_ipv4_fini (snet, ctx->net); goto nf_ct_failure; + }break ; }
net/sched/act_api.c +11 -2
@@ -652,15 +652,24 @@ int tcf_action_exec(struct sk_buff *skb, struct tc_action **actions, restart_act_graph:for (i =0 ; i < nr_actions; i++) {const struct tc_action *a = actions[i]; +int repeat_ttl;if (jmp_prgcnt >0 ) { jmp_prgcnt -=1 ;continue ; } + + repeat_ttl =32 ; repeat: ret = a->ops->act (skb, a, res); -if (ret ==TC_ACT_REPEAT ) - goto repeat;/* we need a ttl - JHS */ + +if (unlikely (ret ==TC_ACT_REPEAT )) { +if (--repeat_ttl !=0 ) + goto repeat; +/* suspicious opcode, stop pipeline */ +net_warn_ratelimited ("TC_ACT_REPEAT abuse ?\n" ); +return TC_ACT_OK ; + }if (TC_ACT_EXT_CMP (ret,TC_ACT_JUMP )) { jmp_prgcnt = ret &TCA_ACT_MAX_PRIO_MASK ;
net/vmw_vsock/af_vsock.c +1 -0
@@ -1222,6 +1222,7 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr, sk->sk_state = sk->sk_state ==TCP_ESTABLISHED ?TCP_CLOSING :TCP_CLOSE ; sock->state =SS_UNCONNECTED ;vsock_transport_cancel_pkt (vsk); +vsock_remove_connected (vsk); goto out_wait; }else if (timeout ==0 ) { err = -ETIMEDOUT ;
scripts/Makefile.extrawarn +1 -0
@@ -49,6 +49,7 @@ KBUILD_CFLAGS += -Wno-format KBUILD_CFLAGS += -Wno-sign-compare KBUILD_CFLAGS += -Wno-format-zero-length KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) +KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access) endif endif
scripts/kconfig/confdata.c +9 -4
@@ -987,14 +987,19 @@ static int conf_write_dep(const char *name)static int conf_touch_deps (void ) { -const char *name; +const char *name, *tmp;struct symbol *sym;int res, i; -strcpy (depfile_path,"include/config/" ); - depfile_prefix_len =strlen (depfile_path); - name =conf_get_autoconfig_name (); + tmp =strrchr (name,'/' ); + depfile_prefix_len = tmp ? tmp - name +1 :0 ; +if (depfile_prefix_len +1 >sizeof (depfile_path)) +return -1 ; + +strncpy (depfile_path, name, depfile_prefix_len); + depfile_path[depfile_prefix_len] =0 ; +conf_read_simple (name,S_DEF_AUTO );sym_calc_value (modules_sym);
scripts/kconfig/preprocess.c +1 -1
@@ -141,7 +141,7 @@ static char *do_lineno(int argc, char *argv[])static char *do_shell (int argc,char *argv[]) {FILE *p; -char buf[256 ]; +char buf[4096 ];char *cmd;size_t nread;int i;
sound/pci/hda/hda_intel.c +3 -2
@@ -1608,6 +1608,7 @@ static struct snd_pci_quirk probe_mask_list[] = {/* forced codec slots */ SND_PCI_QUIRK (0x1043 ,0x1262 ,"ASUS W5Fm" ,0x103 ),SND_PCI_QUIRK (0x1046 ,0x1262 ,"ASUS W5F" ,0x103 ), +SND_PCI_QUIRK (0x1558 ,0x0351 ,"Schenker Dock 15" ,0x105 ),/* WinFast VP200 H (Teradici) user reported broken communication */ SND_PCI_QUIRK(0x3a21, 0x040d, "WinFast VP200 H", 0x101), {}
@@ -1793,8 +1794,6 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,assign_position_fix (chip,check_position_fix (chip, position_fix[dev])); -check_probe_mask (chip, dev); -if (single_cmd <0 )/* allow fallback to single_cmd at errors */ chip->fallback_to_single_cmd =1 ;else /* explicitly set to single_cmd or not */
@@ -1826,6 +1825,8 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci, chip->bus.needs_damn_long_delay =1 ; } +check_probe_mask (chip, dev); + err =snd_device_new (card,SNDRV_DEV_LOWLEVEL , chip, &ops);if (err <0 ) {dev_err (card->dev,"Error creating device [card]!\n" );
sound/soc/soc-ops.c +20 -9
@@ -314,7 +314,7 @@ int snd_soc_put_volsw(struct snd_kcontrol *kcontrol,unsigned int sign_bit = mc->sign_bit;unsigned int mask = (1 <<fls (max)) -1 ;unsigned int invert = mc->invert; -int err; +int err, ret;bool type_2r = false;unsigned int val2 =0 ;unsigned int val, val_mask;
@@ -356,12 +356,18 @@ int snd_soc_put_volsw(struct snd_kcontrol *kcontrol, err =snd_soc_component_update_bits (component, reg, val_mask, val);if (err <0 )return err; + ret = err; -if (type_2r) +if (type_2r) { err =snd_soc_component_update_bits (component, reg2, val_mask, - val2); + val2); +/* Don't discard any error code or drop change flag */ +if (ret ==0 || err <0 ) { + ret = err; + } + } -return err; +return ret; }EXPORT_SYMBOL_GPL (snd_soc_put_volsw);
@@ -517,7 +523,7 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol,unsigned int mask = (1 <<fls (max)) -1 ;unsigned int invert = mc->invert;unsigned int val, val_mask; -int ret; +int err, ret;if (invert) val = (max - ucontrol->value.integer.value[0 ]) & mask;
@@ -526,9 +532,10 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, val_mask = mask << shift; val = val << shift; - ret =snd_soc_component_update_bits (component, reg, val_mask, val); -if (ret <0 ) -return ret; + err =snd_soc_component_update_bits (component, reg, val_mask, val); +if (err <0 ) +return err; + ret = err;if (snd_soc_volsw_is_stereo (mc)) {if (invert)
@@ -538,8 +545,12 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, val_mask = mask << shift; val = val << shift; - ret =snd_soc_component_update_bits (component, rreg, val_mask, + err =snd_soc_component_update_bits (component, rreg, val_mask, val); +/* Don't discard any error code or drop change flag */ +if (ret ==0 || err <0 ) { + ret = err; + } }return ret;
tools/lib/subcmd/subcmd-util.h +2 -9
@@ -50,15 +50,8 @@ static NORETURN inline void die(const char *err, ...)static inline void *xrealloc (void *ptr,size_t size) {void *ret =realloc (ptr, size); -if (!ret && !size) - ret =realloc (ptr,1 ); -if (!ret) { - ret =realloc (ptr, size); -if (!ret && !size) - ret =realloc (ptr,1 ); -if (!ret) -die ("Out of memory, realloc failed" ); - } +if (!ret) +die ("Out of memory, realloc failed" );return ret; }
tools/testing/selftests/rtc/settings +1 -1
@@ -1 +1 @@ -timeout=90 +timeout=180
tools/testing/selftests/zram/zram.sh +1 -14
@@ -2,9 +2,6 @@ # SPDX-License-Identifier: GPL-2.0 TCID="zram.sh" -# Kselftest framework requirement - SKIP code is 4. -ksft_skip=4 - . ./zram_lib.sh run_zram () {
@@ -18,14 +15,4 @@ echo "" check_prereqs -# check zram module exists -MODULE_PATH=/lib/modules/`uname -r`/kernel/drivers/block/zram/zram.ko -if [ -f $MODULE_PATH ]; then - run_zram -elif [ -b /dev/zram0 ]; then - run_zram -else - echo "$TCID : No zram.ko module or /dev/zram0 device file not found" - echo "$TCID : CONFIG_ZRAM is not set" - exit $ksft_skip -fi +run_zram
tools/testing/selftests/zram/zram01.sh +9 -24
@@ -33,9 +33,7 @@ zram_algs="lzo" zram_fill_fs() { - local mem_free0=$(free -m | awk 'NR==2 {print $4}') - - for i in $(seq 0 $(($dev_num - 1))); do + for i in $(seq $dev_start $dev_end); do echo "fill zram$i..." local b=0 while [ true ]; do
@@ -45,29 +43,17 @@ zram_fill_fs() b=$(($b + 1)) done echo "zram$i can be filled with '$b' KB" - done - local mem_free1=$(free -m | awk 'NR==2 {print $4}') - local used_mem=$(($mem_free0 - $mem_free1)) + local mem_used_total=`awk '{print $3}' "/sys/block/zram$i/mm_stat"` + local v=$((100 * 1024 * $b / $mem_used_total)) + if [ "$v" -lt 100 ]; then + echo "FAIL compression ratio: 0.$v:1" + ERR_CODE=-1 + return + fi - local total_size=0 - for sm in $zram_sizes; do - local s=$(echo $sm | sed 's/M//') - total_size=$(($total_size + $s)) + echo "zram compression ratio: $(echo "scale=2; $v / 100 " | bc):1: OK" done - - echo "zram used ${used_mem}M, zram disk sizes ${total_size}M" - - local v=$((100 * $total_size / $used_mem)) - - if [ "$v" -lt 100 ]; then - echo "FAIL compression ratio: 0.$v:1" - ERR_CODE=-1 - zram_cleanup - return - fi - - echo "zram compression ratio: $(echo "scale=2; $v / 100 " | bc):1: OK" } check_prereqs
@@ -81,7 +67,6 @@ zram_mount zram_fill_fs zram_cleanup -zram_unload if [ $ERR_CODE -ne 0 ]; then echo "$TCID : [FAIL]"
tools/testing/selftests/zram/zram02.sh +0 -1
@@ -36,7 +36,6 @@ zram_set_memlimit zram_makeswap zram_swapoff zram_cleanup -zram_unload if [ $ERR_CODE -ne 0 ]; then echo "$TCID : [FAIL]"
tools/testing/selftests/zram/zram_lib.sh +88 -46
247 lines not on this page · raw message
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.181 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/mach-omap2/display.c | 2 arch/arm/mach-omap2/omap_hwmod.c | 4 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 6 arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts | 8 arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 6 arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts | 8 arch/arm64/kernel/ftrace.c | 55 +--- arch/arm64/kernel/module.c | 47 +++- arch/parisc/Makefile | 1 arch/parisc/kernel/module.c | 10 arch/parisc/kernel/module.lds | 7 arch/parisc/mm/init.c | 9 arch/powerpc/lib/sstep.c | 2 arch/x86/kvm/pmu.c | 2 arch/x86/kvm/svm.c | 2 block/bfq-iosched.c | 2 block/elevator.c | 2 drivers/ata/libata-core.c | 1 drivers/dma/at_xdmac.c | 6 drivers/dma/sh/rcar-dmac.c | 4 drivers/edac/edac_mc.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 drivers/gpu/drm/radeon/atombios_encoders.c | 3 drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 14 - drivers/hid/hid-ids.h | 1 drivers/hid/hid-quirks.c | 1 drivers/hv/vmbus_drv.c | 5 drivers/i2c/busses/i2c-brcmstb.c | 2 drivers/irqchip/irq-sifive-plic.c | 1 drivers/mmc/core/block.c | 28 +- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 2 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 3 drivers/mtd/nand/raw/qcom_nandc.c | 14 - drivers/net/bonding/bond_3ad.c | 30 ++ drivers/net/bonding/bond_main.c | 5 drivers/net/dsa/lan9303-core.c | 2 drivers/net/ethernet/cadence/macb_main.c | 2 drivers/net/ieee802154/at86rf230.c | 13 - drivers/net/ieee802154/ca8210.c | 4 drivers/net/usb/qmi_wwan.c | 2 drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 2 drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c | 3 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 3 drivers/nvme/host/core.c | 9 drivers/nvme/host/rdma.c | 1 drivers/nvme/host/tcp.c | 1 drivers/parisc/ccio-dma.c | 3 drivers/parisc/sba_iommu.c | 3 drivers/platform/x86/intel_speed_select_if/isst_if_common.c | 97 +++++--- drivers/scsi/lpfc/lpfc.h | 1 drivers/scsi/lpfc/lpfc_attr.c | 3 drivers/scsi/lpfc/lpfc_els.c | 20 + drivers/scsi/lpfc/lpfc_nportdisc.c | 5 drivers/tty/serial/8250/8250_gsc.c | 2 fs/btrfs/send.c | 4 fs/ext4/extents.c | 92 +++++--- fs/nfs/dir.c | 4 fs/nfs/inode.c | 9 fs/quota/dquot.c | 11 fs/super.c | 19 + include/asm-generic/vmlinux.lds.h | 14 - include/linux/ftrace.h | 40 +++ include/linux/sched.h | 1 include/net/bond_3ad.h | 2 kernel/async.c | 3 kernel/fork.c | 7 kernel/module.c | 27 -- kernel/trace/ftrace.c | 6 kernel/trace/trace.c | 4 kernel/tsacct.c | 7 lib/iov_iter.c | 2 net/ax25/af_ax25.c | 9 net/core/drop_monitor.c | 11 net/ipv4/ping.c | 11 net/netfilter/nf_conntrack_proto_sctp.c | 9 net/netfilter/nft_synproxy.c | 4 net/sched/act_api.c | 13 - net/vmw_vsock/af_vsock.c | 1 scripts/Makefile.extrawarn | 1 scripts/kconfig/confdata.c | 13 - scripts/kconfig/preprocess.c | 2 sound/pci/hda/hda_intel.c | 5 sound/soc/soc-ops.c | 29 +- tools/lib/subcmd/subcmd-util.h | 11 tools/testing/selftests/rtc/settings | 2 tools/testing/selftests/zram/zram.sh | 15 - tools/testing/selftests/zram/zram01.sh | 33 -- tools/testing/selftests/zram/zram02.sh | 1 tools/testing/selftests/zram/zram_lib.sh | 134 +++++++----- 90 files changed, 627 insertions(+), 404 deletions(-)
Anders Roxell (1):
powerpc/lib/sstep: fix 'ptesync' build error
Brenda Streiff (1):
kconfig: let 'shell' return enough output for deep path names
Bryan O'Donoghue (1):
mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
Christian Eggers (1):
mtd: rawnand: gpmi: don't leak PM reference in error path
Christian Hewitt (3):
arm64: dts: meson-gx: add ATF BL32 reserved-memory region
arm64: dts: meson-g12: add ATF BL32 reserved-memory region
arm64: dts: meson-g12: drop BL32 region from SEI510/SEI610
Christian König (1):
drm/amdgpu: fix logic inversion in check
Christian Löhle (1):
mmc: block: fix read single on recovery logic
Darrick J. Wong (2):
vfs: make freeze_super abort when sync_filesystem returns error
quota: make dquot_quota_sync return errors from ->sync_fs
Duoming Zhou (1):
ax25: improve the incomplete fix to avoid UAF and NPD bugs
Dāvis Mosāns (1):
btrfs: send: in case of IO error log it
Eliav Farber (1):
EDAC: Fix calculation of returned address and next offset in edac_align_ptr()
Eric Dumazet (3):
drop_monitor: fix data-race in dropmon_net_event / trace_napi_poll_hit
bonding: fix data-races around agg_select_timer
net: sched: limit TC_ACT_REPEAT loops
Eric W. Biederman (1):
taskstats: Cleanup the use of task->exit_code
Florian Westphal (1):
netfilter: conntrack: don't refresh sctp entries in closed state
Greg Kroah-Hartman (1):
Linux 5.4.181
Guo Ren (1):
irqchip/sifive-plic: Add missing thead,c900-plic match string
Igor Pylypiv (1):
Revert "module, async: async_synchronize_full() on module init iff async is used"
JaeSang Yoo (1):
tracing: Fix tp_printk option related with tp_printk_stop_on_boot
James Smart (1):
scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop
Jiasheng Jiang (1):
dmaengine: sh: rcar-dmac: Check for error num after setting mask
Jim Mattson (1):
KVM: x86/pmu: Use AMD64_RAW_EVENT_MASK for PERF_TYPE_RAW
Jing Leng (1):
kconfig: fix failing to generate auto.conf
Johannes Berg (3):
iwlwifi: fix use-after-free
iwlwifi: pcie: fix locking when "HW not ready"
iwlwifi: pcie: gen2: fix locking when "HW not ready"
John David Anglin (3):
parisc: Drop __init from map_pages declaration
parisc: Fix data TLB miss in sba_unmap_sg
parisc: Fix sglist access in ccio-dma.c
Kees Cook (1):
libsubcmd: Fix use-after-free for realloc(..., 0)
Laibin Qiu (1):
block/wbt: fix negative inflight counter when remove scsi device
Mans Rullgard (1):
net: dsa: lan9303: fix reset on probe
Marc St-Amand (1):
net: macb: Align the dma and coherent dma masks
Mark Brown (2):
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw()
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_range()
Mark Rutland (4):
ftrace: add ftrace_init_nop() module/ftrace: handle patchable-function-entry
arm64: module: rework special section handling
arm64: module/ftrace: intialize PLT at load time
Max Kellermann (1):
lib/iov_iter: initialize "flags" in new pipe_buffer
Miaoqian Lin (1):
Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj
Miquel Raynal (2):
net: ieee802154: at86rf230: Stop leaking skb's
net: ieee802154: ca8210: Fix lifs/sifs periodsNathan Chancellor (1):
Makefile.extrawarn: Move -Wunaligned-access to W=1
Nicholas Bishop (1):
drm/radeon: Fix backlight control on iMac 12,1
Nícolas F. R. A. Prado (1):
selftests: rtc: Increase test timeout so that all tests run
Pablo Neira Ayuso (1):
netfilter: nft_synproxy: unregister hooks on init error path
Rafał Miłecki (1):
i2c: brcmstb: fix support for DSL and CM variants
Randy Dunlap (1):
serial: parisc: GSC: fix build when IOSAPIC is not set
Sagi Grimberg (3):
nvme: fix a possible use-after-free in controller reset during load
nvme-tcp: fix possible use-after-free in transport error_recovery work
nvme-rdma: fix possible use-after-free in transport error_recovery work
Sascha Hauer (1):
drm/rockchip: dw_hdmi: Do not leave clock enabled in error case
Sean Christopherson (1):
Revert "svm: Add warning message for AVIC IPI invalid target"
Sergio Costas (1):
HID:Add support for UGTABLET WP5540
Seth Forshee (1):
vsock: remove vsock from connected table when connect is interrupted by a signal
Slark Xiao (1):
net: usb: qmi_wwan: Add support for Dell DW5829e
Srinivas Pandruvada (1):
platform/x86: ISST: Fix possible circular locking dependency detected
Takashi Iwai (2):
ALSA: hda: Fix regression on forced probe mask option
ALSA: hda: Fix missing codec probe on Shenker Dock 15
Trond Myklebust (2):
NFS: LOOKUP_DIRECTORY is also ok with symlinks
NFS: Do not report writeback errors in nfs_getattr()
Tudor Ambarus (1):
dmaengine: at_xdmac: Start transfer for cyclic channels in issue_pending
Waiman Long (1):
copy_process(): Move fd_install() out of sighand->siglock critical section
Wan Jiabing (1):
ARM: OMAP2+: hwmod: Add of_node_put() before break
Xin Long (1):
ping: fix the dif and sdif check in ping_lookup
Yang Xu (3):
selftests/zram: Skip max_comp_streams interface on newer kernel selftests/zram01.sh: Fix compression ratio calculation selftests/zram: Adapt the situation that /dev/zram0 is being used
Ye Guojin (1):
ARM: OMAP2+: adjust the location of put_device() call in omapdss_init_of
Zhang Changzhong (1):
bonding: force carrier update when releasing slave
Zhang Yi (3):
ext4: check for out-of-order index extents in ext4_valid_extent_entries()
ext4: check for inconsistent extents between index and leaf block
ext4: prevent partial update of the extent blocks
Zoltán Böszörményi (1):
ata: libata-core: Disable TRIM on M88V29
david regan (1):
mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status