Linux 4.19.184
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.184 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/at91-sama5d27_som1.dtsi | 4 arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi | 1 arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi | 1 arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 1 arch/arm64/kernel/crash_dump.c | 2 arch/ia64/include/asm/syscall.h | 2 arch/ia64/kernel/ptrace.c | 24 +++-- arch/powerpc/include/asm/dcr-native.h | 8 - arch/sparc/kernel/traps_64.c | 13 +- arch/x86/mm/mem_encrypt.c | 2 block/genhd.c | 4 drivers/acpi/internal.h | 6 + drivers/acpi/scan.c | 88 +++++++++++-------- drivers/atm/eni.c | 3 drivers/atm/idt77105.c | 4 drivers/atm/lanai.c | 5 - drivers/atm/uPD98402.c | 2 drivers/block/xen-blkback/blkback.c | 2 drivers/bus/omap_l3_noc.c | 4 drivers/gpio/gpiolib-acpi.c | 2 drivers/gpu/drm/Kconfig | 1 drivers/gpu/drm/msm/msm_drv.c | 4 drivers/infiniband/hw/cxgb4/cm.c | 4 drivers/md/dm-ioctl.c | 2 drivers/md/dm-verity-target.c | 2 drivers/net/can/c_can/c_can.c | 24 ----- drivers/net/can/c_can/c_can_pci.c | 3 drivers/net/can/c_can/c_can_platform.c | 6 + drivers/net/can/dev.c | 1 drivers/net/can/flexcan.c | 8 + drivers/net/can/m_can/m_can.c | 3 drivers/net/dsa/bcm_sf2.c | 6 - drivers/net/ethernet/faraday/ftgmac100.c | 1 drivers/net/ethernet/freescale/fec_ptp.c | 7 + drivers/net/ethernet/freescale/gianfar.c | 15 +++ drivers/net/ethernet/hisilicon/hns/hns_enet.c | 4 drivers/net/ethernet/intel/e1000e/82571.c | 2 drivers/net/ethernet/intel/e1000e/netdev.c | 6 + drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 6 - drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 6 + drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c | 3 drivers/net/ethernet/socionext/netsec.c | 9 + drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 2 drivers/net/ethernet/sun/niu.c | 2 drivers/net/ethernet/tehuti/tehuti.c | 1 drivers/net/usb/cdc-phonet.c | 2 drivers/net/usb/r8152.c | 35 +------ drivers/net/veth.c | 3 drivers/net/wan/fsl_ucc_hdlc.c | 8 + drivers/platform/x86/intel-vbtn.c | 12 ++ drivers/scsi/mpt3sas/mpt3sas_base.c | 8 + drivers/scsi/qedi/qedi_main.c | 1 fs/ext4/xattr.c | 4 fs/nfs/Kconfig | 2 fs/nfs/nfs3xdr.c | 3 fs/nfs/nfs4proc.c | 3 fs/squashfs/export.c | 8 + fs/squashfs/id.c | 6 - fs/squashfs/squashfs_fs.h | 1 fs/squashfs/xattr_id.c | 6 - include/acpi/acpi_bus.h | 1 include/linux/bpf.h | 9 + include/linux/if_macvlan.h | 3 include/linux/mutex.h | 2 include/linux/netfilter/x_tables.h | 7 - include/linux/u64_stats_sync.h | 7 - include/net/red.h | 10 +- include/net/rtnetlink.h | 2 net/core/dev.c | 2 net/ipv4/netfilter/arp_tables.c | 16 +-- net/ipv4/netfilter/ip_tables.c | 16 +-- net/ipv6/netfilter/ip6_tables.c | 16 +-- net/mac80211/cfg.c | 4 net/mac80211/ibss.c | 2 net/netfilter/nf_conntrack_netlink.c | 1 net/netfilter/x_tables.c | 49 +++++++--- net/qrtr/qrtr.c | 5 + net/sched/sch_choke.c | 7 - net/sched/sch_gred.c | 2 net/sched/sch_red.c | 7 + net/sched/sch_sfq.c | 2 tools/lib/bpf/Makefile | 2 tools/perf/util/auxtrace.c | 4 84 files changed, 357 insertions(+), 229 deletions(-)
Adrian Hunter (1):
perf auxtrace: Fix auxtrace queue conflict
Andy Shevchenko (1):
ACPI: scan: Use unique number for instance_no
Angelo Dureghello (1):
can: flexcan: flexcan_chip_freeze(): fix chip freeze for missing bitrate
Aya Levin (1):
net/mlx5e: Fix error path for ethtool set-priv-flag
Christian König (1):
drm/radeon: fix AGP dependency
Claudiu Beznea (1):
ARM: dts: at91-sama5d27_som1: fix phy address to 7
Corentin Labbe (1):
net: stmmac: dwmac-sun8i: Provide TX and RX fifo sizes
Daniel Wagner (1):
block: Suppress uevent for hidden device when removed
Denis Efremov (1):
sun/niu: fix wrong RXMAC_BC_FRM_CNT_COUNT count
Dinghao Liu (2):
ixgbe: Fix memleak in ixgbe_configure_clsu32
e1000e: Fix error handling in e1000_set_d0_lplu_state_82571
Dmitry Baryshkov (1):
drm/msm: fix shutdown hook in case GPU components failed to bind
Dylan Hung (1):
ftgmac100: Restart MAC HW once
Eric Dumazet (3):
macvlan: macvlan_count_rx() needs to be aware of preemption
net: sched: validate stab values
net: qrtr: fix a kernel-infoleak in qrtr_recvmsg()
Florian Fainelli (1):
net: dsa: bcm_sf2: Qualify phydev->dev_flags based on port
Florian Westphal (1):
netfilter: ctnetlink: fix dump of the expect mask attribute
Frank Sorenson (1):
NFS: Correct size calculation for create reply length
Georgi Valkov (1):
libbpf: Fix INSTALL flag order
Greg Kroah-Hartman (1):
Linux 4.19.184
Grygorii Strashko (1):
bus: omap_l3_noc: mark l3 irqs as IRQF_NO_THREAD
Hans de Goede (1):
platform/x86: intel-vbtn: Stop reporting SW_DOCK events
Hayes Wang (1):
Revert "r8152: adjust the settings about MAC clock speed down for RTL8153"
Heiko Thiery (1):
net: fec: ptp: avoid register access when ipg clock is disabled
Horia Geantă (3):
arm64: dts: ls1046a: mark crypto engine dma coherent
arm64: dts: ls1012a: mark crypto engine dma coherent
arm64: dts: ls1043a: mark crypto engine dma coherent
Isaku Yamahata (1):
x86/mem_encrypt: Correct physical address calculation in __set_clr_pte_enc()
J. Bruce Fields (1):
nfs: we don't support removing system.nfs4_acl
Jan Beulich (1):
xen-blkback: don't leak persistent grants from xen_blkbk_map()
Jan Kara (1):
ext4: add reclaim checks to xattr code
JeongHyeon Lee (1):
dm verity: add root hash pkcs#7 signature verification
Jia-Ju Bai (5):
net: tehuti: fix error return code in bdx_probe()
net: hisilicon: hns: fix error return code of hns_nic_clear_all_rx_fetch()
net: wan: fix error return code of uhdlc_init()
scsi: qedi: Fix error return code of qedi_alloc_global_queues()
scsi: mpt3sas: Fix error return code of mpt3sas_base_attach()
Johan Hovold (1):
net: cdc-phonet: fix data-interface release on probe failure
Johannes Berg (1):
mac80211: fix rate mask reset
Lv Yunlong (1):
net/qlcnic: Fix a use after free in qlcnic_83xx_get_minidump_template
Maciej Fijalkowski (1):
veth: Store queue_mapping independently of XDP prog presence
Marc Kleine-Budde (1):
can: peak_usb: Revert "can: peak_usb: add forgotten supported devices"
Mark Tomlinson (3):
Revert "netfilter: x_tables: Switch synchronization to RCU"
netfilter: x_tables: Use correct memory barriers. Revert "netfilter: x_tables: Update remaining dereference to RCU"
Markus Theil (1):
mac80211: fix double free in ibss_leave
Martin Willi (1):
can: dev: Move device back to init netns on owning netns delete
Mian Yousaf Kaukab (1):
netsec: restore phy power state after controller reset
Michael Braun (1):
gianfar: fix jumbo packets+napi+rx overrun crash
Michael Ellerman (1):
powerpc/4xx: Fix build errors from mfdcr()
Mikulas Patocka (1):
dm ioctl: fix out of bounds array access when no devices
Pavel Tatashin (1):
arm64: kdump: update ppos when reading elfcorehdr
Peter Zijlstra (1):
u64_stats,lockdep: Fix u64_stats_init() vs lockdep
Phillip Lougher (1):
squashfs: fix xattr id and id lookup sanity checks
Potnuri Bharat Teja (1):
RDMA/cxgb4: Fix adapter LE hash errors while destroying ipv6 listening server
Rafael J. Wysocki (1):
ACPI: scan: Rearrange memory allocation in acpi_device_add()
Rob Gardner (1):
sparc64: Fix opcode filtering in handling of no fault loads
Sasha Levin (1):
bpf: Don't do bpf_cgroup_storage_set() for kuprobe/tp programs
Sean Nyekjaer (1):
squashfs: fix inode lookup sanity checks
Sergei Trofimovich (2):
ia64: fix ia64_syscall_get_set_arguments() for break-based syscalls
ia64: fix ptrace(PTRACE_SYSCALL_INFO_EXIT) sign
Stephane Grosjean (1):
can: peak_usb: add forgotten supported devices
Thomas Gleixner (1):
locking/mutex: Fix non debug version of mutex_lock_io_nested()
Timo Rothenpieler (1):
nfs: fix PNFS_FLEXFILE_LAYOUT Kconfig default
Tong Zhang (6):
atm: eni: dont release is never initialized
atm: lanai: dont run lanai_dev_close if not open
atm: uPD98402: fix incorrect allocation
atm: idt77252: fix null-ptr-dereference
can: c_can_pci: c_can_pci_remove(): fix use-after-free
can: c_can: move runtime PM enable/disable to c_can_platform
Torin Cooper-Bennun (1):
can: m_can: m_can_do_rx_poll(): fix extraneous msg loss warning
Vitaly Lifshits (1):
e1000e: add rtnl_lock() to e1000_reset_task
Yang Li (1):
gpiolib: acpi: Add missing IRQF_ONESHOT
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 183 +SUBLEVEL = 184 EXTRAVERSION = NAME = "People's Front"
arch/arm/boot/dts/at91-sama5d27_som1.dtsi +2 -2
@@ -67,8 +67,8 @@ pinctrl-0 = <&pinctrl_macb0_default>; phy-mode = "rmii"; - ethernet-phy@0 { - reg = <0x0>; + ethernet-phy@7 { + reg = <0x7>; interrupt-parent = <&pioA>; interrupts = <PIN_PD31 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default";
arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi +1 -0
@@ -177,6 +177,7 @@ ranges = <0x0 0x00 0x1700000 0x100000>; reg = <0x00 0x1700000 0x0 0x100000>; interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; + dma-coherent; sec_jr0: jr@10000 { compatible = "fsl,sec-v5.4-job-ring",
arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi +1 -0
@@ -237,6 +237,7 @@ ranges = <0x0 0x00 0x1700000 0x100000>; reg = <0x00 0x1700000 0x0 0x100000>; interrupts = <0 75 0x4>; + dma-coherent; sec_jr0: jr@10000 { compatible = "fsl,sec-v5.4-job-ring",
arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi +1 -0
@@ -243,6 +243,7 @@ ranges = <0x0 0x00 0x1700000 0x100000>; reg = <0x00 0x1700000 0x0 0x100000>; interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; + dma-coherent; sec_jr0: jr@10000 { compatible = "fsl,sec-v5.4-job-ring",
arch/arm64/kernel/crash_dump.c +2 -0
@@ -67,5 +67,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,ssize_t elfcorehdr_read (char *buf,size_t count,u64 *ppos) {memcpy (buf,phys_to_virt ((phys_addr_t)*ppos), count); + *ppos += count; +return count; }
arch/ia64/include/asm/syscall.h +1 -1
@@ -35,7 +35,7 @@ static inline void syscall_rollback(struct task_struct *task,static inline long syscall_get_error (struct task_struct *task,struct pt_regs *regs) { -return regs->r10 ==-1 ? regs->r8:0 ; +return regs->r10 ==-1 ? -regs->r8:0 ; } static inline long syscall_get_return_value(struct task_struct *task,
arch/ia64/kernel/ptrace.c +18 -6
@@ -2147,27 +2147,39 @@ static void syscall_get_set_args_cb(struct unw_frame_info *info, void *data) {struct syscall_get_set_args *args = data;struct pt_regs *pt = args->regs; -unsigned long *krbs, cfm, ndirty; +unsigned long *krbs, cfm, ndirty, nlocals, nouts;int i, count;if (unw_unwind_to_user (info) <0 )return ; +/* +* We get here via a few paths: +* - break instruction: cfm is shared with caller. +* syscall args are in out= regs, locals are non-empty. +* - epsinstruction: cfm is set by br.call +* locals don't exist. +* +* For both cases argguments are reachable in cfm.sof - cfm.sol. +* CFM: [ ... | sor: 17..14 | sol : 13..7 | sof : 6..0 ] +*/ cfm = pt->cr_ifs; + nlocals = (cfm >>7 ) &0x7f ;/* aka sol */ + nouts = (cfm &0x7f ) - nlocals;/* aka sof - sol */ krbs = (unsigned long *)info->task +IA64_RBS_OFFSET /8 ; ndirty =ia64_rse_num_regs (krbs, krbs + (pt->loadrs >>19 )); count =0 ;if (in_syscall (pt)) - count =min_t (int, args->n, cfm &0x7f ); + count =min_t (int, args->n, nouts); +/* Iterate over outs. */ for (i =0 ; i < count; i++) { +int j = ndirty + nlocals + i + args->i;if (args->rw) - *ia64_rse_skip_regs (krbs, ndirty + i + args->i) = - args->args[i]; + *ia64_rse_skip_regs (krbs, j) = args->args[i];else - args->args[i] = *ia64_rse_skip_regs (krbs, - ndirty + i + args->i); + args->args[i] = *ia64_rse_skip_regs (krbs, j); }if (!args->rw) {
arch/powerpc/include/asm/dcr-native.h +4 -4
@@ -66,8 +66,8 @@ static inline void mtdcrx(unsigned int reg, unsigned int val)#define mfdcr (rn) \ ({unsigned int rval; \ if (__builtin_constant_p(rn) && rn < 1024) \ - asm volatile("mfdcr %0," __stringify(rn) \ - : "=r" (rval)); \ + asm volatile("mfdcr %0, %1" : "=r" (rval) \ + : "n" (rn)); \ else if (likely(cpu_has_feature(CPU_FTR_INDEXED_DCR))) \ rval = mfdcrx(rn); \ else \
@@ -77,8 +77,8 @@ static inline void mtdcrx(unsigned int reg, unsigned int val)#define mtdcr (rn, v) \ do { \ if (__builtin_constant_p(rn) && rn < 1024) \ - asm volatile("mtdcr " __stringify(rn) ",%0" \ - : : "r" (v)); \ + asm volatile("mtdcr %0, %1" \ + : : "n" (rn), "r" (v)); \ else if (likely(cpu_has_feature(CPU_FTR_INDEXED_DCR))) \ mtdcrx(rn, v); \ else \
arch/sparc/kernel/traps_64.c +6 -7
@@ -274,14 +274,13 @@ bool is_no_fault_exception(struct pt_regs *regs) asi = (regs->tstate >>24 );/* saved %asi */ else asi = (insn >>5 );/* immediate asi */ -if ((asi &0xf2 ) ==ASI_PNF ) { -if (insn &0x1000000 ) {/* op3[5:4]=3 */ -handle_ldf_stq (insn, regs); -return true; - }else if (insn &0x200000 ) {/* op3[2], stores */ +if ((asi &0xf6 ) ==ASI_PNF ) { +if (insn &0x200000 )/* op3[2], stores */ return false; - } -handle_ld_nf (insn, regs); +if (insn &0x1000000 )/* op3[5:4]=3 (fp) */ +handle_ldf_stq (insn, regs); +else +handle_ld_nf (insn, regs);return true; } }
arch/x86/mm/mem_encrypt.c +1 -1
@@ -228,7 +228,7 @@ static void __init __set_clr_pte_enc(pte_t *kpte, int level, bool enc)if (pgprot_val (old_prot) ==pgprot_val (new_prot))return ; - pa = pfn <<page_level_shift (level); + pa = pfn <<PAGE_SHIFT ; size =page_level_size (level);/*
block/genhd.c +1 -3
@@ -623,10 +623,8 @@ static void register_disk(struct device *parent, struct gendisk *disk, disk->part0.holder_dir =kobject_create_and_add ("holders" , &ddev->kobj); disk->slave_dir =kobject_create_and_add ("slaves" , &ddev->kobj); -if (disk->flags &GENHD_FL_HIDDEN ) { -dev_set_uevent_suppress (ddev,0 ); +if (disk->flags &GENHD_FL_HIDDEN )return ; - }/* No minors to use for partitions */ if (!disk_part_scan_enabled (disk))
drivers/acpi/internal.h +5 -1
@@ -18,6 +18,8 @@#ifndef _ACPI_INTERNAL_H_#define _ACPI_INTERNAL_H_ +#include <linux/idr.h> +#define PREFIX "ACPI: "int early_acpi_osi_init (void );
@@ -97,9 +99,11 @@ void acpi_scan_table_handler(u32 event, void *table, void *context);extern struct list_head acpi_bus_id_list; +#define ACPI_MAX_DEVICE_INSTANCES 4096 +struct acpi_device_bus_id {const char *bus_id; -unsigned int instance_no; +struct ida instance_ida;struct list_head node; };
drivers/acpi/scan.c +53 -35
128 lines not on this page · raw message
drivers/atm/eni.c +2 -1
@@ -2279,7 +2279,8 @@ static int eni_init_one(struct pci_dev *pci_dev,return rc; err_eni_release: -eni_do_release (dev); + dev->phy =NULL ; +iounmap (ENI_DEV (dev)->ioaddr); err_unregister:atm_dev_deregister (dev); err_free_consistent:
drivers/atm/idt77105.c +2 -2
@@ -261,7 +261,7 @@ static int idt77105_start(struct atm_dev *dev) {unsigned long flags; -if (!(dev->dev_data =kmalloc (sizeof (struct idt77105_priv ),GFP_KERNEL ))) +if (!(dev->phy_data =kmalloc (sizeof (struct idt77105_priv ),GFP_KERNEL )))return -ENOMEM ;PRIV (dev)->dev = dev;spin_lock_irqsave (&idt77105_priv_lock, flags);
@@ -336,7 +336,7 @@ static int idt77105_stop(struct atm_dev *dev)else idt77105_all = walk->next; dev->phy =NULL ; - dev->dev_data =NULL ; + dev->phy_data =NULL ;kfree (walk);break ; }
drivers/atm/lanai.c +4 -1
@@ -2238,6 +2238,7 @@ static int lanai_dev_open(struct atm_dev *atmdev)conf1_write (lanai);#endif iounmap (lanai->base); + lanai->base =NULL ; error_pci:pci_disable_device (lanai->pci); error:
@@ -2250,6 +2251,8 @@ static int lanai_dev_open(struct atm_dev *atmdev)static void lanai_dev_close (struct atm_dev *atmdev) {struct lanai_dev *lanai = (struct lanai_dev *) atmdev->dev_data; +if (lanai->base==NULL ) +return ; printk(KERN_INFO DEV_LABEL "(itf %d): shutting down interface\n", lanai->number);lanai_timed_poll_stop (lanai);
@@ -2559,7 +2562,7 @@ static int lanai_init_one(struct pci_dev *pci,struct atm_dev *atmdev;int result; - lanai =kmalloc (sizeof (*lanai),GFP_KERNEL ); + lanai =kzalloc (sizeof (*lanai),GFP_KERNEL );if (lanai ==NULL ) { printk(KERN_ERR DEV_LABEL ": couldn't allocate dev_data structure!\n");
drivers/atm/uPD98402.c +1 -1
@@ -210,7 +210,7 @@ static void uPD98402_int(struct atm_dev *dev)static int uPD98402_start (struct atm_dev *dev) {DPRINTK ("phy_start\n" ); -if (!(dev->dev_data =kmalloc (sizeof (struct uPD98402_priv ),GFP_KERNEL ))) +if (!(dev->phy_data =kmalloc (sizeof (struct uPD98402_priv ),GFP_KERNEL )))return -ENOMEM ;spin_lock_init (&PRIV (dev)->lock);memset (&PRIV (dev)->sonet_stats,0 ,sizeof (struct k_sonet_stats ));
drivers/block/xen-blkback/blkback.c +1 -1
@@ -944,7 +944,7 @@ static int xen_blkbk_map(struct xen_blkif_ring *ring, out:for (i = last_map; i < num; i++) {/* Don't zap current batch's valid persistent grants. */ -if (i >= last_map + segs_to_map) +if (i >= map_until) pages[i]->persistent_gnt =NULL ; pages[i]->handle =BLKBACK_INVALID_HANDLE ; }
drivers/bus/omap_l3_noc.c +2 -2
@@ -285,7 +285,7 @@ static int omap_l3_probe(struct platform_device *pdev)*/ l3->debug_irq =platform_get_irq (pdev,0 ); ret =devm_request_irq (l3->dev, l3->debug_irq, l3_interrupt_handler, -0x0 ,"l3-dbg-irq" , l3); +IRQF_NO_THREAD ,"l3-dbg-irq" , l3);if (ret) {dev_err (l3->dev,"request_irq failed for %d\n" , l3->debug_irq);
@@ -294,7 +294,7 @@ static int omap_l3_probe(struct platform_device *pdev) l3->app_irq =platform_get_irq (pdev,1 ); ret =devm_request_irq (l3->dev, l3->app_irq, l3_interrupt_handler, -0x0 ,"l3-app-irq" , l3); +IRQF_NO_THREAD ,"l3-app-irq" , l3);if (ret)dev_err (l3->dev,"request_irq failed for %d\n" , l3->app_irq);
drivers/gpio/gpiolib-acpi.c +1 -1
@@ -177,7 +177,7 @@ static void acpi_gpiochip_request_irq(struct acpi_gpio_chip *acpi_gpio,int ret, value; ret =request_threaded_irq (event->irq,NULL , event->handler, - event->irqflags,"ACPI:Event" , event); + event->irqflags |IRQF_ONESHOT ,"ACPI:Event" , event);if (ret) { dev_err(acpi_gpio->chip->parent, "Failed to setup interrupt handler for %d\n",
drivers/gpu/drm/Kconfig +1 -0
@@ -192,6 +192,7 @@ source "drivers/gpu/drm/arm/Kconfig" config DRM_RADEON tristate "ATI Radeon" depends on DRM && PCI && MMU + depends on AGP || !AGP select FW_LOADER select DRM_KMS_HELPER select DRM_TTM
drivers/gpu/drm/msm/msm_drv.c +4 -0
@@ -1363,6 +1363,10 @@ static int msm_pdev_remove(struct platform_device *pdev)static void msm_pdev_shutdown (struct platform_device *pdev) {struct drm_device *drm =platform_get_drvdata (pdev); +struct msm_drm_private *priv = drm ? drm->dev_private :NULL ; + +if (!priv || !priv->kms) +return ;drm_atomic_helper_shutdown (drm); }
drivers/infiniband/hw/cxgb4/cm.c +2 -2
@@ -3517,13 +3517,13 @@ int c4iw_destroy_listen(struct iw_cm_id *cm_id) ep->com.local_addr.ss_family == AF_INET) { err = cxgb4_remove_server_filter( ep->com.dev->rdev.lldi.ports[0], ep->stid, - ep->com.dev->rdev.lldi.rxq_ids[0], 0); + ep->com.dev->rdev.lldi.rxq_ids[0], false); } else {struct sockaddr_in6 *sin6;c4iw_init_wr_wait (ep->com.wr_waitp); err =cxgb4_remove_server ( ep->com.dev->rdev.lldi.ports[0 ], ep->stid, - ep->com.dev->rdev.lldi.rxq_ids[0 ],0 ); + ep->com.dev->rdev.lldi.rxq_ids[0 ], true);if (err) goto done; err = c4iw_wait_for_reply(&ep->com.dev->rdev, ep->com.wr_waitp,
drivers/md/dm-ioctl.c +1 -1
@@ -529,7 +529,7 @@ static int list_devices(struct file *filp, struct dm_ioctl *param, size_t param_* Grab our output buffer. */ nl = orig_nl =get_result_buffer (param, param_size, &len); -if (len < needed) { +if (len < needed || len <sizeof (nl->dev)) { param->flags |=DM_BUFFER_FULL_FLAG ; goto out; }
drivers/md/dm-verity-target.c +1 -1
@@ -34,7 +34,7 @@#define DM_VERITY_OPT_IGN_ZEROES "ignore_zero_blocks"#define DM_VERITY_OPT_AT_MOST_ONCE "check_at_most_once" -#define DM_VERITY_OPTS_MAX (2 + DM_VERITY_OPTS_FEC) +#define DM_VERITY_OPTS_MAX (3 + DM_VERITY_OPTS_FEC)static unsigned dm_verity_prefetch_cluster =DM_VERITY_DEFAULT_PREFETCH_SIZE ;
drivers/net/can/c_can/c_can.c +1 -23
@@ -212,18 +212,6 @@ static const struct can_bittiming_const c_can_bittiming_const = { .brp_inc = 1, }; -static inline void c_can_pm_runtime_enable (const struct c_can_priv *priv) -{ -if (priv->device) -pm_runtime_enable (priv->device); -} - -static inline void c_can_pm_runtime_disable (const struct c_can_priv *priv) -{ -if (priv->device) -pm_runtime_disable (priv->device); -} -static inline void c_can_pm_runtime_get_sync (const struct c_can_priv *priv) {if (priv->device)
@@ -1318,7 +1306,6 @@ static const struct net_device_ops c_can_netdev_ops = {int register_c_can_dev (struct net_device *dev) { -struct c_can_priv *priv =netdev_priv (dev);int err;/* Deactivate pins to prevent DRA7 DCAN IP from being
@@ -1328,28 +1315,19 @@ int register_c_can_dev(struct net_device *dev)*/ pinctrl_pm_select_sleep_state (dev->dev.parent); -c_can_pm_runtime_enable (priv); - dev->flags |=IFF_ECHO ;/* we support local echo */ dev->netdev_ops = &c_can_netdev_ops; err =register_candev (dev); -if (err) -c_can_pm_runtime_disable (priv); -else +if (!err)devm_can_led_init (dev); -return err; }EXPORT_SYMBOL_GPL (register_c_can_dev);void unregister_c_can_dev (struct net_device *dev) { -struct c_can_priv *priv =netdev_priv (dev); -unregister_candev (dev); - -c_can_pm_runtime_disable (priv); }EXPORT_SYMBOL_GPL (unregister_c_can_dev);
drivers/net/can/c_can/c_can_pci.c +2 -1
@@ -239,12 +239,13 @@ static void c_can_pci_remove(struct pci_dev *pdev) {struct net_device *dev =pci_get_drvdata (pdev);struct c_can_priv *priv =netdev_priv (dev); +void __iomem *addr = priv->base;unregister_c_can_dev (dev);free_c_can_dev (dev); -pci_iounmap (pdev, priv->base); +pci_iounmap (pdev, addr);pci_disable_msi (pdev);pci_clear_master (pdev);pci_release_regions (pdev);
drivers/net/can/c_can/c_can_platform.c +5 -1
@@ -29,6 +29,7 @@#include <linux/list.h> #include <linux/io.h> #include <linux/platform_device.h> +#include <linux/pm_runtime.h> #include <linux/clk.h> #include <linux/of.h> #include <linux/of_device.h>
@@ -385,6 +386,7 @@ static int c_can_plat_probe(struct platform_device *pdev)platform_set_drvdata (pdev, dev);SET_NETDEV_DEV (dev, &pdev->dev); +pm_runtime_enable (priv->device); ret =register_c_can_dev (dev);if (ret) { dev_err(&pdev->dev, "registering %s failed (err=%d)\n",
@@ -397,6 +399,7 @@ static int c_can_plat_probe(struct platform_device *pdev)return 0 ; exit_free_device: +pm_runtime_disable (priv->device);free_c_can_dev (dev); exit:dev_err (&pdev->dev,"probe failed\n" );
@@ -407,9 +410,10 @@ static int c_can_plat_probe(struct platform_device *pdev)static int c_can_plat_remove (struct platform_device *pdev) {struct net_device *dev =platform_get_drvdata (pdev); +struct c_can_priv *priv =netdev_priv (dev);unregister_c_can_dev (dev); - +pm_runtime_disable (priv->device);free_c_can_dev (dev);return 0 ;
drivers/net/can/dev.c +1 -0
@@ -1235,6 +1235,7 @@ static void can_dellink(struct net_device *dev, struct list_head *head)static struct rtnl_link_ops can_link_ops__read_mostly = { .kind ="can" , + .netns_refund = true, .maxtype =IFLA_CAN_MAX , .policy = can_policy, .setup = can_setup,
drivers/net/can/flexcan.c +7 -1
@@ -422,9 +422,15 @@ static int flexcan_chip_disable(struct flexcan_priv *priv)static int flexcan_chip_freeze (struct flexcan_priv *priv) {struct flexcan_regs __iomem *regs = priv->regs; -unsigned int timeout =1000 *1000 *10 / priv->can.bittiming.bitrate; +unsigned int timeout; +u32 bitrate = priv->can.bittiming.bitrate;u32 reg; +if (bitrate) + timeout =1000 *1000 *10 / bitrate; +else + timeout =FLEXCAN_TIMEOUT_US /10 ; + reg = priv->read (®s->mcr); reg |=FLEXCAN_MCR_FRZ |FLEXCAN_MCR_HALT ; priv->write (reg, ®s->mcr);
drivers/net/can/m_can/m_can.c +0 -3
@@ -520,9 +520,6 @@ static int m_can_do_rx_poll(struct net_device *dev, int quota) }while ((rxfs &RXFS_FFL_MASK ) && (quota >0 )) { -if (rxfs &RXFS_RFL ) -netdev_warn (dev,"Rx FIFO 0 Message Lost\n" ); -m_can_read_fifo (dev, rxfs); quota--;
drivers/net/dsa/bcm_sf2.c +4 -2
@@ -482,8 +482,10 @@ static u32 bcm_sf2_sw_get_phy_flags(struct dsa_switch *ds, int port)* in bits 15:8 and the patch level in bits 7:0 which is exactly what * the REG_PHY_REVISION register layout is. */ - -return priv->hw_params.gphy_rev; +if (priv->int_phy_mask &BIT (port)) +return priv->hw_params.gphy_rev; +else +return 0 ; } static void bcm_sf2_sw_validate(struct dsa_switch *ds, int port,
drivers/net/ethernet/faraday/ftgmac100.c +1 -0
@@ -1333,6 +1333,7 @@ static int ftgmac100_poll(struct napi_struct *napi, int budget)*/ if (unlikely (priv->need_mac_restart)) {ftgmac100_start_hw (priv); + priv->need_mac_restart = false;/* Re-enable "bad" interrupts */ iowrite32(FTGMAC100_INT_BAD,
drivers/net/ethernet/freescale/fec_ptp.c +7 -0
@@ -382,9 +382,16 @@ static int fec_ptp_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts)u64 ns;unsigned long flags; +mutex_lock (&adapter->ptp_clk_mutex); +/* Check the ptp clock */ +if (!adapter->ptp_clk_on) { +mutex_unlock (&adapter->ptp_clk_mutex); +return -EINVAL ; + }spin_lock_irqsave (&adapter->tmreg_lock, flags); ns =timecounter_read (&adapter->tc);spin_unlock_irqrestore (&adapter->tmreg_lock, flags); +mutex_unlock (&adapter->ptp_clk_mutex); *ts =ns_to_timespec64 (ns);
drivers/net/ethernet/freescale/gianfar.c +15 -0
@@ -2940,6 +2940,10 @@ static bool gfar_add_rx_frag(struct gfar_rx_buff *rxb, u32 lstatus,if (lstatus &BD_LFLAG (RXBD_LAST )) size -= skb->len; +WARN (size <0 ,"gianfar: rx fragment size underflow" ); +if (size <0 ) +return false; +skb_add_rx_frag (skb,skb_shinfo (skb)->nr_frags, page, rxb->page_offset +RXBUF_ALIGNMENT , size,GFAR_RXB_TRUESIZE );
@@ -3101,6 +3105,17 @@ int gfar_clean_rx_ring(struct gfar_priv_rx_q *rx_queue, int rx_work_limit)if (lstatus &BD_LFLAG (RXBD_EMPTY ))break ; +/* lost RXBD_LAST descriptor due to overrun */ +if (skb && + (lstatus &BD_LFLAG (RXBD_FIRST ))) { +/* discard faulty buffer */ +dev_kfree_skb (skb); + skb =NULL ; + rx_queue->stats.rx_dropped++; + +/* can continue normally */ + } +/* order rx buffer descriptor reads */ rmb ();
drivers/net/ethernet/hisilicon/hns/hns_enet.c +3 -1
@@ -1677,8 +1677,10 @@ static int hns_nic_clear_all_rx_fetch(struct net_device *ndev)for (j =0 ; j < fetch_num; j++) {/* alloc one skb and init */ skb =hns_assemble_skb (ndev); -if (!skb) +if (!skb) { + ret = -ENOMEM ; goto out; + } rd = &tx_ring_data (priv, skb->queue_mapping);hns_nic_net_xmit_hw (ndev, skb, rd);
drivers/net/ethernet/intel/e1000e/82571.c +2 -0
@@ -899,6 +899,8 @@ static s32 e1000_set_d0_lplu_state_82571(struct e1000_hw *hw, bool active) }else { data &= ~IGP02E1000_PM_D0_LPLU ; ret_val =e1e_wphy (hw,IGP02E1000_PHY_POWER_MGMT , data); +if (ret_val) +return ret_val;/* LPLU and SmartSpeed are mutually exclusive. LPLU is used * during Dx states where the power conservation is most * important. During driver activity we should enable
drivers/net/ethernet/intel/e1000e/netdev.c +5 -1
@@ -5922,15 +5922,19 @@ static void e1000_reset_task(struct work_struct *work)struct e1000_adapter *adapter; adapter = container_of(work, struct e1000_adapter, reset_task); +rtnl_lock ();/* don't run the task if already down */ -if (test_bit (__E1000_DOWN, &adapter->state)) +if (test_bit (__E1000_DOWN, &adapter->state)) { +rtnl_unlock ();return ; + }if (!(adapter->flags &FLAG_RESTART_NOW )) {e1000e_dump (adapter);e_err ("Reset adapter unexpectedly\n" ); }e1000e_reinit_locked (adapter); +rtnl_unlock (); }/**
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +4 -2
@@ -9487,8 +9487,10 @@ static int ixgbe_configure_clsu32(struct ixgbe_adapter *adapter,ixgbe_atr_compute_perfect_hash_82599 (&input->filter, mask); err =ixgbe_fdir_write_perfect_filter_82599 (hw, &input->filter, input->sw_idx, queue); -if (!err) -ixgbe_update_ethtool_fdir_entry (adapter, input, input->sw_idx); +if (err) + goto err_out_w_lock; + +ixgbe_update_ethtool_fdir_entry (adapter, input, input->sw_idx);spin_unlock (&adapter->fdir_perfect_lock);if ((uhtid !=0x800 ) && (adapter->jump_tables[uhtid]))
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +5 -1
@@ -1460,6 +1460,7 @@ static int set_pflag_rx_cqe_compress(struct net_device *netdev, {struct mlx5e_priv *priv =netdev_priv (netdev);struct mlx5_core_dev *mdev = priv->mdev; +int err;if (!MLX5_CAP_GEN (mdev, cqe_compression))return -EOPNOTSUPP ;
@@ -1469,7 +1470,10 @@ static int set_pflag_rx_cqe_compress(struct net_device *netdev,return -EINVAL ; } -mlx5e_modify_rx_cqe_compression_locked (priv, enable); + err =mlx5e_modify_rx_cqe_compression_locked (priv, enable); +if (err) +return err; + priv->channels.params.rx_cqe_compress_def = enable;return 0 ;
drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c +3 -0
@@ -1426,6 +1426,7 @@ void qlcnic_83xx_get_minidump_template(struct qlcnic_adapter *adapter)if (fw_dump->tmpl_hdr ==NULL || current_version > prev_version) {vfree (fw_dump->tmpl_hdr); + fw_dump->tmpl_hdr =NULL ;if (qlcnic_83xx_md_check_extended_dump_capability (adapter)) extended = !qlcnic_83xx_extend_md_capab (adapter);
@@ -1444,6 +1445,8 @@ void qlcnic_83xx_get_minidump_template(struct qlcnic_adapter *adapter)struct qlcnic_83xx_dump_template_hdr *hdr; hdr = fw_dump->tmpl_hdr; +if (!hdr) +return ; hdr->drv_cap_mask =0x1f ; fw_dump->cap_mask =0x1f ; dev_info(&pdev->dev,
drivers/net/ethernet/socionext/netsec.c +6 -3
@@ -1386,14 +1386,17 @@ static int netsec_netdev_init(struct net_device *ndev) goto err1;/* set phy power down */ - data =netsec_phy_read (priv->mii_bus, priv->phy_addr,MII_BMCR ) | -BMCR_PDOWN ; -netsec_phy_write (priv->mii_bus, priv->phy_addr,MII_BMCR , data); + data =netsec_phy_read (priv->mii_bus, priv->phy_addr,MII_BMCR ); +netsec_phy_write (priv->mii_bus, priv->phy_addr,MII_BMCR , + data |BMCR_PDOWN ); ret =netsec_reset_hardware (priv, true);if (ret) goto err2; +/* Restore phy power state */ +netsec_phy_write (priv->mii_bus, priv->phy_addr,MII_BMCR , data); +return 0 ; err2:netsec_free_dring (priv,NETSEC_RING_RX );
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +2 -0
@@ -1179,6 +1179,8 @@ static int sun8i_dwmac_probe(struct platform_device *pdev) plat_dat->init = sun8i_dwmac_init; plat_dat->exit = sun8i_dwmac_exit; plat_dat->setup = sun8i_dwmac_setup; + plat_dat->tx_fifo_size =4096 ; + plat_dat->rx_fifo_size =16384 ; ret =sun8i_dwmac_init (pdev, plat_dat->bsp_priv);if (ret)
drivers/net/ethernet/sun/niu.c +0 -2
@@ -3933,8 +3933,6 @@ static void niu_xmac_interrupt(struct niu *np) mp->rx_mcasts +=RXMAC_MC_FRM_CNT_COUNT ;if (val &XRXMAC_STATUS_RXBCAST_CNT_EXP ) mp->rx_bcasts +=RXMAC_BC_FRM_CNT_COUNT ; -if (val &XRXMAC_STATUS_RXBCAST_CNT_EXP ) - mp->rx_bcasts +=RXMAC_BC_FRM_CNT_COUNT ;if (val &XRXMAC_STATUS_RXHIST1_CNT_EXP ) mp->rx_hist_cnt1 +=RXMAC_HIST_CNT1_COUNT ;if (val &XRXMAC_STATUS_RXHIST2_CNT_EXP )
drivers/net/ethernet/tehuti/tehuti.c +1 -0
@@ -2056,6 +2056,7 @@ bdx_probe(struct pci_dev *pdev, const struct pci_device_id *ent)/*bdx_hw_reset(priv); */ if (bdx_read_mac (priv)) {pr_err ("load MAC address failed\n" ); + err = -EFAULT ; goto err_out_iomap; }SET_NETDEV_DEV (ndev, &pdev->dev);
drivers/net/usb/cdc-phonet.c +2 -0
@@ -400,6 +400,8 @@ static int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *i err =register_netdev (dev);if (err) { +/* Set disconnected flag so that disconnect() returns early. */ + pnd->disconnected =1 ;usb_driver_release_interface (&usbpn_driver, data_intf); goto out; }
drivers/net/usb/r8152.c +6 -29
@@ -2593,29 +2593,6 @@ static void __rtl_set_wol(struct r8152 *tp, u32 wolopts)device_set_wakeup_enable (&tp->udev->dev, false); } -static void r8153_mac_clk_spd (struct r8152 *tp,bool enable) -{ -/* MAC clock speed down */ -if (enable) { -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL , -ALDPS_SPDWN_RATIO ); -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL2 , -EEE_SPDWN_RATIO ); -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL3 , -PKT_AVAIL_SPDWN_EN |SUSPEND_SPDWN_EN | -U1U2_SPDWN_EN |L1_SPDWN_EN ); -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL4 , -PWRSAVE_SPDWN_EN |RXDV_SPDWN_EN |TX10MIDLE_EN | -TP100_SPDWN_EN |TP500_SPDWN_EN |EEE_SPDWN_EN | -TP1000_SPDWN_EN ); - }else { -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL ,0 ); -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL2 ,0 ); -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL3 ,0 ); -ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL4 ,0 ); - } -} -static void r8153_u1u2en (struct r8152 *tp,bool enable) {u8 u1u2[8 ];
@@ -2847,11 +2824,9 @@ static void rtl8153_runtime_enable(struct r8152 *tp, bool enable)if (enable) {r8153_u1u2en (tp, false);r8153_u2p3en (tp, false); -r8153_mac_clk_spd (tp, true);rtl_runtime_suspend_enable (tp, true); }else {rtl_runtime_suspend_enable (tp, false); -r8153_mac_clk_spd (tp, false);switch (tp->version) {case RTL_VER_03 :
@@ -3413,7 +3388,6 @@ static void r8153_first_init(struct r8152 *tp)u32 ocp_data;int i; -r8153_mac_clk_spd (tp, false);rxdy_gated_en (tp, true);r8153_teredo_off (tp);
@@ -3475,8 +3449,6 @@ static void r8153_enter_oob(struct r8152 *tp)u32 ocp_data;int i; -r8153_mac_clk_spd (tp, true); - ocp_data =ocp_read_byte (tp,MCU_TYPE_PLA ,PLA_OOB_CTRL ); ocp_data &= ~NOW_IS_OOB ;ocp_write_byte (tp,MCU_TYPE_PLA ,PLA_OOB_CTRL , ocp_data);
@@ -4141,9 +4113,14 @@ static void r8153_init(struct r8152 *tp)ocp_write_word (tp,MCU_TYPE_USB ,USB_CONNECT_TIMER ,0x0001 ); +/* MAC clock speed down */ +ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL ,0 ); +ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL2 ,0 ); +ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL3 ,0 ); +ocp_write_word (tp,MCU_TYPE_PLA ,PLA_MAC_PWR_CTRL4 ,0 ); +r8153_power_cut_en (tp, false);r8153_u1u2en (tp, true); -r8153_mac_clk_spd (tp, false);usb_enable_lpm (tp->udev);/* rx aggregation */
drivers/net/veth.c +1 -2
@@ -197,8 +197,7 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)if (rxq < rcv->real_num_rx_queues) { rq = &rcv_priv->rq[rxq]; rcv_xdp =rcu_access_pointer (rq->xdp_prog); -if (rcv_xdp) -skb_record_rx_queue (skb, rxq); +skb_record_rx_queue (skb, rxq); }if (likely (veth_forward_skb (rcv, skb, rq, rcv_xdp) ==NET_RX_SUCCESS )) {
drivers/net/wan/fsl_ucc_hdlc.c +6 -2
@@ -201,14 +201,18 @@ static int uhdlc_init(struct ucc_hdlc_private *priv) priv->rx_skbuff =kcalloc (priv->rx_ring_size,sizeof (*priv->rx_skbuff),GFP_KERNEL ); -if (!priv->rx_skbuff) +if (!priv->rx_skbuff) { + ret = -ENOMEM ; goto free_ucc_pram; + } priv->tx_skbuff =kcalloc (priv->tx_ring_size,sizeof (*priv->tx_skbuff),GFP_KERNEL ); -if (!priv->tx_skbuff) +if (!priv->tx_skbuff) { + ret = -ENOMEM ; goto free_rx_skbuff; + } priv->skb_curtx =0 ; priv->skb_dirtytx =0 ;
drivers/platform/x86/intel-vbtn.c +10 -2
@@ -46,8 +46,16 @@ static const struct key_entry intel_vbtn_keymap[] = { };static const struct key_entry intel_vbtn_switchmap[] = { - {KE_SW ,0xCA , { .sw = {SW_DOCK ,1 } } },/* Docked */ - {KE_SW ,0xCB , { .sw = {SW_DOCK ,0 } } },/* Undocked */ +/* +* SW_DOCK should only be reported for docking stations, but DSDTs using the +* intel-vbtn code, always seem to use this for 2-in-1s / convertibles and set +* SW_DOCK=1 when in laptop-mode (in tandem with setting SW_TABLET_MODE=0). +* This causes userspace to think the laptop is docked to a port-replicator +* and to disable suspend-on-lid-close, which is undesirable. +* Map the dock events to KEY_IGNORE to avoid this broken SW_DOCK reporting. +*/ + {KE_IGNORE ,0xCA , { .sw = {SW_DOCK ,1 } } },/* Docked */ + {KE_IGNORE ,0xCB , { .sw = {SW_DOCK ,0 } } },/* Undocked */ {KE_SW ,0xCC , { .sw = {SW_TABLET_MODE ,1 } } },/* Tablet */ {KE_SW ,0xCD , { .sw = {SW_TABLET_MODE ,0 } } },/* Laptop */ };
drivers/scsi/mpt3sas/mpt3sas_base.c +6 -2
@@ -6629,14 +6629,18 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc) ioc->pend_os_device_add_sz++; ioc->pend_os_device_add =kzalloc (ioc->pend_os_device_add_sz,GFP_KERNEL ); -if (!ioc->pend_os_device_add) +if (!ioc->pend_os_device_add) { + r = -ENOMEM ; goto out_free_resources; + } ioc->device_remove_in_progress_sz = ioc->pend_os_device_add_sz; ioc->device_remove_in_progress =kzalloc (ioc->device_remove_in_progress_sz,GFP_KERNEL ); -if (!ioc->device_remove_in_progress) +if (!ioc->device_remove_in_progress) { + r = -ENOMEM ; goto out_free_resources; + } ioc->fwfault_debug = mpt3sas_fwfault_debug;
drivers/scsi/qedi/qedi_main.c +1 -0
@@ -1559,6 +1559,7 @@ static int qedi_alloc_global_queues(struct qedi_ctx *qedi)if (!qedi->global_queues[i]) {QEDI_ERR (&qedi->dbg_ctx,"Unable to allocation global queue %d.\n" , i); + status = -ENOMEM ; goto mem_alloc_failure; }
fs/ext4/xattr.c +4 -0
@@ -1480,6 +1480,9 @@ ext4_xattr_inode_cache_find(struct inode *inode, const void *value,if (!ce)return NULL ; +WARN_ON_ONCE (ext4_handle_valid (journal_current_handle ()) && + !(current->flags &PF_MEMALLOC_NOFS )); + ea_data =ext4_kvmalloc (value_len,GFP_NOFS );if (!ea_data) {mb_cache_entry_put (ea_inode_cache, ce);
@@ -2346,6 +2349,7 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, error = -ENOSPC ; goto cleanup; } +WARN_ON_ONCE (!(current->flags &PF_MEMALLOC_NOFS )); } error =ext4_reserve_inode_write (handle, inode, &is.iloc);
fs/nfs/Kconfig +1 -1
@@ -127,7 +127,7 @@ config PNFS_BLOCK config PNFS_FLEXFILE_LAYOUT tristate depends on NFS_V4_1 && NFS_V3 - default m + default NFS_V4 config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN string "NFSv4.1 Implementation ID Domain"
fs/nfs/nfs3xdr.c +2 -1
@@ -34,6 +34,7 @@*/ #define NFS3_fhandle_sz (1+16)#define NFS3_fh_sz (NFS3_fhandle_sz)/* shorthand */ +#define NFS3_post_op_fh_sz (1+NFS3_fh_sz)#define NFS3_sattr_sz (15)#define NFS3_filename_sz (1+(NFS3_MAXNAMLEN>>2))#define NFS3_path_sz (1+(NFS3_MAXPATHLEN>>2))
@@ -71,7 +72,7 @@#define NFS3_readlinkres_sz (1+NFS3_post_op_attr_sz+1)#define NFS3_readres_sz (1+NFS3_post_op_attr_sz+3)#define NFS3_writeres_sz (1+NFS3_wcc_data_sz+4) -#define NFS3_createres_sz (1+NFS3_fh_sz+NFS3_post_op_attr_sz+NFS3_wcc_data_sz) +#define NFS3_createres_sz (1+NFS3_post_op_fh_sz+NFS3_post_op_attr_sz+NFS3_wcc_data_sz)#define NFS3_renameres_sz (1+(2 * NFS3_wcc_data_sz))#define NFS3_linkres_sz (1+NFS3_post_op_attr_sz+NFS3_wcc_data_sz)#define NFS3_readdirres_sz (1+NFS3_post_op_attr_sz+2)
fs/nfs/nfs4proc.c +3 -0
@@ -5535,6 +5535,9 @@ static int __nfs4_proc_set_acl(struct inode *inode, const void *buf, size_t buflunsigned int npages =DIV_ROUND_UP (buflen,PAGE_SIZE );int ret, i; +/* You can't remove system.nfs4_acl: */ +if (buflen ==0 ) +return -EINVAL ;if (!nfs4_server_supports_acls (server))return -EOPNOTSUPP ;if (npages >ARRAY_SIZE (pages))
fs/squashfs/export.c +6 -2
@@ -165,14 +165,18 @@ __le64 *squashfs_read_inode_lookup_table(struct super_block *sb, start =le64_to_cpu (table[n]); end =le64_to_cpu (table[n +1 ]); -if (start >= end || (end - start) >SQUASHFS_METADATA_SIZE ) { +if (start >= end + || (end - start) > + (SQUASHFS_METADATA_SIZE +SQUASHFS_BLOCK_OFFSET )) {kfree (table);return ERR_PTR (-EINVAL ); } } start =le64_to_cpu (table[indexes -1 ]); -if (start >= lookup_table_start || (lookup_table_start - start) >SQUASHFS_METADATA_SIZE ) { +if (start >= lookup_table_start || + (lookup_table_start - start) > + (SQUASHFS_METADATA_SIZE +SQUASHFS_BLOCK_OFFSET )) {kfree (table);return ERR_PTR (-EINVAL ); }
fs/squashfs/id.c +4 -2
@@ -110,14 +110,16 @@ __le64 *squashfs_read_id_index_table(struct super_block *sb, start =le64_to_cpu (table[n]); end =le64_to_cpu (table[n +1 ]); -if (start >= end || (end - start) >SQUASHFS_METADATA_SIZE ) { +if (start >= end || (end - start) > + (SQUASHFS_METADATA_SIZE +SQUASHFS_BLOCK_OFFSET )) {kfree (table);return ERR_PTR (-EINVAL ); } } start =le64_to_cpu (table[indexes -1 ]); -if (start >= id_table_start || (id_table_start - start) >SQUASHFS_METADATA_SIZE ) { +if (start >= id_table_start || (id_table_start - start) > + (SQUASHFS_METADATA_SIZE +SQUASHFS_BLOCK_OFFSET )) {kfree (table);return ERR_PTR (-EINVAL ); }
fs/squashfs/squashfs_fs.h +1 -0
@@ -30,6 +30,7 @@/* size of metadata (inode and directory) blocks */ #define SQUASHFS_METADATA_SIZE 8192 +#define SQUASHFS_BLOCK_OFFSET 2/* default size of block device I/O */ #ifdef CONFIG_SQUASHFS_4K_DEVBLK_SIZE
fs/squashfs/xattr_id.c +4 -2
@@ -122,14 +122,16 @@ __le64 *squashfs_read_xattr_id_table(struct super_block *sb, u64 table_start, start =le64_to_cpu (table[n]); end =le64_to_cpu (table[n +1 ]); -if (start >= end || (end - start) >SQUASHFS_METADATA_SIZE ) { +if (start >= end || (end - start) > + (SQUASHFS_METADATA_SIZE +SQUASHFS_BLOCK_OFFSET )) {kfree (table);return ERR_PTR (-EINVAL ); } } start =le64_to_cpu (table[indexes -1 ]); -if (start >= table_start || (table_start - start) >SQUASHFS_METADATA_SIZE ) { +if (start >= table_start || (table_start - start) > + (SQUASHFS_METADATA_SIZE +SQUASHFS_BLOCK_OFFSET )) {kfree (table);return ERR_PTR (-EINVAL ); }
include/acpi/acpi_bus.h +1 -0
@@ -248,6 +248,7 @@ struct acpi_pnp_type {struct acpi_device_pnp {acpi_bus_id bus_id;/* Object name */ +int instance_no;/* Instance number of this object */ struct acpi_pnp_type type;/* ID type */ acpi_bus_address bus_address;/* _ADR */ char *unique_id;/* _UID */
include/linux/bpf.h +5 -4
@@ -382,7 +382,7 @@ int bpf_prog_array_copy(struct bpf_prog_array __rcu *old_array,struct bpf_prog *include_prog, struct bpf_prog_array **new_array); -#define __BPF_PROG_RUN_ARRAY (array, ctx, func, check_non_null) \ +#define __BPF_PROG_RUN_ARRAY (array, ctx, func, check_non_null, set_cg_storage) \ ({ \ struct bpf_prog_array_item *_item; \ struct bpf_prog *_prog; \
@@ -395,7 +395,8 @@ int bpf_prog_array_copy(struct bpf_prog_array __rcu *old_array, goto _out; \ _item = &_array->items[0 ]; \while ((_prog =READ_ONCE (_item->prog))) { \ -bpf_cgroup_storage_set (_item->cgroup_storage); \ +if (set_cg_storage) \ +bpf_cgroup_storage_set (_item->cgroup_storage); \ _ret &=func (_prog, ctx); \ _item++; \ } \
@@ -406,10 +407,10 @@ _out: \ })#define BPF_PROG_RUN_ARRAY (array, ctx, func) \ - __BPF_PROG_RUN_ARRAY(array, ctx, func, false) + __BPF_PROG_RUN_ARRAY(array, ctx, func, false, true)#define BPF_PROG_RUN_ARRAY_CHECK (array, ctx, func) \ - __BPF_PROG_RUN_ARRAY(array, ctx, func, true) + __BPF_PROG_RUN_ARRAY(array, ctx, func, true, false)#ifdef CONFIG_BPF_SYSCALL DECLARE_PER_CPU (int, bpf_prog_active);
include/linux/if_macvlan.h +2 -1
@@ -43,13 +43,14 @@ static inline void macvlan_count_rx(const struct macvlan_dev *vlan,if (likely (success)) {struct vlan_pcpu_stats *pcpu_stats; - pcpu_stats =this_cpu_ptr (vlan->pcpu_stats); + pcpu_stats =get_cpu_ptr (vlan->pcpu_stats);u64_stats_update_begin (&pcpu_stats->syncp); pcpu_stats->rx_packets++; pcpu_stats->rx_bytes += len;if (multicast) pcpu_stats->rx_multicast++;u64_stats_update_end (&pcpu_stats->syncp); +put_cpu_ptr (vlan->pcpu_stats); }else {this_cpu_inc (vlan->pcpu_stats->rx_errors); }
include/linux/mutex.h +1 -1
@@ -184,7 +184,7 @@ extern void mutex_lock_io(struct mutex *lock);# define mutex_lock_interruptible_nested (lock, subclass) mutex_lock_interruptible(lock)# define mutex_lock_killable_nested (lock, subclass) mutex_lock_killable(lock)# define mutex_lock_nest_lock (lock, nest_lock) mutex_lock(lock) -# define mutex_lock_io_nested (lock, subclass) mutex_lock(lock) +# define mutex_lock_io_nested (lock, subclass) mutex_lock_io(lock)#endif /*
include/linux/netfilter/x_tables.h +2 -5
@@ -227,7 +227,7 @@ struct xt_table {unsigned int valid_hooks;/* Man behind the curtain... */ -struct xt_table_info __rcu *private; +struct xt_table_info *private;/* Set this to THIS_MODULE if you are a module, otherwise NULL */ struct module *me;
@@ -377,7 +377,7 @@ static inline unsigned int xt_write_recseq_begin(void)* since addend is most likely 1 */ __this_cpu_add (xt_recseq.sequence, addend); -smp_wmb (); +smp_mb ();return addend; }
@@ -449,9 +449,6 @@ xt_get_per_cpu_counter(struct xt_counters *cnt, unsigned int cpu)struct nf_hook_ops *xt_hook_ops_alloc (const struct xt_table *,nf_hookfn *); -struct xt_table_info -*xt_table_get_private_protected (const struct xt_table *table); -#ifdef CONFIG_COMPAT #include <net/compat.h>
include/linux/u64_stats_sync.h +4 -3
@@ -69,12 +69,13 @@ struct u64_stats_sync { }; +#if BITS_PER_LONG ==32 && defined(CONFIG_SMP ) +#define u64_stats_init (syncp) seqcount_init(&(syncp)->seq) +#else static inline void u64_stats_init (struct u64_stats_sync *syncp) { -#if BITS_PER_LONG ==32 && defined(CONFIG_SMP ) -seqcount_init (&syncp->seq); -#endif } +#endif static inline void u64_stats_update_begin (struct u64_stats_sync *syncp) {
include/net/red.h +9 -1
@@ -168,7 +168,8 @@ static inline void red_set_vars(struct red_vars *v) v->qcount =-1 ; } -static inline bool red_check_params (u32 qth_min,u32 qth_max,u8 Wlog,u8 Scell_log) +static inline bool red_check_params (u32 qth_min,u32 qth_max,u8 Wlog, +u8 Scell_log,u8 *stab) {if (fls (qth_min) + Wlog >32 )return false;
@@ -178,6 +179,13 @@ static inline bool red_check_params(u32 qth_min, u32 qth_max, u8 Wlog, u8 Scell_return false;if (qth_max < qth_min)return false; +if (stab) { +int i; + +for (i =0 ; i <RED_STAB_SIZE ; i++) +if (stab[i] >=32 ) +return false; + }return true; }
include/net/rtnetlink.h +2 -0
@@ -33,6 +33,7 @@ static inline int rtnl_msg_family(const struct nlmsghdr *nlh)* * @list: Used internally * @kind: Identifier +* @netns_refund: Physical device, move to init_net on netns exit * @maxtype: Highest device specific netlink attribute number * @policy: Netlink policy for device specific attribute validation * @validate: Optional validation function for netlink/changelink parameters
@@ -64,6 +65,7 @@ struct rtnl_link_ops {size_t priv_size;void (*setup)(struct net_device *dev); +bool netns_refund;unsigned int maxtype;const struct nla_policy *policy; int (*validate)(struct nlattr *tb[],
net/core/dev.c +1 -1
@@ -9708,7 +9708,7 @@ static void __net_exit default_device_exit(struct net *net)continue ;/* Leave virtual devices for the generic cleanup */ -if (dev->rtnl_link_ops) +if (dev->rtnl_link_ops && !dev->rtnl_link_ops->netns_refund)continue ;/* Push remaining network devices to init_net */
net/ipv4/netfilter/arp_tables.c +8 -8
@@ -202,7 +202,7 @@ unsigned int arpt_do_table(struct sk_buff *skb,local_bh_disable (); addend =xt_write_recseq_begin (); - private =rcu_access_pointer (table->private); + private =READ_ONCE (table->private);/* Address dependency. */ cpu =smp_processor_id (); table_base = private->entries; jumpstack = (struct arpt_entry **)private->jumpstack[cpu];
@@ -648,7 +648,7 @@ static struct xt_counters *alloc_counters(const struct xt_table *table) {unsigned int countersize;struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;/* We need atomic snapshot of counters: rest doesn't change * (other than comefrom, which userspace doesn't care
@@ -672,7 +672,7 @@ static int copy_entries_to_user(unsigned int total_size,unsigned int off, num;const struct arpt_entry *e;struct xt_counters *counters; -struct xt_table_info *private =xt_table_get_private_protected (table); +struct xt_table_info *private = table->private;int ret =0 ;void *loc_cpu_entry;
@@ -807,7 +807,7 @@ static int get_info(struct net *net, void __user *user, t =xt_request_find_table_lock (net,NFPROTO_ARP , name);if (!IS_ERR (t)) {struct arpt_getinfo info; -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;#ifdef CONFIG_COMPAT struct xt_table_info tmp;
@@ -860,7 +860,7 @@ static int get_entries(struct net *net, struct arpt_get_entries __user *uptr, t =xt_find_table_lock (net,NFPROTO_ARP , get.name);if (!IS_ERR (t)) { -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;if (get.size == private->size) ret = copy_entries_to_user(private->size,
@@ -1019,7 +1019,7 @@ static int do_add_counters(struct net *net, const void __user *user, }local_bh_disable (); - private =xt_table_get_private_protected (t); + private = t->private;if (private->number != tmp.num_counters) { ret = -EINVAL ; goto unlock_up_free;
@@ -1356,7 +1356,7 @@ static int compat_copy_entries_to_user(unsigned int total_size, void __user *userptr) {struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;void __user *pos;unsigned int size;int ret =0 ;
@@ -1405,7 +1405,7 @@ static int compat_get_entries(struct net *net,xt_compat_lock (NFPROTO_ARP ); t =xt_find_table_lock (net,NFPROTO_ARP , get.name);if (!IS_ERR (t)) { -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;struct xt_table_info info; ret =compat_table_info (private, &info);
net/ipv4/netfilter/ip_tables.c +8 -8
@@ -261,7 +261,7 @@ ipt_do_table(struct sk_buff *skb,WARN_ON (!(table->valid_hooks & (1 << hook)));local_bh_disable (); addend =xt_write_recseq_begin (); - private =rcu_access_pointer (table->private); + private =READ_ONCE (table->private);/* Address dependency. */ cpu =smp_processor_id (); table_base = private->entries; jumpstack = (struct ipt_entry **)private->jumpstack[cpu];
@@ -794,7 +794,7 @@ static struct xt_counters *alloc_counters(const struct xt_table *table) {unsigned int countersize;struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;/* We need atomic snapshot of counters: rest doesn't change (other than comefrom, which userspace doesn't care
@@ -818,7 +818,7 @@ copy_entries_to_user(unsigned int total_size,unsigned int off, num;const struct ipt_entry *e;struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;int ret =0 ;const void *loc_cpu_entry;
@@ -968,7 +968,7 @@ static int get_info(struct net *net, void __user *user, t =xt_request_find_table_lock (net,AF_INET , name);if (!IS_ERR (t)) {struct ipt_getinfo info; -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;#ifdef CONFIG_COMPAT struct xt_table_info tmp;
@@ -1022,7 +1022,7 @@ get_entries(struct net *net, struct ipt_get_entries __user *uptr, t =xt_find_table_lock (net,AF_INET , get.name);if (!IS_ERR (t)) { -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;if (get.size == private->size) ret =copy_entries_to_user (private->size, t, uptr->entrytable);
@@ -1178,7 +1178,7 @@ do_add_counters(struct net *net, const void __user *user, }local_bh_disable (); - private =xt_table_get_private_protected (t); + private = t->private;if (private->number != tmp.num_counters) { ret = -EINVAL ; goto unlock_up_free;
@@ -1573,7 +1573,7 @@ compat_copy_entries_to_user(unsigned int total_size, struct xt_table *table, void __user *userptr) {struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;void __user *pos;unsigned int size;int ret =0 ;
@@ -1619,7 +1619,7 @@ compat_get_entries(struct net *net, struct compat_ipt_get_entries __user *uptr,xt_compat_lock (AF_INET ); t =xt_find_table_lock (net,AF_INET , get.name);if (!IS_ERR (t)) { -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;struct xt_table_info info; ret =compat_table_info (private, &info);if (!ret && get.size == info.size)
net/ipv6/netfilter/ip6_tables.c +8 -8
@@ -283,7 +283,7 @@ ip6t_do_table(struct sk_buff *skb,local_bh_disable (); addend =xt_write_recseq_begin (); - private =rcu_access_pointer (table->private); + private =READ_ONCE (table->private);/* Address dependency. */ cpu =smp_processor_id (); table_base = private->entries; jumpstack = (struct ip6t_entry **)private->jumpstack[cpu];
@@ -810,7 +810,7 @@ static struct xt_counters *alloc_counters(const struct xt_table *table) {unsigned int countersize;struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;/* We need atomic snapshot of counters: rest doesn't change (other than comefrom, which userspace doesn't care
@@ -834,7 +834,7 @@ copy_entries_to_user(unsigned int total_size,unsigned int off, num;const struct ip6t_entry *e;struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;int ret =0 ;const void *loc_cpu_entry;
@@ -984,7 +984,7 @@ static int get_info(struct net *net, void __user *user, t =xt_request_find_table_lock (net,AF_INET6 , name);if (!IS_ERR (t)) {struct ip6t_getinfo info; -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;#ifdef CONFIG_COMPAT struct xt_table_info tmp;
@@ -1039,7 +1039,7 @@ get_entries(struct net *net, struct ip6t_get_entries __user *uptr, t =xt_find_table_lock (net,AF_INET6 , get.name);if (!IS_ERR (t)) { -struct xt_table_info *private =xt_table_get_private_protected (t); +struct xt_table_info *private = t->private;if (get.size == private->size) ret =copy_entries_to_user (private->size, t, uptr->entrytable);
@@ -1194,7 +1194,7 @@ do_add_counters(struct net *net, const void __user *user, unsigned int len, }local_bh_disable (); - private =xt_table_get_private_protected (t); + private = t->private;if (private->number != tmp.num_counters) { ret = -EINVAL ; goto unlock_up_free;
@@ -1582,7 +1582,7 @@ compat_copy_entries_to_user(unsigned int total_size, struct xt_table *table, void __user *userptr) {struct xt_counters *counters; -const struct xt_table_info *private =xt_table_get_private_protected (table); +const struct xt_table_info *private = table->private;void __user *pos;unsigned int size;int ret =0 ;
@@ -1628,7 +1628,7 @@ compat_get_entries(struct net *net, struct compat_ip6t_get_entries __user *uptr,xt_compat_lock (AF_INET6 ); t =xt_find_table_lock (net,AF_INET6 , get.name);if (!IS_ERR (t)) { -const struct xt_table_info *private =xt_table_get_private_protected (t); +const struct xt_table_info *private = t->private;struct xt_table_info info; ret =compat_table_info (private, &info);if (!ret && get.size == info.size)
net/mac80211/cfg.c +2 -2
@@ -2777,14 +2777,14 @@ static int ieee80211_set_bitrate_mask(struct wiphy *wiphy,continue ;for (j =0 ; j <IEEE80211_HT_MCS_MASK_LEN ; j++) { -if (~sdata->rc_rateidx_mcs_mask[i][j]) { +if (sdata->rc_rateidx_mcs_mask[i][j] !=0xff ) { sdata->rc_has_mcs_mask[i] = true;break ; } }for (j =0 ; j <NL80211_VHT_NSS_MAX ; j++) { -if (~sdata->rc_rateidx_vht_mcs_mask[i][j]) { +if (sdata->rc_rateidx_vht_mcs_mask[i][j] !=0xffff ) { sdata->rc_has_vht_mcs_mask[i] = true;break ; }
net/mac80211/ibss.c +2 -0
@@ -1861,6 +1861,8 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata)/* remove beacon */ kfree (sdata->u.ibss.ie); + sdata->u.ibss.ie =NULL ; + sdata->u.ibss.ie_len =0 ;/* on the next join, re-program HT parameters */ memset (&ifibss->ht_capa,0 ,sizeof (ifibss->ht_capa));
net/netfilter/nf_conntrack_netlink.c +1 -0
@@ -2656,6 +2656,7 @@ static int ctnetlink_exp_dump_mask(struct sk_buff *skb,memset (&m,0xFF ,sizeof (m));memcpy (&m.src.u3, &mask->src.u3,sizeof (m.src.u3)); m.src.u.all = mask->src.u.all; + m.src.l3num = tuple->src.l3num; m.dst.protonum = tuple->dst.protonum; nest_parms =nla_nest_start (skb,CTA_EXPECT_MASK |NLA_F_NESTED );
net/netfilter/x_tables.c +34 -15
94 lines not on this page · raw message
net/qrtr/qrtr.c +5 -0
@@ -868,6 +868,11 @@ static int qrtr_recvmsg(struct socket *sock, struct msghdr *msg, rc = copied;if (addr) { +/* There is an anonymous 2-byte hole after sq_family, +* make sure to clear it. +*/ +memset (addr,0 ,sizeof (*addr)); + cb = (struct qrtr_cb *)skb->cb; addr->sq_family =AF_QIPCRTR ; addr->sq_node = cb->src_node;
net/sched/sch_choke.c +4 -3
@@ -355,6 +355,7 @@ static int choke_change(struct Qdisc *sch, struct nlattr *opt,struct sk_buff **old =NULL ;unsigned int mask;u32 max_P; +u8 *stab;if (opt ==NULL )return -EINVAL ;
@@ -370,8 +371,8 @@ static int choke_change(struct Qdisc *sch, struct nlattr *opt, max_P = tb[TCA_CHOKE_MAX_P ] ?nla_get_u32 (tb[TCA_CHOKE_MAX_P ]) :0 ; ctl =nla_data (tb[TCA_CHOKE_PARMS ]); - -if (!red_check_params (ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Scell_log)) + stab =nla_data (tb[TCA_CHOKE_STAB ]); +if (!red_check_params (ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Scell_log, stab))return -EINVAL ;if (ctl->limit >CHOKE_MAX_QUEUE )
@@ -421,7 +422,7 @@ static int choke_change(struct Qdisc *sch, struct nlattr *opt,red_set_parms (&q->parms, ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Plog, ctl->Scell_log, -nla_data (tb[TCA_CHOKE_STAB ]), + stab, max_P);red_set_vars (&q->vars);
net/sched/sch_gred.c +1 -1
@@ -357,7 +357,7 @@ static inline int gred_change_vq(struct Qdisc *sch, int dp,struct gred_sched *table =qdisc_priv (sch);struct gred_sched_data *q = table->tab[dp]; -if (!red_check_params (ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Scell_log)) +if (!red_check_params (ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Scell_log, stab))return -EINVAL ;if (!q) {
net/sched/sch_red.c +5 -2
@@ -199,6 +199,7 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt,struct Qdisc *child =NULL ;int err;u32 max_P; +u8 *stab;if (opt ==NULL )return -EINVAL ;
@@ -214,7 +215,9 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt, max_P = tb[TCA_RED_MAX_P ] ?nla_get_u32 (tb[TCA_RED_MAX_P ]) :0 ; ctl =nla_data (tb[TCA_RED_PARMS ]); -if (!red_check_params (ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Scell_log)) + stab =nla_data (tb[TCA_RED_STAB ]); +if (!red_check_params (ctl->qth_min, ctl->qth_max, ctl->Wlog, + ctl->Scell_log, stab))return -EINVAL ;if (ctl->limit >0 ) {
@@ -240,7 +243,7 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt,red_set_parms (&q->parms, ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Plog, ctl->Scell_log, -nla_data (tb[TCA_RED_STAB ]), + stab, max_P);red_set_vars (&q->vars);
net/sched/sch_sfq.c +1 -1
@@ -651,7 +651,7 @@ static int sfq_change(struct Qdisc *sch, struct nlattr *opt) }if (ctl_v1 && !red_check_params (ctl_v1->qth_min, ctl_v1->qth_max, - ctl_v1->Wlog, ctl_v1->Scell_log)) + ctl_v1->Wlog, ctl_v1->Scell_log,NULL ))return -EINVAL ;if (ctl_v1 && ctl_v1->qth_min) { p =kmalloc (sizeof (*p),GFP_KERNEL );
tools/lib/bpf/Makefile +1 -1
@@ -179,7 +179,7 @@ define do_install if [ ! -d '$(DESTDIR_SQ)$2' ]; then \ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \ fi; \ - $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2' + $(INSTALL) $(if $3,-m $3,) $1 '$(DESTDIR_SQ)$2' endef install_lib: all_cmd
tools/perf/util/auxtrace.c +0 -4
@@ -256,10 +256,6 @@ static int auxtrace_queues__queue_buffer(struct auxtrace_queues *queues, queue->set = true; queue->tid = buffer->tid; queue->cpu = buffer->cpu; - }else if (buffer->cpu != queue->cpu || buffer->tid != queue->tid) { -pr_err ("auxtrace queue conflict: cpu %d, tid %d vs cpu %d, tid %d\n" , - queue->cpu, queue->tid, buffer->cpu, buffer->tid); -return -EINVAL ; } buffer->buffer_nr = queues->next_buffer_nr++;