Linux 5.10.70
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.70 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/alpha/include/asm/io.h | 6 arch/arm64/kernel/process.c | 2 arch/arm64/kvm/vgic/vgic-its.c | 8 arch/arm64/kvm/vgic/vgic.c | 3 arch/m68k/include/asm/raw_io.h | 20 - arch/parisc/include/asm/page.h | 2 arch/sparc/kernel/ioport.c | 4 arch/sparc/kernel/mdesc.c | 3 arch/x86/include/asm/special_insns.h | 4 arch/x86/xen/enlighten_pv.c | 15 block/blk-cgroup.c | 8 block/blk-integrity.c | 9 block/blk-mq-sched.c | 3 block/blk-mq-tag.c | 2 block/blk-mq.c | 3 drivers/acpi/nfit/core.c | 3 drivers/acpi/numa/hmat.c | 3 drivers/android/binder.c | 23 - drivers/clk/keystone/sci-clk.c | 4 drivers/cpufreq/intel_pstate.c | 22 - drivers/edac/dmc520_edac.c | 2 drivers/edac/synopsys_edac.c | 2 drivers/fpga/machxo2-spi.c | 6 drivers/gpio/gpio-uniphier.c | 4 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 2 drivers/gpu/drm/drm_modes.c | 3 drivers/gpu/drm/i915/gt/intel_engine_user.c | 3 drivers/gpu/drm/i915/gvt/debugfs.c | 2 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 3 drivers/gpu/drm/radeon/radeon_cs.c | 4 drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c | 3 drivers/interconnect/qcom/bcm-voter.c | 2 drivers/irqchip/Kconfig | 1 drivers/irqchip/irq-gic-v3-its.c | 2 drivers/mcb/mcb-core.c | 12 drivers/md/md.c | 5 drivers/md/raid5.c | 3 drivers/misc/sram.c | 4 drivers/net/dsa/realtek-smi-core.c | 2 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c | 4 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 drivers/net/ethernet/broadcom/bnxt/bnxt.h | 5 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 drivers/net/ethernet/cadence/macb_pci.c | 2 drivers/net/ethernet/freescale/enetc/enetc.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 45 +- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 8 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 52 +- drivers/net/ethernet/i825xx/82596.c | 2 drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 3 drivers/net/ethernet/qlogic/qed/qed_iwarp.c | 8 drivers/net/ethernet/qlogic/qed/qed_roce.c | 8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 drivers/net/hamradio/6pack.c | 4 drivers/net/phy/phylink.c | 30 + drivers/net/usb/hso.c | 12 drivers/nvme/host/core.c | 32 - drivers/nvme/host/multipath.c | 7 drivers/nvme/host/rdma.c | 16 drivers/nvme/host/tcp.c | 13 drivers/pci/controller/cadence/pcie-cadence-host.c | 3 drivers/pci/controller/pci-aardvark.c | 2 drivers/platform/x86/intel_punit_ipc.c | 3 drivers/s390/net/qeth_core_main.c | 3 drivers/scsi/lpfc/lpfc_attr.c | 3 drivers/scsi/qla2xxx/qla_init.c | 3 drivers/scsi/scsi_transport_iscsi.c | 8 drivers/scsi/sd_zbc.c | 6 drivers/spi/spi-loopback-test.c | 3 drivers/spi/spi-tegra20-slink.c | 4 drivers/staging/comedi/comedi_fops.c | 1 drivers/staging/greybus/uart.c | 62 +-- drivers/target/target_core_configfs.c | 32 + drivers/thermal/intel/int340x_thermal/processor_thermal_device.c | 5 drivers/thermal/thermal_core.c | 7 drivers/tty/serial/8250/8250_omap.c | 2 drivers/tty/serial/mvebu-uart.c | 2 drivers/tty/synclink_gt.c | 101 +---- drivers/usb/class/cdc-acm.c | 7 drivers/usb/class/cdc-acm.h | 2 drivers/usb/core/hcd.c | 29 + drivers/usb/dwc2/gadget.c | 193 +++++----- drivers/usb/dwc3/core.c | 30 - drivers/usb/gadget/udc/r8a66597-udc.c | 2 drivers/usb/host/bcma-hcd.c | 5 drivers/usb/host/xhci.c | 1 drivers/usb/musb/tusb6010.c | 1 drivers/usb/serial/cp210x.c | 47 ++ drivers/usb/serial/mos7840.c | 2 drivers/usb/serial/option.c | 11 drivers/usb/storage/unusual_devs.h | 9 drivers/usb/storage/unusual_uas.h | 2 drivers/xen/balloon.c | 62 ++- fs/afs/dir.c | 46 -- fs/afs/dir_edit.c | 4 fs/afs/inode.c | 10 fs/afs/internal.h | 10 fs/afs/write.c | 2 fs/btrfs/raid56.c | 3 fs/btrfs/space-info.c | 5 fs/btrfs/tree-log.c | 3 fs/btrfs/volumes.c | 3 fs/cifs/connect.c | 5 fs/cifs/file.c | 2 fs/ext4/fsmap.c | 4 fs/gfs2/glock.c | 3 fs/gfs2/log.c | 2 fs/gfs2/lops.c | 3 fs/io_uring.c | 2 fs/iomap/buffered-io.c | 3 fs/ocfs2/dlmglue.c | 3 fs/qnx4/dir.c | 69 ++- fs/ubifs/gc.c | 7 fs/ubifs/replay.c | 4 fs/xfs/scrub/bitmap.c | 4 fs/xfs/xfs_bmap_item.c | 4 fs/xfs/xfs_buf.c | 6 fs/xfs/xfs_extent_busy.c | 4 fs/xfs/xfs_extent_busy.h | 3 fs/xfs/xfs_extfree_item.c | 4 fs/xfs/xfs_refcount_item.c | 4 fs/xfs/xfs_rmap_item.c | 4 include/linux/compiler.h | 2 include/linux/list_sort.h | 7 include/linux/usb/hcd.h | 2 include/trace/events/erofs.h | 6 kernel/bpf/verifier.c | 2 kernel/trace/blktrace.c | 8 lib/list_sort.c | 17 lib/test_list_sort.c | 3 mm/util.c | 4 net/dsa/dsa2.c | 12 net/ipv6/ip6_fib.c | 3 net/smc/smc_clc.c | 3 net/smc/smc_core.c | 2 net/tipc/name_table.c | 4 tools/testing/selftests/arm64/signal/test_signals.h | 2 tools/testing/selftests/arm64/signal/test_signals_utils.c | 10 140 files changed, 861 insertions(+), 592 deletions(-)
Andreas Larsson (1):
sparc32: page align size in arch_dma_alloc
Andy Shevchenko (1):
platform/x86/intel: punit_ipc: Drop wrong use of ACPI_PTR()
Antoine Tenart (1):
thermal/drivers/int340x: Do not set a wrong tcc offset on resume
Anton Eidelman (1):
nvme-multipath: fix ANA state updates when a namespace is not present
Aya Levin (1):
net/mlx4_en: Don't allow aRFS for encapsulated packets
Baokun Li (1):
scsi: iscsi: Adjust iface sysfs attr detection
Bixuan Cui (1):
bpf: Add oversize check before call kvcalloc()
Borislav Petkov (1):
EDAC/dmc520: Assign the proper type to dimm->edac_mode
Carlo Lobrano (1):
USB: serial: option: add Telit LN920 compositions
Chen Jun (1):
mm: fix uninitialized use in overcommit_policy_handler
Christoph Hellwig (3):
nvme: keep ctrl->namespaces ordered
md: fix a lock order reversal in md_alloc
block: check if a profile is actually registered in blk_integrity_unregister
Claudiu Manoil (2):
enetc: Fix illegal access when reading affinity_hint
enetc: Fix uninitialized struct dim_sample field usage
Cristian Marussi (1):
kselftest/arm64: signal: Skip tests if required features are missing
Dan Carpenter (6):
usb: gadget: r8a66597: fix a loop in set_feature()
usb: musb: tusb6010: uninitialized data in tusb_fifo_write_unaligned()
mcb: fix error handling in mcb_alloc_bus()
thermal/core: Potential buffer overflow in thermal_build_list_of_policies()
cifs: fix a sign extension bug
scsi: lpfc: Use correct scnprintf() limit
Dan Li (1):
arm64: Mark __stack_chk_guard as __ro_after_init
Dave Jiang (1):
x86/asm: Add a missing __iomem annotation in enqcmds()
David Howells (2):
afs: Fix incorrect triggering of sillyrename on 3rd-party invalidation
afs: Fix updating of i_blocks on file/dir extension
Dmitry Bogdanov (1):
scsi: qla2xxx: Restore initiator in dual mode
Doug Smythies (1):
cpufreq: intel_pstate: Override parameters if HWP forced by BIOS
Gao Xiang (1):
erofs: fix up erofs_lookup tracepoint
Greg Kroah-Hartman (1):
Linux 5.10.70
Guenter Roeck (5):
m68k: Double cast io functions to unsigned long
compiler.h: Introduce absolute_pointer macro
net: i825xx: Use absolute_pointer for memcpy from fixed memory location
alpha: Declare virt_to_phys and virt_to_bus parameter as pointer to volatile
net: 6pack: Fix tx timeout and slot time
Helge Deller (1):
parisc: Use absolute_pointer() to define PAGE0
Ian Abbott (1):
comedi: Fix memory leak in compat_insnlist()
Jan Beulich (1):
xen/x86: fix PV trap handling on secondary processors
Jens Axboe (1):
io_uring: put provided buffer meta data under memcg accounting
Jesper Nilsson (1):
net: stmmac: allow CSR clock of 300MHz
Jian Shen (1):
net: hns3: fix change RSS 'hfunc' ineffective issue
Jiapeng Chong (1):
fpga: machxo2-spi: Fix missing error code in machxo2_write_complete()
Jiri Slaby (1):
tty: synclink_gt, drop unneeded forward declarations
Johan Hovold (4):
USB: cdc-acm: fix minor-number release
staging: greybus: uart: fix tty use after free
net: hso: fix muxed tty registration
USB: serial: cp210x: fix dropped characters with CP2102
Juergen Gross (2):
xen/balloon: use a kernel thread instead a workqueue xen/balloon: fix balloon kthread freezing
Julian Sikorski (1):
Re-enable UAS for LaCie Rugged USB3-FW with fk quirk
Julian Wiedmann (1):
s390/qeth: fix NULL deref in qeth_clear_working_pool_list()
Kaige Fu (1):
irqchip/gic-v3-its: Fix potential VPE leak on error
Karsten Graul (2):
net/smc: add missing error check in smc_clc_prfx_set() net/smc: fix 'workqueue leaked lock' in smc_conn_abort_work
Kees Cook (1):
x86/asm: Fix SETZ size enqcmds() build failure
Kishon Vijay Abraham I (2):
usb: core: hcd: Add support for deferring roothub registration
xhci: Set HCD flag to defer primary roothub registration
Krzysztof Kozlowski (2):
USB: serial: mos7840: remove duplicated 0xac24 device ID
USB: serial: option: remove duplicate USB device ID
Kunihiko Hayashi (1):
gpio: uniphier: Fix void functions to remove return value
Li Jinlin (1):
blk-cgroup: fix UAF by grabbing blkcg lock before destroying blkg pd
Li Jun (1):
usb: dwc3: core: balance phy init and exit
Lihong Kou (1):
block: flush the integrity workqueue in blk_integrity_unregister
Lijo Lazar (1):
drm/amd/pm: Update intermediate power state for SI
Linus Torvalds (4):
sparc: avoid stringop-overread errors
qnx4: avoid stringop-overread errors
spi: Fix tegra20 build with CONFIG_PM=n
qnx4: work around gcc false positive warning bug
Mark Brown (1):
kselftest/arm64: signal: Add SVE to the set of features we can check for
Maurizio Lombardi (1):
scsi: target: Fix the pgr/alua_support_store functions
Michael Chan (1):
bnxt_en: Fix TX timeout when TX ring size is set to the smallest
Minas Harutyunyan (2):
usb: dwc2: gadget: Fix ISOC flow for BDMA and Slave
usb: dwc2: gadget: Fix ISOC transfer complete handling for DDMA
Ming Lei (1):
blk-mq: avoid to iterate over stale request
Naohiro Aota (1):
scsi: sd_zbc: Ensure buffer size is aligned to SECTOR_SIZE
Nathan Rossi (1):
net: phylink: Update SFP selected interface on advertising changes
Nishanth Menon (1):
serial: 8250: 8250_omap: Fix RX_LVL register offset
Ondrej Zary (1):
usb-storage: Add quirk for ScanLogic SL11R-IDE older than 2.6c
Pali Rohár (2):
PCI: aardvark: Increase polling delay to 1.5s while waiting for PIO response
serial: mvebu-uart: fix driver's tx_empty callback
Qu Wenruo (1):
btrfs: prevent __btrfs_dump_space_info() to underflow its free space
Rafał Miłecki (1):
Revert "USB: bcma: Add a check for devm_gpiod_get"
Randy Dunlap (2):
tty: synclink_gt: rename a conflicting function name irqchip/goldfish-pic: Select GENERIC_IRQ_CHIP to fix build
Ruozhu Li (1):
nvme-rdma: destroy cm id before destroy qp to avoid use after free
Sagi Grimberg (1):
nvme-tcp: fix incorrect h2cdata pdu offset accounting
Sai Krishna Potthuri (1):
EDAC/synopsys: Fix wrong value type assignment for edac_mode
Sami Tolvanen (1):
treewide: Change list_sort to use const pointers
Shai Malin (1):
qed: rdma - don't wait for resources under hw error recovery flow
Simon Ser (1):
amd/display: downgrade validation failure log level
Slark Xiao (1):
USB: serial: option: add device id for Foxconn T99W265
Steve French (1):
cifs: fix incorrect check for null pointer in header_assemble
Sudarsana Reddy Kalluru (1):
atlantic: Fix issue in the pm resume flow.
Todd Kjos (1):
binder: make sure fd closes complete
Tom Rix (1):
fpga: machxo2-spi: Return an error on failure
Tong Zhang (1):
net: macb: fix use after free on rmmod
Uwe Brandt (1):
USB: serial: cp210x: add ID for GW Instek GDM-834x Digital Multimeter
Vladimir Oltean (2):
net: dsa: don't allocate the slave_mii_bus using devres
net: dsa: realtek: register the MDIO bus under devres
Wengang Wang (1):
ocfs2: drop acl cache for directories too
Yufeng Mo (1):
net: hns3: check queue id range before using
Zhihao Cheng (1):
blktrace: Fix uaf in blk_trace access after removing by sysfs
zhang kai (1):
ipv6: delay fib6_sernum increase in fib6_add
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 69 +SUBLEVEL = 70 EXTRAVERSION = NAME = Dare mighty things
arch/alpha/include/asm/io.h +3 -3
@@ -60,7 +60,7 @@ extern inline void set_hae(unsigned long new_hae)* Change virtual addresses to physical addresses and vv. */ #ifdef USE_48_BIT_KSEG -static inline unsigned long virt_to_phys (void *address) +static inline unsigned long virt_to_phys (volatile void *address) {return (unsigned long )address -IDENT_ADDR ; }
@@ -70,7 +70,7 @@ static inline void * phys_to_virt(unsigned long address) return (void *) (address + IDENT_ADDR); }#else -static inline unsigned long virt_to_phys (void *address) +static inline unsigned long virt_to_phys (volatile void *address) {unsigned long phys = (unsigned long )address;
@@ -106,7 +106,7 @@ static inline void * phys_to_virt(unsigned long address)extern unsigned long __direct_map_base;extern unsigned long __direct_map_size; -static inline unsigned long __deprecated virt_to_bus (void *address) +static inline unsigned long __deprecated virt_to_bus (volatile void *address) {unsigned long phys =virt_to_phys (address);unsigned long bus = phys + __direct_map_base;
arch/arm64/kernel/process.c +1 -1
@@ -60,7 +60,7 @@#if defined(CONFIG_STACKPROTECTOR ) && !defined(CONFIG_STACKPROTECTOR_PER_TASK )#include <linux/stackprotector.h> -unsigned long __stack_chk_guard__read_mostly ; +unsigned long __stack_chk_guard__ro_after_init ;EXPORT_SYMBOL (__stack_chk_guard);#endif
arch/arm64/kvm/vgic/vgic-its.c +4 -4
@@ -2190,8 +2190,8 @@ static int vgic_its_restore_ite(struct vgic_its *its, u32 event_id,return offset; } -static int vgic_its_ite_cmp (void *priv,struct list_head *a, -struct list_head *b) +static int vgic_its_ite_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct its_ite *itea = container_of(a, struct its_ite, ite_list); struct its_ite *iteb = container_of(b, struct its_ite, ite_list);
@@ -2329,8 +2329,8 @@ static int vgic_its_restore_dte(struct vgic_its *its, u32 id,return offset; } -static int vgic_its_device_cmp (void *priv,struct list_head *a, -struct list_head *b) +static int vgic_its_device_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct its_device *deva = container_of(a, struct its_device, dev_list); struct its_device *devb = container_of(b, struct its_device, dev_list);
arch/arm64/kvm/vgic/vgic.c +2 -1
@@ -255,7 +255,8 @@ static struct kvm_vcpu *vgic_target_oracle(struct vgic_irq *irq)* Return negative if "a" sorts before "b", 0 to preserve order, and positive * to sort "b" before "a". */ -static int vgic_irq_cmp (void *priv,struct list_head *a,struct list_head *b) +static int vgic_irq_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct vgic_irq *irqa = container_of(a, struct vgic_irq, ap_list); struct vgic_irq *irqb = container_of(b, struct vgic_irq, ap_list);
arch/m68k/include/asm/raw_io.h +10 -10
@@ -17,21 +17,21 @@* two accesses to memory, which may be undesirable for some devices. */ #define in_8 (addr) \ - ({ u8 __v = (*(__force volatile u8 *) (addr)); __v; }) + ({ u8 __v = (*(__force volatile u8 *) (unsigned long)(addr)); __v; })#define in_be16 (addr) \ - ({ u16 __v = (*(__force volatile u16 *) (addr)); __v; }) + ({ u16 __v = (*(__force volatile u16 *) (unsigned long)(addr)); __v; })#define in_be32 (addr) \ - ({ u32 __v = (*(__force volatile u32 *) (addr)); __v; }) + ({ u32 __v = (*(__force volatile u32 *) (unsigned long)(addr)); __v; })#define in_le16 (addr) \ - ({ u16 __v = le16_to_cpu(*(__force volatile __le16 *) (addr)); __v; }) + ({ u16 __v = le16_to_cpu(*(__force volatile __le16 *) (unsigned long)(addr)); __v; })#define in_le32 (addr) \ - ({ u32 __v = le32_to_cpu(*(__force volatile __le32 *) (addr)); __v; }) + ({ u32 __v = le32_to_cpu(*(__force volatile __le32 *) (unsigned long)(addr)); __v; }) -#define out_8 (addr,b) (void)((*(__force volatile u8 *) (addr)) = (b)) -#define out_be16 (addr,w) (void)((*(__force volatile u16 *) (addr)) = (w)) -#define out_be32 (addr,l) (void)((*(__force volatile u32 *) (addr)) = (l)) -#define out_le16 (addr,w) (void)((*(__force volatile __le16 *) (addr)) = cpu_to_le16(w)) -#define out_le32 (addr,l) (void)((*(__force volatile __le32 *) (addr)) = cpu_to_le32(l)) +#define out_8 (addr,b) (void)((*(__force volatile u8 *) (unsigned long)(addr)) = (b)) +#define out_be16 (addr,w) (void)((*(__force volatile u16 *) (unsigned long)(addr)) = (w)) +#define out_be32 (addr,l) (void)((*(__force volatile u32 *) (unsigned long)(addr)) = (l)) +#define out_le16 (addr,w) (void)((*(__force volatile __le16 *) (unsigned long)(addr)) = cpu_to_le16(w)) +#define out_le32 (addr,l) (void)((*(__force volatile __le32 *) (unsigned long)(addr)) = cpu_to_le32(l))#define raw_inb in_8#define raw_inw in_be16
arch/parisc/include/asm/page.h +1 -1
@@ -184,7 +184,7 @@ extern int npmem_ranges;#include <asm-generic/getorder.h> #include <asm/pdc.h> -#define PAGE0 ((struct zeropage *)__PAGE_OFFSET) +#define PAGE0 ((struct zeropage *)absolute_pointer(__PAGE_OFFSET))/* DEFINITION OF THE ZERO-PAGE (PAG0) */ /* based on work by Jason Eckhardt ([email protected]) */
arch/sparc/kernel/ioport.c +3 -1
@@ -356,7 +356,9 @@ void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle,void arch_dma_free (struct device *dev,size_t size,void *cpu_addr,dma_addr_t dma_addr,unsigned long attrs) { -if (!sparc_dma_free_resource (cpu_addr,PAGE_ALIGN (size))) + size =PAGE_ALIGN (size); + +if (!sparc_dma_free_resource (cpu_addr, size))return ;dma_make_coherent (dma_addr, size);
arch/sparc/kernel/mdesc.c +2 -1
@@ -39,6 +39,7 @@ struct mdesc_hdr {u32 node_sz;/* node block size */ u32 name_sz;/* name block size */ u32 data_sz;/* data block size */ +char data[]; } __attribute__((aligned(16)));struct mdesc_elem {
@@ -612,7 +613,7 @@ EXPORT_SYMBOL(mdesc_get_node_info);static struct mdesc_elem *node_block (struct mdesc_hdr *mdesc) { -return (struct mdesc_elem *) (mdesc +1 ); +return (struct mdesc_elem *) mdesc->data; }static void *name_block (struct mdesc_hdr *mdesc)
arch/x86/include/asm/special_insns.h +2 -2
@@ -286,8 +286,8 @@ static inline void movdir64b(void *dst, const void *src)static inline int enqcmds (void __iomem *dst,const void *src) {const struct {char _[64 ]; } *__src = src; -struct {char _[64 ]; } *__dst = dst; -int zf; +struct {char _[64 ]; }__iomem *__dst = dst; +bool zf;/* * ENQCMDS %(rdx), rax
arch/x86/xen/enlighten_pv.c +9 -6
@@ -736,8 +736,8 @@ static void xen_write_idt_entry(gate_desc *dt, int entrynum, const gate_desc *g)preempt_enable (); } -static void xen_convert_trap_info (const struct desc_ptr *desc, -struct trap_info *traps) +static unsigned xen_convert_trap_info (const struct desc_ptr *desc, +struct trap_info *traps,bool full) {unsigned in, out, count;
@@ -747,17 +747,18 @@ static void xen_convert_trap_info(const struct desc_ptr *desc,for (in = out =0 ; in < count; in++) {gate_desc *entry = (gate_desc *)(desc->address) + in; -if (cvt_gate_to_trap (in, entry, &traps[out])) +if (cvt_gate_to_trap (in, entry, &traps[out]) || full) out++; } - traps[out].address =0 ; + +return out; }void xen_copy_trap_info (struct trap_info *traps) {const struct desc_ptr *desc =this_cpu_ptr (&idt_desc); -xen_convert_trap_info (desc, traps); +xen_convert_trap_info (desc, traps, true); }/* Load a new IDT into Xen. In principle this can be per-CPU, so we
@@ -767,6 +768,7 @@ static void xen_load_idt(const struct desc_ptr *desc) {static DEFINE_SPINLOCK (lock);static struct trap_info traps[257 ]; +unsigned out;trace_xen_cpu_load_idt (desc);
@@ -774,7 +776,8 @@ static void xen_load_idt(const struct desc_ptr *desc)memcpy (this_cpu_ptr (&idt_desc), desc,sizeof (idt_desc)); -xen_convert_trap_info (desc, traps); + out =xen_convert_trap_info (desc, traps, false); +memset (&traps[out],0 ,sizeof (traps[0 ]));xen_mc_flush ();if (HYPERVISOR_set_trap_table (traps))
block/blk-cgroup.c +8 -0
@@ -1387,10 +1387,14 @@ int blkcg_activate_policy(struct request_queue *q,/* alloc failed, nothing's initialized yet, free everything */ spin_lock_irq (&q->queue_lock);list_for_each_entry (blkg, &q->blkg_list, q_node) { +struct blkcg *blkcg = blkg->blkcg; + +spin_lock (&blkcg->lock);if (blkg->pd[pol->plid]) { pol->pd_free_fn (blkg->pd[pol->plid]); blkg->pd[pol->plid] =NULL ; } +spin_unlock (&blkcg->lock); }spin_unlock_irq (&q->queue_lock); ret = -ENOMEM ;
@@ -1422,12 +1426,16 @@ void blkcg_deactivate_policy(struct request_queue *q,__clear_bit (pol->plid, q->blkcg_pols);list_for_each_entry (blkg, &q->blkg_list, q_node) { +struct blkcg *blkcg = blkg->blkcg; + +spin_lock (&blkcg->lock);if (blkg->pd[pol->plid]) {if (pol->pd_offline_fn) pol->pd_offline_fn (blkg->pd[pol->plid]); pol->pd_free_fn (blkg->pd[pol->plid]); blkg->pd[pol->plid] =NULL ; } +spin_unlock (&blkcg->lock); }spin_unlock_irq (&q->queue_lock);
block/blk-integrity.c +8 -1
@@ -426,8 +426,15 @@ EXPORT_SYMBOL(blk_integrity_register);*/ void blk_integrity_unregister (struct gendisk *disk) { +struct blk_integrity *bi = &disk->queue->integrity; + +if (!bi->profile) +return ; + +/* ensure all bios are off the integrity workqueue */ +blk_flush_integrity ();blk_queue_flag_clear (QUEUE_FLAG_STABLE_WRITES , disk->queue); -memset (&disk->queue->integrity,0 ,sizeof (struct blk_integrity )); +memset (bi,0 ,sizeof (*bi)); }EXPORT_SYMBOL (blk_integrity_unregister);
block/blk-mq-sched.c +2 -1
@@ -75,7 +75,8 @@ void blk_mq_sched_restart(struct blk_mq_hw_ctx *hctx)blk_mq_run_hw_queue (hctx, true); } -static int sched_rq_cmp (void *priv,struct list_head *a,struct list_head *b) +static int sched_rq_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct request *rqa = container_of(a, struct request, queuelist); struct request *rqb = container_of(b, struct request, queuelist);
block/blk-mq-tag.c +1 -1
@@ -207,7 +207,7 @@ static struct request *blk_mq_find_and_get_req(struct blk_mq_tags *tags,spin_lock_irqsave (&tags->lock, flags); rq = tags->rqs[bitnr]; -if (!rq || !refcount_inc_not_zero (&rq->ref)) +if (!rq || rq->tag != bitnr || !refcount_inc_not_zero (&rq->ref)) rq =NULL ;spin_unlock_irqrestore (&tags->lock, flags);return rq;
block/blk-mq.c +2 -1
@@ -1866,7 +1866,8 @@ void blk_mq_insert_requests(struct blk_mq_hw_ctx *hctx, struct blk_mq_ctx *ctx,spin_unlock (&ctx->lock); } -static int plug_rq_cmp (void *priv,struct list_head *a,struct list_head *b) +static int plug_rq_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct request *rqa = container_of(a, struct request, queuelist); struct request *rqb = container_of(b, struct request, queuelist);
drivers/acpi/nfit/core.c +2 -1
@@ -1194,7 +1194,8 @@ static int __nfit_mem_init(struct acpi_nfit_desc *acpi_desc,return 0 ; } -static int nfit_mem_cmp (void *priv,struct list_head *_a,struct list_head *_b) +static int nfit_mem_cmp (void *priv,const struct list_head *_a, +const struct list_head *_b) {struct nfit_mem *a =container_of (_a,typeof (*a), list);struct nfit_mem *b =container_of (_b,typeof (*b), list);
drivers/acpi/numa/hmat.c +2 -1
@@ -558,7 +558,8 @@ static bool hmat_update_best(u8 type, u32 value, u32 *best)return updated; } -static int initiator_cmp (void *priv,struct list_head *a,struct list_head *b) +static int initiator_cmp (void *priv,const struct list_head *a, +const struct list_head *b) {struct memory_initiator *ia;struct memory_initiator *ib;
drivers/android/binder.c +17 -6
@@ -2236,6 +2236,7 @@ static void binder_deferred_fd_close(int fd) }static void binder_transaction_buffer_release (struct binder_proc *proc, +struct binder_thread *thread,struct binder_buffer *buffer,binder_size_t failed_at,bool is_failure)
@@ -2395,8 +2396,16 @@ static void binder_transaction_buffer_release(struct binder_proc *proc, &proc->alloc, &fd, buffer, offset, sizeof(fd));WARN_ON (err); -if (!err) +if (!err) {binder_deferred_fd_close (fd); +/* +* Need to make sure the thread goes +* back to userspace to complete the +* deferred close +*/ +if (thread) + thread->looper_need_return = true; + } } }break ;default :
@@ -3465,7 +3474,7 @@ static void binder_transaction(struct binder_proc *proc, err_copy_data_failed:binder_free_txn_fixups (t);trace_binder_transaction_failed_buffer_release (t->buffer); -binder_transaction_buffer_release (target_proc, t->buffer, +binder_transaction_buffer_release (target_proc,NULL , t->buffer, buffer_offset, true);if (target_node)binder_dec_node_tmpref (target_node);
@@ -3542,7 +3551,9 @@ static void binder_transaction(struct binder_proc *proc,* Cleanup buffer and free it. */ static void -binder_free_buf (struct binder_proc *proc,struct binder_buffer *buffer) +binder_free_buf (struct binder_proc *proc, +struct binder_thread *thread, +struct binder_buffer *buffer) {binder_inner_proc_lock (proc);if (buffer->transaction) {
@@ -3570,7 +3581,7 @@ binder_free_buf(struct binder_proc *proc, struct binder_buffer *buffer)binder_node_inner_unlock (buf_node); }trace_binder_transaction_buffer_release (buffer); -binder_transaction_buffer_release (proc, buffer,0 , false); +binder_transaction_buffer_release (proc, thread, buffer,0 , false);binder_alloc_free_buf (&proc->alloc, buffer); }
@@ -3771,7 +3782,7 @@ static int binder_thread_write(struct binder_proc *proc, proc->pid, thread->pid, (u64 )data_ptr, buffer->debug_id, buffer->transaction ? "active" : "finished"); -binder_free_buf (proc, buffer); +binder_free_buf (proc, thread, buffer);break ; }
@@ -4459,7 +4470,7 @@ static int binder_thread_read(struct binder_proc *proc, buffer->transaction =NULL ;binder_cleanup_transaction (t,"fd fixups failed" ,BR_FAILED_REPLY ); -binder_free_buf (proc, buffer); +binder_free_buf (proc, thread, buffer); binder_debug(BINDER_DEBUG_FAILED_TRANSACTION, "%d:%d %stransaction %d fd fixups failed %d/%d, line %d\n", proc->pid, thread->pid,
drivers/clk/keystone/sci-clk.c +2 -2
@@ -503,8 +503,8 @@ static int ti_sci_scan_clocks_from_fw(struct sci_clk_provider *provider)#else -static int _cmp_sci_clk_list (void *priv,struct list_head *a, -struct list_head *b) +static int _cmp_sci_clk_list (void *priv,const struct list_head *a, +const struct list_head *b) { struct sci_clk *ca = container_of(a, struct sci_clk, node); struct sci_clk *cb = container_of(b, struct sci_clk, node);
drivers/cpufreq/intel_pstate.c +14 -8
@@ -3035,11 +3035,15 @@ static int __init intel_pstate_init(void)if (boot_cpu_data.x86_vendor !=X86_VENDOR_INTEL )return -ENODEV ; -if (no_load) -return -ENODEV ; - id =x86_match_cpu (hwp_support_ids);if (id) { +bool hwp_forced =intel_pstate_hwp_is_enabled (); + +if (hwp_forced) +pr_info ("HWP enabled by BIOS\n" ); +else if (no_load) +return -ENODEV ; +copy_cpu_funcs (&core_funcs);/* * Avoid enabling HWP for processors without EPP support,
@@ -3049,8 +3053,7 @@ static int __init intel_pstate_init(void)* If HWP is enabled already, though, there is no choice but to * deal with it. */ -if ((!no_hwp &&boot_cpu_has (X86_FEATURE_HWP_EPP )) || -intel_pstate_hwp_is_enabled ()) { +if ((!no_hwp &&boot_cpu_has (X86_FEATURE_HWP_EPP )) || hwp_forced) { hwp_active++; hwp_mode_bdw = id->driver_data; intel_pstate.attr = hwp_cpufreq_attrs;
@@ -3061,7 +3064,11 @@ static int __init intel_pstate_init(void) goto hwp_cpu_matched; } +pr_info ("HWP not enabled\n" ); }else { +if (no_load) +return -ENODEV ; + id =x86_match_cpu (intel_pstate_cpu_ids);if (!id) {pr_info ("CPU model not supported\n" );
@@ -3138,10 +3145,9 @@ static int __init intel_pstate_setup(char *str)else if (!strcmp (str,"passive" )) default_driver = &intel_cpufreq; -if (!strcmp (str,"no_hwp" )) { -pr_info ("HWP disabled\n" ); +if (!strcmp (str,"no_hwp" )) no_hwp =1 ; - } +if (!strcmp (str,"force" )) force_load =1 ;if (!strcmp (str,"hwp_only" ))
drivers/edac/dmc520_edac.c +1 -1
@@ -464,7 +464,7 @@ static void dmc520_init_csrow(struct mem_ctl_info *mci) dimm->grain = pvt->mem_width_in_bytes; dimm->dtype = dt; dimm->mtype = mt; - dimm->edac_mode =EDAC_FLAG_SECDED ; + dimm->edac_mode =EDAC_SECDED ; dimm->nr_pages = pages_per_rank / csi->nr_channels; } }
drivers/edac/synopsys_edac.c +1 -1
@@ -782,7 +782,7 @@ static void init_csrows(struct mem_ctl_info *mci)for (j =0 ; j < csi->nr_channels; j++) { dimm = csi->channels[j]->dimm; - dimm->edac_mode =EDAC_FLAG_SECDED ; + dimm->edac_mode =EDAC_SECDED ; dimm->mtype = p_data->get_mtype (priv->baseaddr); dimm->nr_pages = (size >>PAGE_SHIFT ) / csi->nr_channels; dimm->grain =SYNPS_EDAC_ERR_GRAIN ;
drivers/fpga/machxo2-spi.c +5 -1
@@ -225,8 +225,10 @@ static int machxo2_write_init(struct fpga_manager *mgr, goto fail;get_status (spi, &status); -if (test_bit (FAIL , &status)) +if (test_bit (FAIL , &status)) { + ret = -EINVAL ; goto fail; + }dump_status_reg (&status);spi_message_init (&msg);
@@ -313,6 +315,7 @@ static int machxo2_write_complete(struct fpga_manager *mgr,dump_status_reg (&status);if (!test_bit (DONE , &status)) {machxo2_cleanup (mgr); + ret = -EINVAL ; goto fail; }
@@ -335,6 +338,7 @@ static int machxo2_write_complete(struct fpga_manager *mgr,break ;if (++refreshloop ==MACHXO2_MAX_REFRESH_LOOP ) {machxo2_cleanup (mgr); + ret = -EINVAL ; goto fail; } }while (1 );
drivers/gpio/gpio-uniphier.c +2 -2
@@ -184,7 +184,7 @@ static void uniphier_gpio_irq_mask(struct irq_data *data)uniphier_gpio_reg_update (priv,UNIPHIER_GPIO_IRQ_EN , mask,0 ); -return irq_chip_mask_parent (data); +irq_chip_mask_parent (data); }static void uniphier_gpio_irq_unmask (struct irq_data *data)
@@ -194,7 +194,7 @@ static void uniphier_gpio_irq_unmask(struct irq_data *data)uniphier_gpio_reg_update (priv,UNIPHIER_GPIO_IRQ_EN , mask, mask); -return irq_chip_unmask_parent (data); +irq_chip_unmask_parent (data); }static int uniphier_gpio_irq_set_type (struct irq_data *data,unsigned int type)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -1
@@ -8962,7 +8962,8 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, goto fail; status =dc_validate_global_state (dc, dm_state->context, false);if (status !=DC_OK ) { -DC_LOG_WARNING ("DC global validation failure: %s (%d)" , +drm_dbg_atomic (dev, +"DC global validation failure: %s (%d)" ,dc_status_to_str (status), status); ret = -EINVAL ; goto fail;
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c +2 -0
@@ -6870,6 +6870,8 @@ static int si_dpm_enable(struct amdgpu_device *adev)si_enable_auto_throttle_source (adev,AMDGPU_DPM_AUTO_THROTTLE_SRC_THERMAL , true);si_thermal_start_thermal_controller (adev); +ni_update_current_ps (adev, boot_ps); +return 0 ; }
drivers/gpu/drm/drm_modes.c +2 -1
@@ -1290,7 +1290,8 @@ EXPORT_SYMBOL(drm_mode_prune_invalid);* Negative if @lh_a is better than @lh_b, zero if they're equivalent, or * positive if @lh_b is better than @lh_a. */ -static int drm_mode_compare (void *priv,struct list_head *lh_a,struct list_head *lh_b) +static int drm_mode_compare (void *priv,const struct list_head *lh_a, +const struct list_head *lh_b) { struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head); struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head);
drivers/gpu/drm/i915/gt/intel_engine_user.c +2 -1
@@ -49,7 +49,8 @@ static const u8 uabi_classes[] = { [VIDEO_ENHANCEMENT_CLASS] = I915_ENGINE_CLASS_VIDEO_ENHANCE, }; -static int engine_cmp (void *priv,struct list_head *A ,struct list_head *B ) +static int engine_cmp (void *priv,const struct list_head *A , +const struct list_head *B ) {const struct intel_engine_cs *a =container_of ((struct rb_node *)A ,typeof (*a), uabi_node);
drivers/gpu/drm/i915/gvt/debugfs.c +1 -1
@@ -41,7 +41,7 @@ struct diff_mmio {/* Compare two diff_mmio items. */ static int mmio_offset_compare (void *priv, -struct list_head *a,struct list_head *b) +const struct list_head *a,const struct list_head *b) {struct diff_mmio *ma;struct diff_mmio *mb;
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c +2 -1
@@ -1075,7 +1075,8 @@ static int igt_ppgtt_shrink_boom(void *arg)return exercise_ppgtt (arg, shrink_boom); } -static int sort_holes (void *priv,struct list_head *A ,struct list_head *B ) +static int sort_holes (void *priv,const struct list_head *A , +const struct list_head *B ) {struct drm_mm_node *a =list_entry (A ,typeof (*a), hole_stack);struct drm_mm_node *b =list_entry (B ,typeof (*b), hole_stack);
drivers/gpu/drm/radeon/radeon_cs.c +2 -2
@@ -394,8 +394,8 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)return 0 ; } -static int cmp_size_smaller_first (void *priv,struct list_head *a, -struct list_head *b) +static int cmp_size_smaller_first (void *priv,const struct list_head *a, +const struct list_head *b) { struct radeon_bo_list *la = list_entry(a, struct radeon_bo_list, tv.head); struct radeon_bo_list *lb = list_entry(b, struct radeon_bo_list, tv.head);
drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c +2 -1
@@ -83,7 +83,8 @@ usnic_uiom_interval_node_alloc(long int start, long int last, int ref_cnt,return interval; } -static int interval_cmp (void *priv,struct list_head *a,struct list_head *b) +static int interval_cmp (void *priv,const struct list_head *a, +const struct list_head *b) {struct usnic_uiom_interval_node *node_a, *node_b;
drivers/interconnect/qcom/bcm-voter.c +1 -1
@@ -39,7 +39,7 @@ struct bcm_voter {u32 tcs_wait; }; -static int cmp_vcd (void *priv,struct list_head *a,struct list_head *b) +static int cmp_vcd (void *priv,const struct list_head *a,const struct list_head *b) {const struct qcom_icc_bcm *bcm_a = list_entry(a, struct qcom_icc_bcm, list);
drivers/irqchip/Kconfig +1 -0
@@ -425,6 +425,7 @@ config MESON_IRQ_GPIO config GOLDFISH_PIC bool "Goldfish programmable interrupt controller" depends on MIPS && (GOLDFISH || COMPILE_TEST) + select GENERIC_IRQ_CHIP select IRQ_DOMAIN help Say yes here to enable Goldfish interrupt controller driver used
drivers/irqchip/irq-gic-v3-its.c +1 -1
@@ -4489,7 +4489,7 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virqif (err) {if (i >0 ) -its_vpe_irq_domain_free (domain, virq, i -1 ); +its_vpe_irq_domain_free (domain, virq, i);its_lpi_free (bitmap, base, nr_ids);its_free_prop_table (vprop_page);
drivers/mcb/mcb-core.c +6 -6
@@ -277,8 +277,8 @@ struct mcb_bus *mcb_alloc_bus(struct device *carrier) bus_nr =ida_simple_get (&mcb_ida,0 ,0 ,GFP_KERNEL );if (bus_nr <0 ) { - rc = bus_nr; - goto err_free; +kfree (bus); +return ERR_PTR (bus_nr); } bus->bus_nr = bus_nr;
@@ -293,12 +293,12 @@ struct mcb_bus *mcb_alloc_bus(struct device *carrier)dev_set_name (&bus->dev,"mcb:%d" , bus_nr); rc =device_add (&bus->dev);if (rc) - goto err_free; + goto err_put;return bus; -err_free: -put_device (carrier); -kfree (bus); + +err_put: +put_device (&bus->dev);return ERR_PTR (rc); }EXPORT_SYMBOL_NS_GPL (mcb_alloc_bus,MCB );
drivers/md/md.c +0 -5
@@ -5759,10 +5759,6 @@ static int md_alloc(dev_t dev, char *name) disk->flags |=GENHD_FL_EXT_DEVT ; disk->events |=DISK_EVENT_MEDIA_CHANGE ; mddev->gendisk = disk; -/* As soon as we call add_disk(), another thread could get -* through to md_open, so make sure it doesn't get too far -*/ -mutex_lock (&mddev->open_mutex);add_disk (disk); error =kobject_add (&mddev->kobj, &disk_to_dev (disk)->kobj,"%s" ,"md" );
@@ -5777,7 +5773,6 @@ static int md_alloc(dev_t dev, char *name)if (mddev->kobj.sd &&sysfs_create_group (&mddev->kobj, &md_bitmap_group))pr_debug ("pointless warning\n" ); -mutex_unlock (&mddev->open_mutex); abort:mutex_unlock (&disks_mutex);if (!error && mddev->kobj.sd) {
drivers/md/raid5.c +2 -1
@@ -953,7 +953,8 @@ static void dispatch_bio_list(struct bio_list *tmp)submit_bio_noacct (bio); } -static int cmp_stripe (void *priv,struct list_head *a,struct list_head *b) +static int cmp_stripe (void *priv,const struct list_head *a, +const struct list_head *b) {const struct r5pending_data *da =list_entry (a, struct r5pending_data, sibling);
drivers/misc/sram.c +2 -2
@@ -144,8 +144,8 @@ static void sram_free_partitions(struct sram_dev *sram) } } -static int sram_reserve_cmp (void *priv,struct list_head *a, -struct list_head *b) +static int sram_reserve_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct sram_reserve *ra = list_entry(a, struct sram_reserve, list); struct sram_reserve *rb = list_entry(b, struct sram_reserve, list);
drivers/net/dsa/realtek-smi-core.c +1 -1
@@ -368,7 +368,7 @@ int realtek_smi_setup_mdio(struct realtek_smi *smi) smi->slave_mii_bus->parent = smi->dev; smi->ds->slave_mii_bus = smi->slave_mii_bus; - ret =of_mdiobus_register (smi->slave_mii_bus, mdio_np); + ret =devm_of_mdiobus_register (smi->dev, smi->slave_mii_bus, mdio_np);if (ret) {dev_err (smi->dev,"unable to register MDIO bus %s\n" , smi->slave_mii_bus->id);
drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c +2 -2
@@ -419,13 +419,13 @@ static int atl_resume_common(struct device *dev, bool deep)if (deep) {/* Reinitialize Nic/Vecs objects */ aq_nic_deinit (nic, !nic->aq_hw->aq_nic_cfg->wol); + } +if (netif_running (nic->ndev)) { ret =aq_nic_init (nic);if (ret) goto err_exit; - } -if (netif_running (nic->ndev)) { ret =aq_nic_start (nic);if (ret) goto err_exit;
drivers/net/ethernet/broadcom/bnxt/bnxt.c +4 -4
@@ -381,7 +381,7 @@ static bool bnxt_txr_netif_try_stop_queue(struct bnxt *bp,* netif_tx_queue_stopped(). */ smp_mb (); -if (bnxt_tx_avail (bp, txr) > bp->tx_wake_thresh) { +if (bnxt_tx_avail (bp, txr) >= bp->tx_wake_thresh) {netif_tx_wake_queue (txq);return false; }
@@ -717,7 +717,7 @@ static void bnxt_tx_int(struct bnxt *bp, struct bnxt_napi *bnapi, int nr_pkts)smp_mb ();if (unlikely (netif_tx_queue_stopped (txq)) && -bnxt_tx_avail (bp, txr) > bp->tx_wake_thresh && +bnxt_tx_avail (bp, txr) >= bp->tx_wake_thresh &&READ_ONCE (txr->dev_state) !=BNXT_DEV_STATE_CLOSING )netif_tx_wake_queue (txq); }
@@ -2300,7 +2300,7 @@ static int __bnxt_poll_work(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,if (TX_CMP_TYPE (txcmp) ==CMP_TYPE_TX_L2_CMP ) { tx_pkts++;/* return full budget so NAPI will complete. */ -if (unlikely (tx_pkts > bp->tx_wake_thresh)) { +if (unlikely (tx_pkts >= bp->tx_wake_thresh)) { rx_pkts = budget; raw_cons =NEXT_RAW_CMP (raw_cons);if (budget)
@@ -3431,7 +3431,7 @@ static int bnxt_init_tx_rings(struct bnxt *bp)u16 i; bp->tx_wake_thresh =max_t (int, bp->tx_ring_size /2 , -MAX_SKB_FRAGS +1 ); +BNXT_MIN_TX_DESC_CNT );for (i =0 ; i < bp->tx_nr_rings; i++) {struct bnxt_tx_ring_info *txr = &bp->tx_ring[i];
drivers/net/ethernet/broadcom/bnxt/bnxt.h +5 -0
@@ -611,6 +611,11 @@ struct nqe_cn {#define BNXT_MAX_RX_JUM_DESC_CNT (RX_DESC_CNT * MAX_RX_AGG_PAGES - 1)#define BNXT_MAX_TX_DESC_CNT (TX_DESC_CNT * MAX_TX_PAGES - 1) +/* Minimum TX BDs for a TX packet with MAX_SKB_FRAGS + 1. We need one extra +* BD because the first TX BD is always a long BD. +*/ +#define BNXT_MIN_TX_DESC_CNT (MAX_SKB_FRAGS + 2) +#define RX_RING (x) (((x) & ~(RX_DESC_CNT - 1)) >> (BNXT_PAGE_SHIFT - 4))#define RX_IDX (x) ((x) & (RX_DESC_CNT - 1))
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -1
@@ -780,7 +780,7 @@ static int bnxt_set_ringparam(struct net_device *dev,if ((ering->rx_pending >BNXT_MAX_RX_DESC_CNT ) || (ering->tx_pending >BNXT_MAX_TX_DESC_CNT ) || - (ering->tx_pending <=MAX_SKB_FRAGS )) + (ering->tx_pending <BNXT_MIN_TX_DESC_CNT ))return -EINVAL ;if (netif_running (dev))
drivers/net/ethernet/cadence/macb_pci.c +1 -1
@@ -111,9 +111,9 @@ static void macb_remove(struct pci_dev *pdev)struct platform_device *plat_dev =pci_get_drvdata (pdev);struct macb_platform_data *plat_data =dev_get_platdata (&plat_dev->dev); -platform_device_unregister (plat_dev);clk_unregister (plat_data->pclk);clk_unregister (plat_data->hclk); +platform_device_unregister (plat_dev); }static const struct pci_device_id dev_id_table[] = {
drivers/net/ethernet/freescale/enetc/enetc.c +2 -5
@@ -299,7 +299,7 @@ static void enetc_rx_dim_work(struct work_struct *w)static void enetc_rx_net_dim (struct enetc_int_vector *v) { -struct dim_sample dim_sample; +struct dim_sample dim_sample = {}; v->comp_cnt++;
@@ -1320,7 +1320,6 @@ static void enetc_clear_bdrs(struct enetc_ndev_priv *priv)static int enetc_setup_irqs (struct enetc_ndev_priv *priv) {struct pci_dev *pdev = priv->si->pdev; -cpumask_t cpu_mask;int i, j, err;for (i =0 ; i < priv->bdr_int_num; i++) {
@@ -1349,9 +1348,7 @@ static int enetc_setup_irqs(struct enetc_ndev_priv *priv)enetc_wr (hw,ENETC_SIMSITRV (idx), entry); } -cpumask_clear (&cpu_mask); -cpumask_set_cpu (i %num_online_cpus (), &cpu_mask); -irq_set_affinity_hint (irq, &cpu_mask); +irq_set_affinity_hint (irq,get_cpu_mask (i %num_online_cpus ())); }return 0 ;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +30 -15
66 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +8 -0
@@ -581,9 +581,17 @@ static void hclge_get_queue_id_in_pf(struct hclge_vport *vport,struct hclge_mbx_vf_to_pf_cmd *mbx_req, struct hclge_respond_to_vf_msg *resp_msg) { + struct hnae3_handle *handle = &vport->nic; +struct hclge_dev *hdev = vport->back;u16 queue_id, qid_in_pf;memcpy (&queue_id, mbx_req->msg.data,sizeof (queue_id)); +if (queue_id >= handle->kinfo.num_tqps) { +dev_err (&hdev->pdev->dev,"Invalid queue id(%u) from VF %u\n" , + queue_id, mbx_req->mbx_src_vfid); +return ; + } + qid_in_pf =hclge_covert_handle_qid_global (&vport->nic, queue_id);memcpy (resp_msg->data, &qid_in_pf,sizeof (qid_in_pf)); resp_msg->len =sizeof (qid_in_pf);
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +34 -18
74 lines not on this page · raw message
drivers/net/ethernet/i825xx/82596.c +1 -1
@@ -1155,7 +1155,7 @@ struct net_device * __init i82596_probe(int unit) err = -ENODEV ; goto out; } -memcpy (eth_addr, (void *)0xfffc1f2c ,ETH_ALEN );/* YUCK! Get addr from NOVRAM */ +memcpy (eth_addr,absolute_pointer (0xfffc1f2c ),ETH_ALEN );/* YUCK! Get addr from NOVRAM */ dev->base_addr =MVME_I596_BASE ; dev->irq = (unsigned ) MVME16x_IRQ_I596; goto found;
drivers/net/ethernet/mellanox/mlx4/en_netdev.c +3 -0
@@ -372,6 +372,9 @@ mlx4_en_filter_rfs(struct net_device *net_dev, const struct sk_buff *skb,int nhoff =skb_network_offset (skb);int ret =0 ; +if (skb->encapsulation) +return -EPROTONOSUPPORT ; +if (skb->protocol !=htons (ETH_P_IP ))return -EPROTONOSUPPORT ;
drivers/net/ethernet/qlogic/qed/qed_iwarp.c +8 -0
@@ -1297,6 +1297,14 @@ qed_iwarp_wait_cid_map_cleared(struct qed_hwfn *p_hwfn, struct qed_bmap *bmap) prev_weight = weight;while (weight) { +/* If the HW device is during recovery, all resources are +* immediately reset without receiving a per-cid indication +* from HW. In this case we don't expect the cid_map to be +* cleared. +*/ +if (p_hwfn->cdev->recov_in_prog) +return 0 ; +msleep (QED_IWARP_MAX_CID_CLEAN_TIME ); weight =bitmap_weight (bmap->bitmap, bmap->max_count);
drivers/net/ethernet/qlogic/qed/qed_roce.c +8 -0
@@ -77,6 +77,14 @@ void qed_roce_stop(struct qed_hwfn *p_hwfn)* Beyond the added delay we clear the bitmap anyway. */ while (bitmap_weight (rcid_map->bitmap, rcid_map->max_count)) { +/* If the HW device is during recovery, all resources are +* immediately reset without receiving a per-cid indication +* from HW. In this case we don't expect the cid bitmap to be +* cleared. +*/ +if (p_hwfn->cdev->recov_in_prog) +return ; +msleep (100 );if (wait_count++ >20 ) {DP_NOTICE (p_hwfn,"cid bitmap wait timed out\n" );
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
@@ -226,7 +226,7 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv) priv->clk_csr =STMMAC_CSR_100_150M ; else if ((clk_rate >= CSR_F_150M) && (clk_rate < CSR_F_250M)) priv->clk_csr = STMMAC_CSR_150_250M; - else if ((clk_rate >= CSR_F_250M) && (clk_rate < CSR_F_300M)) + else if ((clk_rate >= CSR_F_250M) && (clk_rate <= CSR_F_300M)) priv->clk_csr = STMMAC_CSR_250_300M; }
drivers/net/hamradio/6pack.c +2 -2
@@ -68,9 +68,9 @@#define SIXP_DAMA_OFF 0/* default level 2 parameters */ -#define SIXP_TXDELAY (HZ/4)/* in 1 s */ +#define SIXP_TXDELAY 25/* 250 ms */ #define SIXP_PERSIST 50/* in 256ths */ -#define SIXP_SLOTTIME (HZ/10)/* in 1 s */ +#define SIXP_SLOTTIME 10/* 100 ms */ #define SIXP_INIT_RESYNC_TIMEOUT (3*HZ/2)/* in 1 s */ #define SIXP_RESYNC_TIMEOUT 5*HZ/* in 1 s */
drivers/net/phy/phylink.c +29 -1
@@ -1493,6 +1493,32 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,if (config.an_enabled &&phylink_is_empty_linkmode (config.advertising))return -EINVAL ; +/* If this link is with an SFP, ensure that changes to advertised modes +* also cause the associated interface to be selected such that the +* link can be configured correctly. +*/ +if (pl->sfp_port && pl->sfp_bus) { + config.interface =sfp_select_interface (pl->sfp_bus, + config.advertising); +if (config.interface ==PHY_INTERFACE_MODE_NA ) { +phylink_err (pl, +"selection of interface failed, advertisement %*pb\n" , + __ETHTOOL_LINK_MODE_MASK_NBITS, + config.advertising); +return -EINVAL ; + } + +/* Revalidate with the selected interface */ +linkmode_copy (support, pl->supported); +if (phylink_validate (pl, support, &config)) { +phylink_err (pl,"validation of %s/%s with support %*pb failed\n" , +phylink_an_mode_str (pl->cur_link_an_mode), +phy_modes (config.interface), + __ETHTOOL_LINK_MODE_MASK_NBITS, support); +return -EINVAL ; + } + } +mutex_lock (&pl->state_mutex); pl->link_config.speed = config.speed; pl->link_config.duplex = config.duplex;
@@ -2072,7 +2098,9 @@ static int phylink_sfp_config(struct phylink *pl, u8 mode,if (phy_interface_mode_is_8023z (iface) && pl->phydev)return -EINVAL ; - changed = !linkmode_equal (pl->supported, support); + changed = !linkmode_equal (pl->supported, support) || + !linkmode_equal (pl->link_config.advertising, + config.advertising);if (changed) {linkmode_copy (pl->supported, support);linkmode_copy (pl->link_config.advertising, config.advertising);
drivers/net/usb/hso.c +5 -7
@@ -2721,14 +2721,14 @@ struct hso_device *hso_create_mux_serial_device(struct usb_interface *interface, serial =kzalloc (sizeof (*serial),GFP_KERNEL );if (!serial) - goto exit; + goto err_free_dev; hso_dev->port_data.dev_serial = serial; serial->parent = hso_dev;if (hso_serial_common_create (serial,1 ,CTRL_URB_RX_SIZE ,CTRL_URB_TX_SIZE )) - goto exit; + goto err_free_serial; serial->tx_data_length--; serial->write_data = hso_mux_serial_write_data;
@@ -2744,11 +2744,9 @@ struct hso_device *hso_create_mux_serial_device(struct usb_interface *interface,/* done, return it */ return hso_dev; -exit: -if (serial) { -tty_unregister_device (tty_drv, serial->minor); -kfree (serial); - } +err_free_serial: +kfree (serial); +err_free_dev:kfree (hso_dev);return NULL ;
drivers/nvme/host/core.c +17 -15
@@ -13,7 +13,6 @@#include <linux/kernel.h> #include <linux/module.h> #include <linux/backing-dev.h> -#include <linux/list_sort.h> #include <linux/slab.h> #include <linux/types.h> #include <linux/pr.h>
@@ -3801,14 +3800,6 @@ static int nvme_init_ns_head(struct nvme_ns *ns, unsigned nsid,return ret; } -static int ns_cmp (void *priv,struct list_head *a,struct list_head *b) -{ - struct nvme_ns *nsa = container_of(a, struct nvme_ns, list); - struct nvme_ns *nsb = container_of(b, struct nvme_ns, list); - -return nsa->head->ns_id - nsb->head->ns_id; -} -struct nvme_ns *nvme_find_get_ns (struct nvme_ctrl *ctrl,unsigned nsid) {struct nvme_ns *ns, *ret =NULL ;
@@ -3829,6 +3820,22 @@ struct nvme_ns *nvme_find_get_ns(struct nvme_ctrl *ctrl, unsigned nsid) }EXPORT_SYMBOL_NS_GPL (nvme_find_get_ns,NVME_TARGET_PASSTHRU ); +/* +* Add the namespace to the controller list while keeping the list ordered. +*/ +static void nvme_ns_add_to_ctrl_list (struct nvme_ns *ns) +{ +struct nvme_ns *tmp; + +list_for_each_entry_reverse (tmp, &ns->ctrl->namespaces, list) { +if (tmp->head->ns_id < ns->head->ns_id) { +list_add (&ns->list, &tmp->list); +return ; + } + } +list_add (&ns->list, &ns->ctrl->namespaces); +} +static void nvme_alloc_ns (struct nvme_ctrl *ctrl,unsigned nsid,struct nvme_ns_ids *ids) {
@@ -3888,9 +3895,8 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid, }down_write (&ctrl->namespaces_rwsem); -list_add_tail (&ns->list, &ctrl->namespaces); +nvme_ns_add_to_ctrl_list (ns);up_write (&ctrl->namespaces_rwsem); -nvme_get_ctrl (ctrl);device_add_disk (ctrl->device, ns->disk, nvme_ns_id_attr_groups);
@@ -4159,10 +4165,6 @@ static void nvme_scan_work(struct work_struct *work)if (nvme_scan_ns_list (ctrl) !=0 )nvme_scan_ns_sequential (ctrl);mutex_unlock (&ctrl->scan_lock); - -down_write (&ctrl->namespaces_rwsem); -list_sort (NULL , &ctrl->namespaces, ns_cmp); -up_write (&ctrl->namespaces_rwsem); }/*
drivers/nvme/host/multipath.c +5 -2
@@ -509,14 +509,17 @@ static int nvme_update_ana_state(struct nvme_ctrl *ctrl,down_read (&ctrl->namespaces_rwsem);list_for_each_entry (ns, &ctrl->namespaces, list) { -unsigned nsid =le32_to_cpu (desc->nsids[n]); - +unsigned nsid; +again: + nsid =le32_to_cpu (desc->nsids[n]);if (ns->head->ns_id < nsid)continue ;if (ns->head->ns_id == nsid)nvme_update_ns_ana_state (desc, ns);if (++n == nr_nsids)break ; +if (ns->head->ns_id > nsid) + goto again; }up_read (&ctrl->namespaces_rwsem);return 0 ;
drivers/nvme/host/rdma.c +3 -13
@@ -655,8 +655,8 @@ static void nvme_rdma_free_queue(struct nvme_rdma_queue *queue)if (!test_and_clear_bit (NVME_RDMA_Q_ALLOCATED , &queue->flags))return ; -nvme_rdma_destroy_queue_ib (queue);rdma_destroy_id (queue->cm_id); +nvme_rdma_destroy_queue_ib (queue);mutex_destroy (&queue->queue_lock); }
@@ -1823,14 +1823,10 @@ static int nvme_rdma_conn_established(struct nvme_rdma_queue *queue)for (i =0 ; i < queue->queue_size; i++) { ret =nvme_rdma_post_recv (queue, &queue->rsp_ring[i]);if (ret) - goto out_destroy_queue_ib; +return ret; }return 0 ; - -out_destroy_queue_ib: -nvme_rdma_destroy_queue_ib (queue); -return ret; } static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue,
@@ -1924,14 +1920,10 @@ static int nvme_rdma_route_resolved(struct nvme_rdma_queue *queue)if (ret) {dev_err (ctrl->ctrl.device,"rdma_connect_locked failed (%d).\n" , ret); - goto out_destroy_queue_ib; +return ret; }return 0 ; - -out_destroy_queue_ib: -nvme_rdma_destroy_queue_ib (queue); -return ret; } static int nvme_rdma_cm_handler(struct rdma_cm_id *cm_id,
@@ -1962,8 +1954,6 @@ static int nvme_rdma_cm_handler(struct rdma_cm_id *cm_id,case RDMA_CM_EVENT_ROUTE_ERROR :case RDMA_CM_EVENT_CONNECT_ERROR :case RDMA_CM_EVENT_UNREACHABLE : -nvme_rdma_destroy_queue_ib (queue); - fallthrough;case RDMA_CM_EVENT_ADDR_ERROR :dev_dbg (queue->ctrl->ctrl.device,"CM error event %d\n" , ev->event);
drivers/nvme/host/tcp.c +10 -3
@@ -611,7 +611,7 @@ static int nvme_tcp_setup_h2c_data_pdu(struct nvme_tcp_request *req,cpu_to_le32 (data->hdr.hlen + hdgst + req->pdu_len + ddgst); data->ttag = pdu->ttag; data->command_id =nvme_cid (rq); - data->data_offset =cpu_to_le32 (req->data_sent); + data->data_offset = pdu->r2t_offset; data->data_length =cpu_to_le32 (req->pdu_len);return 0 ; }
@@ -937,7 +937,15 @@ static int nvme_tcp_try_send_data(struct nvme_tcp_request *req)nvme_tcp_ddgst_update (queue->snd_hash, page, offset, ret); -/* fully successful last write*/ +/* +* update the request iterator except for the last payload send +* in the request where we don't want to modify it as we may +* compete with the RX path completing the request. +*/ +if (req->data_sent + ret < req->data_len) +nvme_tcp_advance_req (req, ret); + +/* fully successful last send in current PDU */ if (last && ret == len) {if (queue->data_digest) { nvme_tcp_ddgst_final(queue->snd_hash,
@@ -949,7 +957,6 @@ static int nvme_tcp_try_send_data(struct nvme_tcp_request *req) }return 1 ; } -nvme_tcp_advance_req (req, ret); }return -EAGAIN ; }
drivers/pci/controller/cadence/pcie-cadence-host.c +2 -1
@@ -345,7 +345,8 @@ static int cdns_pcie_host_bar_config(struct cdns_pcie_rc *rc,return 0 ; } -static int cdns_pcie_host_dma_ranges_cmp (void *priv,struct list_head *a,struct list_head *b) +static int cdns_pcie_host_dma_ranges_cmp (void *priv,const struct list_head *a, +const struct list_head *b) {struct resource_entry *entry1, *entry2;
drivers/pci/controller/pci-aardvark.c +1 -1
@@ -214,7 +214,7 @@ (PCIE_CONF_BUS (bus) |PCIE_CONF_DEV (PCI_SLOT (devfn)) | \ PCIE_CONF_FUNC(PCI_FUNC(devfn)) | PCIE_CONF_REG(where)) -#define PIO_RETRY_CNT 500 +#define PIO_RETRY_CNT 750000/* 1.5 s */ #define PIO_RETRY_DELAY 2/* 2 us*/ #define LINK_WAIT_MAX_RETRIES 10
drivers/platform/x86/intel_punit_ipc.c +1 -2
@@ -8,7 +8,6 @@* which provide mailbox interface for power management usage. */ -#include <linux/acpi.h> #include <linux/bitops.h> #include <linux/delay.h> #include <linux/device.h>
@@ -319,7 +318,7 @@ static struct platform_driver intel_punit_ipc_driver = { .remove = intel_punit_ipc_remove, .driver = { .name = "intel_punit_ipc", - .acpi_match_table = ACPI_PTR(punit_ipc_acpi_ids), + .acpi_match_table = punit_ipc_acpi_ids, }, };
drivers/s390/net/qeth_core_main.c +3 -0
@@ -210,6 +210,9 @@ static void qeth_clear_working_pool_list(struct qeth_card *card) &card->qdio.in_buf_pool.entry_list, list)list_del (&pool_entry->list); +if (!queue) +return ; +for (i =0 ; i <ARRAY_SIZE (queue->bufs); i++) queue->bufs[i].pool_entry =NULL ; }
drivers/scsi/lpfc/lpfc_attr.c +2 -1
@@ -6005,7 +6005,8 @@ lpfc_sg_seg_cnt_show(struct device *dev, struct device_attribute *attr, len =scnprintf (buf,PAGE_SIZE ,"SGL sz: %d total SGEs: %d\n" , phba->cfg_sg_dma_buf_size, phba->cfg_total_seg_cnt); - len +=scnprintf (buf + len,PAGE_SIZE ,"Cfg: %d SCSI: %d NVME: %d\n" , + len +=scnprintf (buf + len,PAGE_SIZE - len, +"Cfg: %d SCSI: %d NVME: %d\n" , phba->cfg_sg_seg_cnt, phba->cfg_scsi_seg_cnt, phba->cfg_nvme_seg_cnt);return len;
drivers/scsi/qla2xxx/qla_init.c +2 -1
@@ -6934,7 +6934,8 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)return 0 ;break ;case QLA2XXX_INI_MODE_DUAL : -if (!qla_dual_mode_enabled (vha)) +if (!qla_dual_mode_enabled (vha) && + !qla_ini_mode_enabled (vha))return 0 ;break ;case QLA2XXX_INI_MODE_ENABLED :
drivers/scsi/scsi_transport_iscsi.c +4 -4
@@ -442,9 +442,7 @@ static umode_t iscsi_iface_attr_is_visible(struct kobject *kobj,struct iscsi_transport *t = iface->transport;int param =-1 ; -if (attr == &dev_attr_iface_enabled.attr) - param =ISCSI_NET_PARAM_IFACE_ENABLE ; -else if (attr == &dev_attr_iface_def_taskmgmt_tmo.attr) +if (attr == &dev_attr_iface_def_taskmgmt_tmo.attr) param =ISCSI_IFACE_PARAM_DEF_TASKMGMT_TMO ;else if (attr == &dev_attr_iface_header_digest.attr) param =ISCSI_IFACE_PARAM_HDRDGST_EN ;
@@ -484,7 +482,9 @@ static umode_t iscsi_iface_attr_is_visible(struct kobject *kobj,if (param !=-1 )return t->attr_is_visible (ISCSI_IFACE_PARAM , param); -if (attr == &dev_attr_iface_vlan_id.attr) +if (attr == &dev_attr_iface_enabled.attr) + param =ISCSI_NET_PARAM_IFACE_ENABLE ; +else if (attr == &dev_attr_iface_vlan_id.attr) param =ISCSI_NET_PARAM_VLAN_ID ;else if (attr == &dev_attr_iface_vlan_priority.attr) param =ISCSI_NET_PARAM_VLAN_PRIORITY ;
drivers/scsi/sd_zbc.c +3 -3
@@ -155,8 +155,8 @@ static void *sd_zbc_alloc_report_buffer(struct scsi_disk *sdkp,/* * Report zone buffer size should be at most 64B times the number of -* zones requested plus the 64B reply header, but should be at least -* SECTOR_SIZE for ATA devices. +* zones requested plus the 64B reply header, but should be aligned +* to SECTOR_SIZE for ATA devices. * Make sure that this size does not exceed the hardware capabilities. * Furthermore, since the report zone command cannot be split, make * sure that the allocated buffer can always be mapped by limiting the
@@ -175,7 +175,7 @@ static void *sd_zbc_alloc_report_buffer(struct scsi_disk *sdkp, *buflen = bufsize;return buf; } - bufsize >>=1 ; + bufsize =rounddown (bufsize >>1 ,SECTOR_SIZE ); }return NULL ;
drivers/spi/spi-loopback-test.c +2 -1
@@ -454,7 +454,8 @@ struct rx_ranges {u8 *end; }; -static int rx_ranges_cmp (void *priv,struct list_head *a,struct list_head *b) +static int rx_ranges_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct rx_ranges *rx_a = list_entry(a, struct rx_ranges, list); struct rx_ranges *rx_b = list_entry(b, struct rx_ranges, list);
drivers/spi/spi-tegra20-slink.c +2 -2
@@ -1201,7 +1201,7 @@ static int tegra_slink_resume(struct device *dev) }#endif -static int tegra_slink_runtime_suspend (struct device *dev) +static int __maybe_unused tegra_slink_runtime_suspend (struct device *dev) {struct spi_master *master =dev_get_drvdata (dev);struct tegra_slink_data *tspi =spi_master_get_devdata (master);
@@ -1213,7 +1213,7 @@ static int tegra_slink_runtime_suspend(struct device *dev)return 0 ; } -static int tegra_slink_runtime_resume (struct device *dev) +static int __maybe_unused tegra_slink_runtime_resume (struct device *dev) {struct spi_master *master =dev_get_drvdata (dev);struct tegra_slink_data *tspi =spi_master_get_devdata (master);
drivers/staging/comedi/comedi_fops.c +1 -0
@@ -3090,6 +3090,7 @@ static int compat_insnlist(struct file *file, unsigned long arg)mutex_lock (&dev->mutex); rc =do_insnlist_ioctl (dev, insns, insnlist32.n_insns, file);mutex_unlock (&dev->mutex); +kfree (insns);return rc; }
drivers/staging/greybus/uart.c +32 -30
135 lines not on this page · raw message
drivers/target/target_core_configfs.c +20 -12
@@ -1110,20 +1110,24 @@ static ssize_t alua_support_store(struct config_item *item, {struct se_dev_attrib *da =to_attrib (item);struct se_device *dev = da->da_dev; -bool flag; +bool flag, oldflag;int ret; + ret =strtobool (page, &flag); +if (ret <0 ) +return ret; + + oldflag = !(dev->transport_flags &TRANSPORT_FLAG_PASSTHROUGH_ALUA ); +if (flag == oldflag) +return count; +if (!(dev->transport->transport_flags_changeable &TRANSPORT_FLAG_PASSTHROUGH_ALUA )) {pr_err ("dev[%p]: Unable to change SE Device alua_support:" " alua_support has fixed value\n" , dev); -return -EINVAL ; +return -ENOSYS ; } - ret =strtobool (page, &flag); -if (ret <0 ) -return ret; -if (flag) dev->transport_flags &= ~TRANSPORT_FLAG_PASSTHROUGH_ALUA ;else
@@ -1145,20 +1149,24 @@ static ssize_t pgr_support_store(struct config_item *item, {struct se_dev_attrib *da =to_attrib (item);struct se_device *dev = da->da_dev; -bool flag; +bool flag, oldflag;int ret; + ret =strtobool (page, &flag); +if (ret <0 ) +return ret; + + oldflag = !(dev->transport_flags &TRANSPORT_FLAG_PASSTHROUGH_PGR ); +if (flag == oldflag) +return count; +if (!(dev->transport->transport_flags_changeable &TRANSPORT_FLAG_PASSTHROUGH_PGR )) {pr_err ("dev[%p]: Unable to change SE Device pgr_support:" " pgr_support has fixed value\n" , dev); -return -EINVAL ; +return -ENOSYS ; } - ret =strtobool (page, &flag); -if (ret <0 ) -return ret; -if (flag) dev->transport_flags &= ~TRANSPORT_FLAG_PASSTHROUGH_PGR ;else
drivers/thermal/intel/int340x_thermal/processor_thermal_device.c +3 -2
@@ -185,7 +185,7 @@ static int tcc_offset_update(unsigned int tcc)return 0 ; } -static unsigned int tcc_offset_save; +static int tcc_offset_save =-1 ; static ssize_t tcc_offset_degree_celsius_store(struct device *dev, struct device_attribute *attr, const char *buf,
@@ -709,7 +709,8 @@ static int proc_thermal_resume(struct device *dev) proc_dev =dev_get_drvdata (dev);proc_thermal_read_ppcc (proc_dev); -tcc_offset_update (tcc_offset_save); +if (tcc_offset_save >=0 ) +tcc_offset_update (tcc_offset_save);return 0 ; }
drivers/thermal/thermal_core.c +3 -4
@@ -224,15 +224,14 @@ int thermal_build_list_of_policies(char *buf) {struct thermal_governor *pos;ssize_t count =0 ; -ssize_t size =PAGE_SIZE ;mutex_lock (&thermal_governor_lock);list_for_each_entry (pos, &thermal_governor_list, governor_list) { - size =PAGE_SIZE - count; - count +=scnprintf (buf + count, size,"%s " , pos->name); + count +=scnprintf (buf + count,PAGE_SIZE - count,"%s " , + pos->name); } - count +=scnprintf (buf + count, size,"\n" ); + count +=scnprintf (buf + count,PAGE_SIZE - count,"\n" );mutex_unlock (&thermal_governor_lock);
drivers/tty/serial/8250/8250_omap.c +1 -1
@@ -106,7 +106,7 @@#define UART_OMAP_EFR2_TIMEOUT_BEHAVE BIT(6)/* RX FIFO occupancy indicator */ -#define UART_OMAP_RX_LVL 0x64 +#define UART_OMAP_RX_LVL 0x19struct omap8250_priv {int line;
drivers/tty/serial/mvebu-uart.c +1 -1
@@ -164,7 +164,7 @@ static unsigned int mvebu_uart_tx_empty(struct uart_port *port) st =readl (port->membase +UART_STAT );spin_unlock_irqrestore (&port->lock, flags); -return (st &STAT_TX_FIFO_EMP ) ?TIOCSER_TEMT :0 ; +return (st &STAT_TX_EMP ) ?TIOCSER_TEMT :0 ; }static unsigned int mvebu_uart_get_mctrl (struct uart_port *port)
drivers/tty/synclink_gt.c +23 -78
277 lines not on this page · raw message
drivers/usb/class/cdc-acm.c +5 -2
@@ -726,7 +726,8 @@ static void acm_port_destruct(struct tty_port *port) { struct acm *acm = container_of(port, struct acm, port); -acm_release_minor (acm); +if (acm->minor !=ACM_MINOR_INVALID ) +acm_release_minor (acm);usb_put_intf (acm->control);kfree (acm->country_codes);kfree (acm);
@@ -1343,8 +1344,10 @@ static int acm_probe(struct usb_interface *intf,usb_get_intf (acm->control);/* undone in destruct() */ minor =acm_alloc_minor (acm); -if (minor <0 ) +if (minor <0 ) { + acm->minor =ACM_MINOR_INVALID ; goto alloc_fail1; + } acm->minor = minor; acm->dev = usb_dev;
drivers/usb/class/cdc-acm.h +2 -0
@@ -22,6 +22,8 @@#define ACM_TTY_MAJOR 166#define ACM_TTY_MINORS 256 +#define ACM_MINOR_INVALID ACM_TTY_MINORS +/* * Requests. */
drivers/usb/core/hcd.c +23 -6
@@ -2640,6 +2640,7 @@ int usb_add_hcd(struct usb_hcd *hcd, {int retval;struct usb_device *rhdev; +struct usb_hcd *shared_hcd;if (!hcd->skip_phy_initialization &&usb_hcd_is_primary_hcd (hcd)) { hcd->phy_roothub =usb_phy_roothub_alloc (hcd->self.sysdev);
@@ -2796,13 +2797,26 @@ int usb_add_hcd(struct usb_hcd *hcd, goto err_hcd_driver_start; } +/* starting here, usbcore will pay attention to the shared HCD roothub */ + shared_hcd = hcd->shared_hcd; +if (!usb_hcd_is_primary_hcd (hcd) && shared_hcd &&HCD_DEFER_RH_REGISTER (shared_hcd)) { + retval =register_root_hub (shared_hcd); +if (retval !=0 ) + goto err_register_root_hub; + +if (shared_hcd->uses_new_polling &&HCD_POLL_RH (shared_hcd)) +usb_hcd_poll_rh_status (shared_hcd); + } +/* starting here, usbcore will pay attention to this root hub */ - retval =register_root_hub (hcd); -if (retval !=0 ) - goto err_register_root_hub; +if (!HCD_DEFER_RH_REGISTER (hcd)) { + retval =register_root_hub (hcd); +if (retval !=0 ) + goto err_register_root_hub; -if (hcd->uses_new_polling &&HCD_POLL_RH (hcd)) -usb_hcd_poll_rh_status (hcd); +if (hcd->uses_new_polling &&HCD_POLL_RH (hcd)) +usb_hcd_poll_rh_status (hcd); + }return retval;
@@ -2845,6 +2859,7 @@ EXPORT_SYMBOL_GPL(usb_add_hcd);void usb_remove_hcd (struct usb_hcd *hcd) {struct usb_device *rhdev = hcd->self.root_hub; +bool rh_registered;dev_info (hcd->self.controller,"remove, state %x\n" , hcd->state);
@@ -2855,6 +2870,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)dev_dbg (hcd->self.controller,"roothub graceful disconnect\n" );spin_lock_irq (&hcd_root_hub_lock); + rh_registered = hcd->rh_registered; hcd->rh_registered =0 ;spin_unlock_irq (&hcd_root_hub_lock);
@@ -2864,7 +2880,8 @@ void usb_remove_hcd(struct usb_hcd *hcd)cancel_work_sync (&hcd->died_work);mutex_lock (&usb_bus_idr_lock); -usb_disconnect (&rhdev);/* Sets rhdev to NULL */ +if (rh_registered) +usb_disconnect (&rhdev);/* Sets rhdev to NULL */ mutex_unlock (&usb_bus_idr_lock);/*
drivers/usb/dwc2/gadget.c +107 -86
348 lines not on this page · raw message
drivers/usb/dwc3/core.c +13 -17
@@ -264,19 +264,6 @@ static int dwc3_core_soft_reset(struct dwc3 *dwc) {u32 reg;int retries =1000 ; -int ret; - -usb_phy_init (dwc->usb2_phy); -usb_phy_init (dwc->usb3_phy); - ret =phy_init (dwc->usb2_generic_phy); -if (ret <0 ) -return ret; - - ret =phy_init (dwc->usb3_generic_phy); -if (ret <0 ) { -phy_exit (dwc->usb2_generic_phy); -return ret; - }/* * We're resetting only the device side because, if we're in host mode,
@@ -310,9 +297,6 @@ static int dwc3_core_soft_reset(struct dwc3 *dwc)udelay (1 ); }while (--retries); -phy_exit (dwc->usb3_generic_phy); -phy_exit (dwc->usb2_generic_phy); -return -ETIMEDOUT ; done:
@@ -979,9 +963,21 @@ static int dwc3_core_init(struct dwc3 *dwc) dwc->phys_ready = true; } +usb_phy_init (dwc->usb2_phy); +usb_phy_init (dwc->usb3_phy); + ret =phy_init (dwc->usb2_generic_phy); +if (ret <0 ) + goto err0a; + + ret =phy_init (dwc->usb3_generic_phy); +if (ret <0 ) { +phy_exit (dwc->usb2_generic_phy); + goto err0a; + } + ret =dwc3_core_soft_reset (dwc);if (ret) - goto err0a; + goto err1;if (hw_mode ==DWC3_GHWPARAMS0_MODE_DRD && !DWC3_VER_IS_WITHIN(DWC3, ANY, 194A)) {
drivers/usb/gadget/udc/r8a66597-udc.c +1 -1
@@ -1250,7 +1250,7 @@ static void set_feature(struct r8a66597 *r8a66597, struct usb_ctrlrequest *ctrl)do { tmp =r8a66597_read (r8a66597,INTSTS0 ) &CTSQ ;udelay (1 ); - }while (tmp !=CS_IDST || timeout-- >0 ); + }while (tmp !=CS_IDST && timeout-- >0 );if (tmp ==CS_IDST ) r8a66597_bset(r8a66597,
drivers/usb/host/bcma-hcd.c +1 -4
@@ -406,12 +406,9 @@ static int bcma_hcd_probe(struct bcma_device *core)return -ENOMEM ; usb_dev->core = core; -if (core->dev.of_node) { +if (core->dev.of_node) usb_dev->gpio_desc =devm_gpiod_get (&core->dev,"vcc" ,GPIOD_OUT_HIGH ); -if (IS_ERR (usb_dev->gpio_desc)) -return PTR_ERR (usb_dev->gpio_desc); - }switch (core->id.id) {case BCMA_CORE_USB20_HOST :
drivers/usb/host/xhci.c +1 -0
@@ -693,6 +693,7 @@ int xhci_run(struct usb_hcd *hcd)if (ret)xhci_free_command (xhci, command); } +set_bit (HCD_FLAG_DEFER_RH_REGISTER , &hcd->flags);xhci_dbg_trace (xhci, trace_xhci_dbg_init,"Finished xhci_run for USB2 roothub" );
drivers/usb/musb/tusb6010.c +1 -0
@@ -190,6 +190,7 @@ tusb_fifo_write_unaligned(void __iomem *fifo, const u8 *buf, u16 len) }if (len >0 ) {/* Write the rest 1 - 3 bytes to FIFO */ + val =0 ;memcpy (&val, buf, len);musb_writel (fifo,0 , val); }
drivers/usb/serial/cp210x.c +47 -0
83 lines not on this page · raw message
drivers/usb/serial/mos7840.c +0 -2
@@ -107,7 +107,6 @@#define BANDB_DEVICE_ID_USOPTL4_2P 0xBC02#define BANDB_DEVICE_ID_USOPTL4_4 0xAC44#define BANDB_DEVICE_ID_USOPTL4_4P 0xBC03 -#define BANDB_DEVICE_ID_USOPTL2_4 0xAC24/* Interrupt Routine Defines */
@@ -186,7 +185,6 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2P) }, { USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4) }, { USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4P) }, - { USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4) }, {} /* terminating entry */ };MODULE_DEVICE_TABLE (usb, id_table);
drivers/usb/serial/option.c +10 -1
@@ -1205,6 +1205,14 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(0) | RSVD(1) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1056, 0xff), /* Telit FD980 */ .driver_info = NCTRL(2) | RSVD(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1060, 0xff), /* Telit LN920 (rmnet) */ + .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1061, 0xff), /* Telit LN920 (MBIM) */ + .driver_info = NCTRL(0) | RSVD(1) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1062, 0xff), /* Telit LN920 (RNDIS) */ + .driver_info = NCTRL(2) | RSVD(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1063, 0xff), /* Telit LN920 (ECM) */ + .driver_info = NCTRL(0) | RSVD(1) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
@@ -1650,7 +1658,6 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0060, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff), .driver_info = RSVD(1) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff),
@@ -2068,6 +2075,8 @@ static const struct usb_device_id option_ids[] = { .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */ .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, + { USB_DEVICE_INTERFACE_CLASS(0x0489, 0xe0db, 0xff), /* Foxconn T99W265 MBIM */ + .driver_info = RSVD(3) }, { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */ .driver_info = RSVD(4) | RSVD(5) | RSVD(6) }, { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */
drivers/usb/storage/unusual_devs.h +8 -1
@@ -416,9 +416,16 @@ UNUSUAL_DEV( 0x04cb, 0x0100, 0x0000, 0x2210, USB_SC_UFI, USB_PR_DEVICE, NULL, US_FL_FIX_INQUIRY | US_FL_SINGLE_LUN),/* -* Reported by Ondrej Zary <[email protected]> +* Reported by Ondrej Zary <[email protected]> * The device reports one sector more and breaks when that sector is accessed +* Firmwares older than 2.6c (the latest one and the only that claims Linux +* support) have also broken tag handling */ +UNUSUAL_DEV (0x04ce ,0x0002 ,0x0000 ,0x026b , +"ScanLogic" , +"SL11R-IDE" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_FIX_CAPACITY |US_FL_BULK_IGNORE_TAG ), UNUSUAL_DEV( 0x04ce, 0x0002, 0x026c, 0x026c, "ScanLogic", "SL11R-IDE",
drivers/usb/storage/unusual_uas.h +1 -1
@@ -50,7 +50,7 @@ UNUSUAL_DEV(0x059f, 0x1061, 0x0000, 0x9999,"LaCie" ,"Rugged USB3-FW" ,USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , - US_FL_IGNORE_UAS), + US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME),/* * Apricorn USB3 dongle sometimes returns "USBSUSBSUSBS" in response to SCSI
drivers/xen/balloon.c +45 -17
137 lines not on this page · raw message
fs/afs/dir.c +7 -39
102 lines not on this page · raw message
fs/afs/dir_edit.c +2 -2
@@ -264,7 +264,7 @@ void afs_edit_dir_add(struct afs_vnode *vnode,if (b == nr_blocks) {_debug ("init %u" , b);afs_edit_init_block (meta, block, b); -i_size_write (&vnode->vfs_inode, (b +1 ) *AFS_DIR_BLOCK_SIZE ); +afs_set_i_size (vnode, (b +1 ) *AFS_DIR_BLOCK_SIZE ); }/* Only lower dir pages have a counter in the header. */
@@ -297,7 +297,7 @@ void afs_edit_dir_add(struct afs_vnode *vnode, new_directory:afs_edit_init_block (meta, meta,0 ); i_size =AFS_DIR_BLOCK_SIZE ; -i_size_write (&vnode->vfs_inode, i_size); +afs_set_i_size (vnode, i_size); slot =AFS_DIR_RESV_BLOCKS0 ; page = page0; block = meta;
fs/afs/inode.c +0 -10
@@ -53,16 +53,6 @@ static noinline void dump_vnode(struct afs_vnode *vnode, struct afs_vnode *parendump_stack (); } -/* -* Set the file size and block count. Estimate the number of 512 bytes blocks -* used, rounded up to nearest 1K for consistency with other AFS clients. -*/ -static void afs_set_i_size (struct afs_vnode *vnode,u64 size) -{ -i_size_write (&vnode->vfs_inode, size); - vnode->vfs_inode.i_blocks = ((size +1023 ) >>10 ) <<1 ; -} -/* * Initialise an inode from the vnode status. */
fs/afs/internal.h +10 -0
@@ -1573,6 +1573,16 @@ static inline void afs_update_dentry_version(struct afs_operation *op, (void *)(unsigned long )dir_vp->scb.status.data_version; } +/* +* Set the file size and block count. Estimate the number of 512 bytes blocks +* used, rounded up to nearest 1K for consistency with other AFS clients. +*/ +static inline void afs_set_i_size (struct afs_vnode *vnode,u64 size) +{ +i_size_write (&vnode->vfs_inode, size); + vnode->vfs_inode.i_blocks = ((size +1023 ) >>10 ) <<1 ; +} +/* * Check for a conflicting operation on a directory that we just unlinked from. * If someone managed to sneak a link or an unlink in on the file we just
fs/afs/write.c +1 -1
@@ -184,7 +184,7 @@ int afs_write_end(struct file *file, struct address_space *mapping,write_seqlock (&vnode->cb_lock); i_size =i_size_read (&vnode->vfs_inode);if (maybe_i_size > i_size) -i_size_write (&vnode->vfs_inode, maybe_i_size); +afs_set_i_size (vnode, maybe_i_size);write_sequnlock (&vnode->cb_lock); }
fs/btrfs/raid56.c +2 -1
@@ -1646,7 +1646,8 @@ struct btrfs_plug_cb {/* * rbios on the plug list are sorted for easier merging. */ -static int plug_cmp (void *priv,struct list_head *a,struct list_head *b) +static int plug_cmp (void *priv,const struct list_head *a, +const struct list_head *b) { struct btrfs_raid_bio *ra = container_of(a, struct btrfs_raid_bio, plug_list);
fs/btrfs/space-info.c +3 -2
@@ -417,9 +417,10 @@ static void __btrfs_dump_space_info(struct btrfs_fs_info *fs_info, {lockdep_assert_held (&info->lock); -btrfs_info (fs_info,"space_info %llu has %llu free, is %sfull" , +/* The free space could be negative in case of overcommit */ +btrfs_info (fs_info,"space_info %llu has %lld free, is %sfull" , info->flags, - info->total_bytes -btrfs_space_info_used (info, true), + (s64)(info->total_bytes -btrfs_space_info_used (info, true)), info->full ?"" :"not " ); btrfs_info(fs_info, "space_info total=%llu, used=%llu, pinned=%llu, reserved=%llu, may_use=%llu, readonly=%llu",
fs/btrfs/tree-log.c +2 -1
@@ -4070,7 +4070,8 @@ static noinline int copy_items(struct btrfs_trans_handle *trans,return ret; } -static int extent_cmp (void *priv,struct list_head *a,struct list_head *b) +static int extent_cmp (void *priv,const struct list_head *a, +const struct list_head *b) {struct extent_map *em1, *em2;
fs/btrfs/volumes.c +2 -1
@@ -1226,7 +1226,8 @@ static int open_fs_devices(struct btrfs_fs_devices *fs_devices,return 0 ; } -static int devid_cmp (void *priv,struct list_head *a,struct list_head *b) +static int devid_cmp (void *priv,const struct list_head *a, +const struct list_head *b) {struct btrfs_device *dev1, *dev2;
fs/cifs/connect.c +3 -2
@@ -3504,9 +3504,10 @@ cifs_match_super(struct super_block *sb, void *data)spin_lock (&cifs_tcp_ses_lock); cifs_sb =CIFS_SB (sb); tlink =cifs_get_tlink (cifs_sb_master_tlink (cifs_sb)); -if (IS_ERR (tlink)) { +if (tlink ==NULL ) { +/* can not match superblock if tlink were ever null */ spin_unlock (&cifs_tcp_ses_lock); -return rc; +return 0 ; } tcon =tlink_tcon (tlink); ses = tcon->ses;
fs/cifs/file.c +1 -1
@@ -3039,7 +3039,7 @@ static void collect_uncached_write_data(struct cifs_aio_ctx *ctx)struct cifs_tcon *tcon;struct cifs_sb_info *cifs_sb;struct dentry *dentry = ctx->cfile->dentry; -int rc; +ssize_t rc; tcon =tlink_tcon (ctx->cfile->tlink); cifs_sb =CIFS_SB (dentry->d_sb);
fs/ext4/fsmap.c +2 -2
@@ -354,8 +354,8 @@ static unsigned int ext4_getfsmap_find_sb(struct super_block *sb,/* Compare two fsmap items. */ static int ext4_getfsmap_compare (void *priv, -struct list_head *a, -struct list_head *b) +const struct list_head *a, +const struct list_head *b) {struct ext4_fsmap *fa;struct ext4_fsmap *fb;
fs/gfs2/glock.c +2 -1
@@ -1744,7 +1744,8 @@ void gfs2_glock_complete(struct gfs2_glock *gl, int ret)spin_unlock (&gl->gl_lockref.lock); } -static int glock_cmp (void *priv,struct list_head *a,struct list_head *b) +static int glock_cmp (void *priv,const struct list_head *a, +const struct list_head *b) {struct gfs2_glock *gla, *glb;
fs/gfs2/log.c +1 -1
@@ -605,7 +605,7 @@ void log_flush_wait(struct gfs2_sbd *sdp) } } -static int ip_cmp (void *priv,struct list_head *a,struct list_head *b) +static int ip_cmp (void *priv,const struct list_head *a,const struct list_head *b) {struct gfs2_inode *ipa, *ipb;
fs/gfs2/lops.c +2 -1
@@ -627,7 +627,8 @@ static void gfs2_check_magic(struct buffer_head *bh)kunmap_atomic (kaddr); } -static int blocknr_cmp (void *priv,struct list_head *a,struct list_head *b) +static int blocknr_cmp (void *priv,const struct list_head *a, +const struct list_head *b) {struct gfs2_bufdata *bda, *bdb;
fs/io_uring.c +1 -1
@@ -4041,7 +4041,7 @@ static int io_add_buffers(struct io_provide_buf *pbuf, struct io_buffer **head)int i, bid = pbuf->bid;for (i =0 ; i < pbuf->nbufs; i++) { - buf =kmalloc (sizeof (*buf),GFP_KERNEL ); + buf =kmalloc (sizeof (*buf),GFP_KERNEL_ACCOUNT );if (!buf)break ;
fs/iomap/buffered-io.c +2 -1
@@ -1155,7 +1155,8 @@ iomap_ioend_try_merge(struct iomap_ioend *ioend, struct list_head *more_ioends,EXPORT_SYMBOL_GPL (iomap_ioend_try_merge);static int -iomap_ioend_compare (void *priv,struct list_head *a,struct list_head *b) +iomap_ioend_compare (void *priv,const struct list_head *a, +const struct list_head *b) { struct iomap_ioend *ia = container_of(a, struct iomap_ioend, io_list); struct iomap_ioend *ib = container_of(b, struct iomap_ioend, io_list);
fs/ocfs2/dlmglue.c +2 -1
@@ -3933,7 +3933,7 @@ static int ocfs2_data_convert_worker(struct ocfs2_lock_res *lockres, oi =OCFS2_I (inode); oi->ip_dir_lock_gen++;mlog (0 ,"generation: %u\n" , oi->ip_dir_lock_gen); - goto out; + goto out_forget; }if (!S_ISREG (inode->i_mode))
@@ -3964,6 +3964,7 @@ static int ocfs2_data_convert_worker(struct ocfs2_lock_res *lockres,filemap_fdatawait (mapping); } +out_forget:forget_all_cached_acls (inode); out:
fs/qnx4/dir.c +52 -17
72 lines not on this page · raw message
tools/testing/selftests/arm64/signal/test_signals.h +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/arm64/signal/test_signals_utils.c +8 -2
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.