Linux 4.14.228
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.228 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.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 +- 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/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/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/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/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/wan/fsl_ucc_hdlc.c | 8 + 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/if_macvlan.h | 3 include/linux/mutex.h | 2 include/linux/u64_stats_sync.h | 7 - include/net/red.h | 10 +- include/net/rtnetlink.h | 2 net/core/dev.c | 2 net/mac80211/cfg.c | 4 net/mac80211/ibss.c | 2 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 69 files changed, 249 insertions(+), 168 deletions(-)
Adrian Hunter (1):
perf auxtrace: Fix auxtrace queue conflict
Andy Shevchenko (1):
ACPI: scan: Use unique number for instance_no
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
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
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.14.228
Grygorii Strashko (1):
bus: omap_l3_noc: mark l3 irqs as IRQF_NO_THREAD
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
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
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
Marc Kleine-Budde (1):
can: peak_usb: Revert "can: peak_usb: add forgotten supported devices"
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
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
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 = 14 -SUBLEVEL = 227 +SUBLEVEL = 228 EXTRAVERSION = NAME = Petit Gorille
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
@@ -164,6 +164,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
@@ -219,6 +219,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
@@ -244,6 +244,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
@@ -65,8 +65,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 \
@@ -76,8 +76,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
@@ -290,14 +290,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; } }
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);
@@ -338,7 +338,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
@@ -2240,6 +2240,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:
@@ -2252,6 +2253,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);
@@ -2561,7 +2564,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
@@ -937,7 +937,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
@@ -234,7 +234,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
@@ -156,6 +156,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
@@ -1137,6 +1137,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
@@ -3492,13 +3492,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_wait); 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_wait,
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/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
@@ -1191,6 +1191,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/m_can/m_can.c +0 -3
@@ -513,9 +513,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
@@ -613,8 +613,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_adjust_link(struct dsa_switch *ds, int port,
drivers/net/ethernet/faraday/ftgmac100.c +1 -0
@@ -1328,6 +1328,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
@@ -396,9 +396,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/hisilicon/hns/hns_enet.c +3 -1
@@ -1812,8 +1812,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
@@ -917,6 +917,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
@@ -5942,15 +5942,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
@@ -9266,8 +9266,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
@@ -1747,6 +1747,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 ;
@@ -1756,7 +1757,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/stmicro/stmmac/dwmac-sun8i.c +2 -0
@@ -972,6 +972,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
@@ -3948,8 +3948,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
@@ -2058,6 +2058,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
@@ -398,6 +398,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
@@ -2588,29 +2588,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 ];
@@ -2841,11 +2818,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 :
@@ -3407,7 +3382,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);
@@ -3469,8 +3443,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);
@@ -4134,9 +4106,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/wan/fsl_ucc_hdlc.c +6 -2
@@ -200,13 +200,17 @@ static int uhdlc_init(struct ucc_hdlc_private *priv) priv->rx_skbuff =kzalloc (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 =kzalloc (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/scsi/mpt3sas/mpt3sas_base.c +6 -2
@@ -5455,14 +5455,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
@@ -1354,6 +1354,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
@@ -1479,6 +1479,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);
@@ -2345,6 +2348,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
@@ -5255,6 +5255,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
@@ -245,6 +245,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/if_macvlan.h +2 -1
@@ -58,13 +58,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
@@ -183,7 +183,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/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
@@ -92,6 +93,7 @@ struct rtnl_link_ops {unsigned int (*get_num_tx_queues)(void );unsigned int (*get_num_rx_queues)(void ); +bool netns_refund;int slave_maxtype;const struct nla_policy *slave_policy; int (*slave_validate)(struct nlattr *tb[],
net/core/dev.c +1 -1
@@ -8667,7 +8667,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/mac80211/cfg.c +2 -2
@@ -2752,14 +2752,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/qrtr/qrtr.c +5 -0
@@ -819,6 +819,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)); + addr->sq_family =AF_QIPCRTR ; addr->sq_node =le32_to_cpu (phdr->src_node_id); addr->sq_port =le32_to_cpu (phdr->src_port_id);
net/sched/sch_choke.c +4 -3
@@ -354,6 +354,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 ;
@@ -369,8 +370,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 )
@@ -420,7 +421,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
@@ -356,7 +356,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
@@ -169,6 +169,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 ;
@@ -184,7 +185,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 ) {
@@ -209,7 +212,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
@@ -649,7 +649,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
@@ -183,7 +183,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
@@ -250,10 +250,6 @@ static int auxtrace_queues__add_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++;