Linux 5.4.202
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.202 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-bus-iio-vf610 | 2 Makefile | 4 arch/arm/boot/dts/imx6qdl.dtsi | 2 arch/arm/mach-axxia/platsmp.c | 1 arch/arm/mach-cns3xxx/core.c | 2 arch/arm/mach-exynos/exynos.c | 1 arch/mips/vr41xx/common/icu.c | 2 arch/parisc/Kconfig | 1 arch/powerpc/kernel/process.c | 2 arch/powerpc/kernel/rtas.c | 11 + arch/powerpc/platforms/powernv/powernv.h | 2 arch/powerpc/platforms/powernv/rng.c | 52 ++++++--- arch/powerpc/platforms/powernv/setup.c | 2 arch/powerpc/platforms/pseries/pseries.h | 2 arch/powerpc/platforms/pseries/rng.c | 11 - arch/powerpc/platforms/pseries/setup.c | 2 arch/s390/kernel/perf_cpum_cf.c | 22 +++ arch/xtensa/kernel/time.c | 1 arch/xtensa/platforms/xtfpga/setup.c | 1 drivers/base/regmap/regmap-irq.c | 5 drivers/char/random.c | 6 - drivers/dma-buf/udmabuf.c | 5 drivers/gpio/gpio-vr41xx.c | 2 drivers/gpio/gpio-winbond.c | 7 - drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 drivers/iio/accel/bma180.c | 3 drivers/iio/accel/mma8452.c | 10 + drivers/iio/accel/mxc4005.c | 4 drivers/iio/adc/axp288_adc.c | 8 + drivers/iio/adc/stm32-adc-core.c | 2 drivers/iio/chemical/ccs811.c | 4 drivers/iio/gyro/mpu3050-core.c | 1 drivers/iio/trigger/iio-trig-sysfs.c | 1 drivers/md/dm-era-target.c | 8 + drivers/md/dm-log.c | 2 drivers/mmc/host/sdhci-pci-o2micro.c | 2 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 2 drivers/net/bonding/bond_main.c | 4 drivers/net/ethernet/intel/ice/ice_ethtool.c | 39 ++++++ drivers/net/ethernet/intel/igb/igb_main.c | 12 -- drivers/net/phy/aquantia_main.c | 15 ++ drivers/net/virtio_net.c | 25 +--- drivers/soc/bcm/brcmstb/pm/pm-arm.c | 1 drivers/tty/vt/vt.c | 39 ------ drivers/tty/vt/vt_ioctl.c | 147 -------------------------- drivers/usb/chipidea/udc.c | 3 drivers/usb/host/xhci-hub.c | 2 drivers/usb/host/xhci.c | 15 ++ drivers/usb/host/xhci.h | 2 drivers/usb/serial/option.c | 6 + drivers/xen/features.c | 2 fs/afs/inode.c | 3 include/linux/kd.h | 8 - include/linux/ratelimit.h | 12 +- include/trace/events/libata.h | 1 net/core/filter.c | 34 ++++-- net/ipv4/ip_gre.c | 15 +- net/ipv6/ip6_gre.c | 15 +- net/openvswitch/flow.c | 2 net/sched/sch_netem.c | 4 scripts/mod/modpost.c | 2 sound/pci/hda/patch_conexant.c | 4 sound/pci/hda/patch_realtek.c | 10 + sound/pci/hda/patch_via.c | 4 64 files changed, 314 insertions(+), 309 deletions(-)
Aidan MacDonald (1):
regmap-irq: Fix a bug in regmap_irq_enable() for type_in_mask chips
Anatolii Gerasymenko (1):
ice: ethtool: advertise 1000M speeds properly
Andrew Donnellan (1):
powerpc/rtas: Allow ibm,platform-dump RTAS call with null buffer address
Baruch Siach (1):
iio: adc: vf610: fix conversion mode sysfs node name
Carlo Lobrano (1):
USB: serial: option: add Telit LE910Cx 0x1250 composition
Chevron Li (1):
mmc: sdhci-pci-o2micro: Fix card detect by dealing with debouncing
Claudiu Manoil (1):
phy: aquantia: Fix AN when higher speeds than 1G are not advertised
Dan Carpenter (1):
gpio: winbond: Fix error code in winbond_gpio_get()
David Howells (1):
afs: Fix dynamic root getattr
Dmitry Rokosov (3):
iio:chemical:ccs811: rearrange iio trigger get and register iio:accel:bma180: rearrange iio trigger get and register iio:accel:mxc4005: rearrange iio trigger get and register
Edward Wu (1):
ata: libata: add qc->flags in ata_qc_complete_template tracepoint
Eric Dumazet (1):
erspan: do not assume transport header is always set
Gerd Hoffmann (1):
udmabuf: add back sanity check
Greg Kroah-Hartman (1):
Linux 5.4.202
Haibo Chen (1):
iio: accel: mma8452: ignore the return value of reset operation
Hans de Goede (1):
iio: adc: axp288: Override TS pin bias current for some models
Helge Deller (1):
parisc: Enable ARCH_HAS_STRICT_MODULE_RWX
Jakub Kicinski (1):
Revert "net/tls: fix tls_sk_proto_close executed repeatedly"
Jason A. Donenfeld (5):
random: schedule mix_interrupt_randomness() less often
random: quiet urandom warning ratelimit suppression message powerpc/powernv: wire up rng during setup_arch
random: update comment from copy_to_user() -> copy_to_iter() powerpc/pseries: wire up rng during setup_arch()
Jay Vosburgh (1):
bonding: ARP monitor spams NETDEV_NOTIFY_PEERS notifiers
Jiri Slaby (1):
vt: drop old FONT ioctls
Jon Maxwell (1):
bpf: Fix request_sock leak in sk lookup helpers
Julien Grall (1):
x86/xen: Remove undefined behavior in setup_features()
Kai-Heng Feng (1):
igb: Make DMA faster when CPU is active on the PCIe link
Kailang Yang (1):
ALSA: hda/realtek - ALC897 headset MIC no sound
Liang He (2):
xtensa: xtfpga: Fix refcount leak bug in setup
xtensa: Fix refcount leak bug in time.c
Lucas Stach (1):
ARM: dts: imx6qdl: correct PU regulator ramp delay
Macpaul Lin (1):
USB: serial: option: add Quectel RM500K module support
Masahiro Yamada (2):
modpost: fix section mismatch check for exported init/exit sections
kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS (2nd attempt)
Mathias Nyman (1):
xhci: turn off port power in shutdown
Miaoqian Lin (5):
drm/msm/mdp4: Fix refcount leak in mdp4_modeset_init_intf
ARM: exynos: Fix refcount leak in exynos_map_pmu
soc: bcm: brcmstb: pm: pm-arm: Fix refcount leak in brcmstb_pm_probe
ARM: Fix refcount leak in axxia_boot_secondary
ARM: cns3xxx: Fix refcount leak in cns3xxx_init
Mikulas Patocka (1):
dm mirror log: clear log bits up to BITS_PER_LONG boundary
Naveen N. Rao (1):
powerpc: Enable execve syscall exit tracepoint
Nikos Tsironis (1):
dm era: commit metadata in postsuspend after worker stops
Olivier Moysan (1):
iio: adc: stm32: fix maximum clock rate for stm32mp15x
Peilin Ye (1):
net/sched: sch_netem: Fix arithmetic in netem_dump() for 32-bit platforms
Rosemarie O'Riorden (1):
net: openvswitch: fix parsing of nw_proto for IPv6 fragments
Sascha Hauer (1):
mtd: rawnand: gpmi: Fix setting busy timeout setting
Stephan Gerhold (1):
virtio_net: fix xdp_rxq_info bug after suspend/resume
Takashi Iwai (2):
ALSA: hda/via: Fix missing beep setup
ALSA: hda/conexant: Fix missing beep setup
Thomas Richter (1):
s390/cpumf: Handle events cycles and instructions identical
Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo PD70PNT
Vincent Whitchurch (1):
iio: trigger: sysfs: fix use-after-free on remove
Xu Yang (1):
usb: chipidea: udc: check request status before setting device address
Yonglin Tan (1):
USB: serial: option: add Quectel EM05-G modem
Zheyu Ma (1):
iio: gyro: mpu3050: Fix the error handling in mpu3050_power_up()
Ziyang Xuan (1):
net/tls: fix tls_sk_proto_close executed repeatedly
huhai (1):
MIPS: Remove repetitive increase irq_err_count
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-bus-iio-vf610 +1 -1
@@ -1,4 +1,4 @@ -What: /sys/bus/iio/devices/iio:deviceX/conversion_mode +What: /sys/bus/iio/devices/iio:deviceX/in_conversion_mode KernelVersion: 4.2 Contact: [email protected] Description:
Makefile +2 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 201 +SUBLEVEL = 202 EXTRAVERSION = NAME = Kleptomaniac Octopus
@@ -1073,7 +1073,7 @@ PHONY += autoksyms_recursive ifdef CONFIG_TRIM_UNUSED_KSYMS autoksyms_recursive: descend modules.order $(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \ - "$(MAKE) -f $(srctree)/Makefile vmlinux" + "$(MAKE) -f $(srctree)/Makefile autoksyms_recursive" endif # For the kernel to actually contain only the needed exported symbols,
arch/arm/boot/dts/imx6qdl.dtsi +1 -1
@@ -766,7 +766,7 @@ regulator-name = "vddpu"; regulator-min-microvolt = <725000>; regulator-max-microvolt = <1450000>; - regulator-enable-ramp-delay = <150>; + regulator-enable-ramp-delay = <380>; anatop-reg-offset = <0x140>; anatop-vol-bit-shift = <9>; anatop-vol-bit-width = <5>;
arch/arm/mach-axxia/platsmp.c +1 -0
@@ -39,6 +39,7 @@ static int axxia_boot_secondary(unsigned int cpu, struct task_struct *idle)return -ENOENT ; syscon =of_iomap (syscon_np,0 ); +of_node_put (syscon_np);if (!syscon)return -ENOMEM ;
arch/arm/mach-cns3xxx/core.c +2 -0
@@ -376,6 +376,7 @@ static void __init cns3xxx_init(void)/* De-Asscer SATA Reset */ cns3xxx_pwr_soft_rst (CNS3XXX_PWR_SOFTWARE_RST (SATA )); } +of_node_put (dn); dn =of_find_compatible_node (NULL ,NULL ,"cavium,cns3420-sdhci" );if (of_device_is_available (dn)) {
@@ -389,6 +390,7 @@ static void __init cns3xxx_init(void)cns3xxx_pwr_clk_en (CNS3XXX_PWR_CLK_EN (SDIO ));cns3xxx_pwr_soft_rst (CNS3XXX_PWR_SOFTWARE_RST (SDIO )); } +of_node_put (dn); pm_power_off = cns3xxx_power_off;
arch/arm/mach-exynos/exynos.c +1 -0
@@ -136,6 +136,7 @@ static void exynos_map_pmu(void) np =of_find_matching_node (NULL , exynos_dt_pmu_match);if (np) pmu_base_addr =of_iomap (np,0 ); +of_node_put (np); }static void __init exynos_init_irq (void )
arch/mips/vr41xx/common/icu.c +0 -2
@@ -640,8 +640,6 @@ static int icu_get_irq(unsigned int irq)printk (KERN_ERR "spurious ICU interrupt: %04x,%04x\n" , pend1, pend2); -atomic_inc (&irq_err_count); -return -1 ; }
arch/parisc/Kconfig +1 -0
@@ -11,6 +11,7 @@ config PARISC select ARCH_WANT_FRAME_POINTERS select ARCH_HAS_ELF_RANDOMIZE select ARCH_HAS_STRICT_KERNEL_RWX + select ARCH_HAS_STRICT_MODULE_RWX select ARCH_HAS_UBSAN_SANITIZE_ALL select ARCH_NO_SG_CHAIN select ARCH_SUPPORTS_MEMORY_FAILURE
arch/powerpc/kernel/process.c +1 -1
@@ -1719,7 +1719,7 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp)tm_reclaim_current (0 );#endif -memset (regs->gpr,0 ,sizeof (regs->gpr)); +memset (®s->gpr[1 ],0 ,sizeof (regs->gpr) -sizeof (regs->gpr[0 ])); regs->ctr =0 ; regs->link =0 ; regs->xer =0 ;
arch/powerpc/kernel/rtas.c +10 -1
@@ -988,7 +988,7 @@ static struct rtas_filter rtas_filters[] __ro_after_init = { { "get-time-of-day", -1, -1, -1, -1, -1 }, { "ibm,get-vpd", -1, 0, -1, 1, 2 }, { "ibm,lpar-perftools", -1, 2, 3, -1, -1 }, - { "ibm,platform-dump", -1, 4, 5, -1, -1 }, + { "ibm,platform-dump", -1, 4, 5, -1, -1 }, /* Special cased */ { "ibm,read-slot-reset-state", -1, -1, -1, -1, -1 }, { "ibm,scan-log-dump", -1, 0, 1, -1, -1 }, { "ibm,set-dynamic-indicator", -1, 2, -1, -1, -1 },
@@ -1035,6 +1035,15 @@ static bool block_rtas_call(int token, int nargs, size =1 ; end = base + size -1 ; + +/* +* Special case for ibm,platform-dump - NULL buffer +* address is used to indicate end of dump processing +*/ +if (!strcmp (f->name,"ibm,platform-dump" ) && + base ==0 ) +return false; +if (!in_rmo_buf (base, end)) goto err; }
arch/powerpc/platforms/powernv/powernv.h +2 -0
@@ -35,4 +35,6 @@ ssize_t memcons_copy(struct memcons *mc, char *to, loff_t pos, size_t count);u32 memcons_get_size (struct memcons *mc);struct memcons *memcons_init (struct device_node *node,const char *mc_prop_name); +void pnv_rng_init (void ); +#endif /* _POWERNV_H */
arch/powerpc/platforms/powernv/rng.c +36 -16
90 lines not on this page · raw message
arch/powerpc/platforms/powernv/setup.c +2 -0
@@ -168,6 +168,8 @@ static void __init pnv_setup_arch(void) powersave_nap =1 ;/* XXX PMCS */ + +pnv_rng_init (); }static void __init pnv_init (void )
arch/powerpc/platforms/pseries/pseries.h +2 -0
@@ -114,4 +114,6 @@ int dlpar_workqueue_init(void);void pseries_setup_rfi_flush (void );void pseries_lpar_read_hblkrm_characteristics (void ); +void pseries_rng_init (void ); +#endif /* _PSERIES_PSERIES_H */
arch/powerpc/platforms/pseries/rng.c +3 -8
@@ -10,6 +10,7 @@#include <asm/archrandom.h> #include <asm/machdep.h> #include <asm/plpar_wrappers.h> +#include "pseries.h" static int pseries_get_random_long (unsigned long *v)
@@ -24,19 +25,13 @@ static int pseries_get_random_long(unsigned long *v)return 0 ; } -static __init int rng_init (void ) +void __init pseries_rng_init (void ) {struct device_node *dn; dn =of_find_compatible_node (NULL ,NULL ,"ibm,random" );if (!dn) -return -ENODEV ; - -pr_info ("Registering arch random hook.\n" ); - +return ; ppc_md.get_random_seed = pseries_get_random_long; -of_node_put (dn); -return 0 ; } -machine_subsys_initcall (pseries, rng_init);
arch/powerpc/platforms/pseries/setup.c +2 -0
@@ -792,6 +792,8 @@ static void __init pSeries_setup_arch(void)if (swiotlb_force ==SWIOTLB_FORCE ) ppc_swiotlb_enable =1 ; + +pseries_rng_init (); }static void pseries_panic (char *str)
arch/s390/kernel/perf_cpum_cf.c +21 -1
@@ -292,6 +292,26 @@ static int __hw_perf_event_init(struct perf_event *event, unsigned int type)return err; } +/* Events CPU_CYLCES and INSTRUCTIONS can be submitted with two different +* attribute::type values: +* - PERF_TYPE_HARDWARE: +* - pmu->type: +* Handle both type of invocations identical. They address the same hardware. +* The result is different when event modifiers exclude_kernel and/or +* exclude_user are also set. +*/ +static int cpumf_pmu_event_type (struct perf_event *event) +{ +u64 ev = event->attr.config; + +if (cpumf_generic_events_basic[PERF_COUNT_HW_CPU_CYCLES ] == ev || + cpumf_generic_events_basic[PERF_COUNT_HW_INSTRUCTIONS ] == ev || + cpumf_generic_events_user[PERF_COUNT_HW_CPU_CYCLES ] == ev || + cpumf_generic_events_user[PERF_COUNT_HW_INSTRUCTIONS ] == ev) +return PERF_TYPE_HARDWARE ; +return PERF_TYPE_RAW ; +} +static int cpumf_pmu_event_init (struct perf_event *event) {unsigned int type = event->attr.type;
@@ -301,7 +321,7 @@ static int cpumf_pmu_event_init(struct perf_event *event) err =__hw_perf_event_init (event, type); else if (event->pmu->type == type)/* Registered as unknown PMU */ - err =__hw_perf_event_init (event,PERF_TYPE_RAW ); + err =__hw_perf_event_init (event,cpumf_pmu_event_type (event)); else return -ENOENT;
arch/xtensa/kernel/time.c +1 -0
@@ -160,6 +160,7 @@ static void __init calibrate_ccount(void) cpu =of_find_compatible_node (NULL ,NULL ,"cdns,xtensa-cpu" );if (cpu) { clk =of_clk_get (cpu,0 ); +of_node_put (cpu);if (!IS_ERR (clk)) { ccount_freq =clk_get_rate (clk);return ;
arch/xtensa/platforms/xtfpga/setup.c +1 -0
@@ -148,6 +148,7 @@ static int __init machine_setup(void)if ((eth =of_find_compatible_node (eth,NULL ,"opencores,ethoc" )))update_local_mac (eth); +of_node_put (eth);return 0 ; }arch_initcall (machine_setup);
drivers/base/regmap/regmap-irq.c +3 -2
@@ -214,6 +214,7 @@ static void regmap_irq_enable(struct irq_data *data)struct regmap_irq_chip_data *d =irq_data_get_irq_chip_data (data);struct regmap *map = d->map;const struct regmap_irq *irq_data =irq_to_regmap_irq (d, data->hwirq); +unsigned int reg = irq_data->reg_offset / map->reg_stride;unsigned int mask, type; type = irq_data->type.type_falling_val | irq_data->type.type_rising_val;
@@ -230,14 +231,14 @@ static void regmap_irq_enable(struct irq_data *data)* at the corresponding offset in regmap_irq_set_type(). */ if (d->chip->type_in_mask && type) - mask = d->type_buf[irq_data->reg_offset / map->reg_stride]; + mask = d->type_buf[reg] & irq_data->mask;else mask = irq_data->mask;if (d->chip->clear_on_unmask) d->clear_status = true; - d->mask_buf[irq_data->reg_offset / map->reg_stride] &= ~mask; + d->mask_buf[reg] &= ~mask; }static void regmap_irq_disable (struct irq_data *data)
drivers/char/random.c +3 -3
@@ -88,7 +88,7 @@ static RAW_NOTIFIER_HEAD(random_ready_chain);/* Control how we warn userspace. */ static struct ratelimit_state urandom_warning = -RATELIMIT_STATE_INIT ("warn_urandom_randomness" ,HZ ,3 ); +RATELIMIT_STATE_INIT_FLAGS ("urandom_warning" ,HZ ,3 ,RATELIMIT_MSG_ON_RELEASE );static int ratelimit_disable__read_mostly =IS_ENABLED (CONFIG_WARN_ALL_UNSEEDED_RANDOM );module_param_named (ratelimit_disable, ratelimit_disable, int,0644 );
@@ -450,7 +450,7 @@ static ssize_t get_random_bytes_user(struct iov_iter *iter)/* * Immediately overwrite the ChaCha key at index 4 with random -* bytes, in case userspace causes copy_to_user() below to sleep +* bytes, in case userspace causes copy_to_iter() below to sleep * forever, so that we still retain forward secrecy in that case. */ crng_make_state (chacha_state, (u8 *)&chacha_state[4 ],CHACHA_KEY_SIZE );
@@ -996,7 +996,7 @@ void add_interrupt_randomness(int irq)if (new_count &MIX_INFLIGHT )return ; -if (new_count <64 && !time_is_before_jiffies (fast_pool->last +HZ )) +if (new_count <1024 && !time_is_before_jiffies (fast_pool->last +HZ ))return ;if (unlikely (!fast_pool->mix.func))
drivers/dma-buf/udmabuf.c +4 -1
@@ -24,8 +24,11 @@ static vm_fault_t udmabuf_vm_fault(struct vm_fault *vmf) {struct vm_area_struct *vma = vmf->vma;struct udmabuf *ubuf = vma->vm_private_data; +pgoff_t pgoff = vmf->pgoff; - vmf->page = ubuf->pages[vmf->pgoff]; +if (pgoff >= ubuf->pagecount) +return VM_FAULT_SIGBUS ; + vmf->page = ubuf->pages[pgoff];get_page (vmf->page);return 0 ; }
drivers/gpio/gpio-vr41xx.c +0 -2
@@ -217,8 +217,6 @@ static int giu_get_irq(unsigned int irq)printk (KERN_ERR "spurious GIU interrupt: %04x(%04x),%04x(%04x)\n" , maskl, pendl, maskh, pendh); -atomic_inc (&irq_err_count); -return -EINVAL ; }
drivers/gpio/gpio-winbond.c +4 -3
@@ -385,12 +385,13 @@ static int winbond_gpio_get(struct gpio_chip *gc, unsigned int offset)unsigned long *base =gpiochip_get_data (gc);const struct winbond_gpio_info *info;bool val; +int ret;winbond_gpio_get_info (&offset, &info); - val =winbond_sio_enter (*base); -if (val) -return val; + ret =winbond_sio_enter (*base); +if (ret) +return ret;winbond_sio_select_logical (*base, info->dev);
drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +2 -0
@@ -245,6 +245,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms, encoder =mdp4_lcdc_encoder_init (dev, panel_node);if (IS_ERR (encoder)) {DRM_DEV_ERROR (dev->dev,"failed to construct LCDC encoder\n" ); +of_node_put (panel_node);return PTR_ERR (encoder); }
@@ -254,6 +255,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms, connector =mdp4_lvds_connector_init (dev, panel_node, encoder);if (IS_ERR (connector)) {DRM_DEV_ERROR (dev->dev,"failed to initialize LVDS connector\n" ); +of_node_put (panel_node);return PTR_ERR (connector); }
drivers/iio/accel/bma180.c +2 -1
@@ -793,11 +793,12 @@ static int bma180_probe(struct i2c_client *client, data->trig->dev.parent = &client->dev; data->trig->ops = &bma180_trigger_ops;iio_trigger_set_drvdata (data->trig, indio_dev); - indio_dev->trig =iio_trigger_get (data->trig); ret =iio_trigger_register (data->trig);if (ret) goto err_trigger_free; + + indio_dev->trig =iio_trigger_get (data->trig); } ret = iio_triggered_buffer_setup(indio_dev, NULL,
drivers/iio/accel/mma8452.c +7 -3
@@ -1489,10 +1489,14 @@ static int mma8452_reset(struct i2c_client *client)int i;int ret; - ret =i2c_smbus_write_byte_data (client,MMA8452_CTRL_REG2 , +/* +* Find on fxls8471, after config reset bit, it reset immediately, +* and will not give ACK, so here do not check the return value. +* The following code will read the reset register, and check whether +* this reset works. +*/ +i2c_smbus_write_byte_data (client,MMA8452_CTRL_REG2 ,MMA8452_CTRL_REG2_RST ); -if (ret <0 ) -return ret;for (i =0 ; i <10 ; i++) {usleep_range (100 ,200 );
drivers/iio/accel/mxc4005.c +2 -2
@@ -462,8 +462,6 @@ static int mxc4005_probe(struct i2c_client *client, data->dready_trig->dev.parent = &client->dev; data->dready_trig->ops = &mxc4005_trigger_ops;iio_trigger_set_drvdata (data->dready_trig, indio_dev); - indio_dev->trig = data->dready_trig; -iio_trigger_get (indio_dev->trig); ret =devm_iio_trigger_register (&client->dev, data->dready_trig);if (ret) {
@@ -471,6 +469,8 @@ static int mxc4005_probe(struct i2c_client *client, "failed to register trigger\n");return ret; } + + indio_dev->trig =iio_trigger_get (data->dready_trig); }return devm_iio_device_register (&client->dev, indio_dev);
drivers/iio/adc/axp288_adc.c +8 -0
@@ -196,6 +196,14 @@ static const struct dmi_system_id axp288_adc_ts_bias_override[] = { }, .driver_data = (void *)(uintptr_t)AXP288_ADC_TS_BIAS_80UA, }, + { + /* Nuvision Solo 10 Draw */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TMAX"), + DMI_MATCH(DMI_PRODUCT_NAME, "TM101W610L"), + }, + .driver_data = (void *)(uintptr_t)AXP288_ADC_TS_BIAS_80UA, + }, {} };
drivers/iio/adc/stm32-adc-core.c +1 -1
@@ -815,7 +815,7 @@ static const struct stm32_adc_priv_cfg stm32h7_adc_priv_cfg = {static const struct stm32_adc_priv_cfg stm32mp1_adc_priv_cfg = { .regs = &stm32h7_adc_common_regs, .clk_sel = stm32h7_adc_clk_sel, - .max_clk_rate_hz =40000000 , + .max_clk_rate_hz =36000000 , .has_syscfg =HAS_VBOOSTER |HAS_ANASWVDD , .num_irqs =2 , };
drivers/iio/chemical/ccs811.c +2 -2
@@ -418,11 +418,11 @@ static int ccs811_probe(struct i2c_client *client, data->drdy_trig->dev.parent = &client->dev; data->drdy_trig->ops = &ccs811_trigger_ops;iio_trigger_set_drvdata (data->drdy_trig, indio_dev); - indio_dev->trig = data->drdy_trig; -iio_trigger_get (indio_dev->trig); ret =iio_trigger_register (data->drdy_trig);if (ret) goto err_poweroff; + + indio_dev->trig =iio_trigger_get (data->drdy_trig); } ret = iio_triggered_buffer_setup(indio_dev, NULL,
drivers/iio/gyro/mpu3050-core.c +1 -0
@@ -874,6 +874,7 @@ static int mpu3050_power_up(struct mpu3050 *mpu3050) ret =regmap_update_bits (mpu3050->map,MPU3050_PWR_MGM ,MPU3050_PWR_MGM_SLEEP ,0 );if (ret) { +regulator_bulk_disable (ARRAY_SIZE (mpu3050->regs), mpu3050->regs);dev_err (mpu3050->dev,"error setting power mode\n" );return ret; }
drivers/iio/trigger/iio-trig-sysfs.c +1 -0
@@ -196,6 +196,7 @@ static int iio_sysfs_trigger_remove(int id) }iio_trigger_unregister (t->trig); +irq_work_sync (&t->work);iio_trigger_free (t->trig);list_del (&t->l);
drivers/md/dm-era-target.c +7 -1
@@ -1397,7 +1397,7 @@ static void start_worker(struct era *era)static void stop_worker (struct era *era) {atomic_set (&era->suspended,1 ); -flush_workqueue (era->wq); +drain_workqueue (era->wq); }/*----------------------------------------------------------------
@@ -1581,6 +1581,12 @@ static void era_postsuspend(struct dm_target *ti) }stop_worker (era); + + r =metadata_commit (era->md); +if (r) { +DMERR ("%s: metadata_commit failed" , __func__); +/* FIXME: fail mode */ + } }static int era_preresume (struct dm_target *ti)
drivers/md/dm-log.c +1 -1
@@ -615,7 +615,7 @@ static int disk_resume(struct dm_dirty_log *log)log_clear_bit (lc, lc->clean_bits, i);/* clear any old bits -- device has shrunk */ -for (i = lc->region_count; i % (sizeof (*lc->clean_bits) <<BYTE_SHIFT ); i++) +for (i = lc->region_count; i %BITS_PER_LONG ; i++)log_clear_bit (lc, lc->clean_bits, i);/* copy clean across to sync */
drivers/mmc/host/sdhci-pci-o2micro.c +2 -0
@@ -145,6 +145,8 @@ static int sdhci_o2_get_cd(struct mmc_host *mmc)if (!(sdhci_readw (host,O2_PLL_DLL_WDT_CONTROL1 ) &O2_PLL_LOCK_STATUS ))sdhci_o2_enable_internal_clock (host); +else +sdhci_o2_wait_card_detect_stable (host);return !!(sdhci_readl (host,SDHCI_PRESENT_STATE ) &SDHCI_CARD_PRESENT ); }
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +1 -1
@@ -682,7 +682,7 @@ static void gpmi_nfc_compute_timings(struct gpmi_nand_data *this, hw->timing0 =BF_GPMI_TIMING0_ADDRESS_SETUP (addr_setup_cycles) |BF_GPMI_TIMING0_DATA_HOLD (data_hold_cycles) |BF_GPMI_TIMING0_DATA_SETUP (data_setup_cycles); - hw->timing1 =BF_GPMI_TIMING1_BUSY_TIMEOUT (busy_timeout_cycles *4096 ); + hw->timing1 =BF_GPMI_TIMING1_BUSY_TIMEOUT (DIV_ROUND_UP (busy_timeout_cycles,4096 ));/* * Derive NFC ideal delay from {3}:
drivers/net/bonding/bond_main.c +3 -1
@@ -3071,9 +3071,11 @@ static void bond_activebackup_arp_mon(struct bonding *bond)if (!rtnl_trylock ())return ; -if (should_notify_peers) +if (should_notify_peers) { + bond->send_peer_notif--;call_netdevice_notifiers (NETDEV_NOTIFY_PEERS , bond->dev); + }if (should_notify_rtnl) {bond_slave_state_notify (bond);bond_slave_link_notify (bond);
drivers/net/ethernet/intel/ice/ice_ethtool.c +38 -1
@@ -2337,6 +2337,42 @@ ice_setup_autoneg(struct ice_port_info *p, struct ethtool_link_ksettings *ks,return err; } +/** +* ice_set_phy_type_from_speed - set phy_types based on speeds +* and advertised modes +* @ks: ethtool link ksettings struct +* @phy_type_low: pointer to the lower part of phy_type +* @phy_type_high: pointer to the higher part of phy_type +* @adv_link_speed: targeted link speeds bitmap +*/ +static void +ice_set_phy_type_from_speed (const struct ethtool_link_ksettings *ks, +u64 *phy_type_low,u64 *phy_type_high, +u16 adv_link_speed) +{ +/* Handle 1000M speed in a special way because ice_update_phy_type +* enables all link modes, but having mixed copper and optical +* standards is not supported. +*/ + adv_link_speed &= ~ICE_AQ_LINK_SPEED_1000MB ; + +if (ethtool_link_ksettings_test_link_mode (ks, advertising, + 1000baseT_Full)) + *phy_type_low |=ICE_PHY_TYPE_LOW_1000BASE_T | +ICE_PHY_TYPE_LOW_1G_SGMII ; + +if (ethtool_link_ksettings_test_link_mode (ks, advertising, + 1000baseKX_Full)) + *phy_type_low |=ICE_PHY_TYPE_LOW_1000BASE_KX ; + +if (ethtool_link_ksettings_test_link_mode (ks, advertising, + 1000baseX_Full)) + *phy_type_low |=ICE_PHY_TYPE_LOW_1000BASE_SX | +ICE_PHY_TYPE_LOW_1000BASE_LX ; + +ice_update_phy_type (phy_type_low, phy_type_high, adv_link_speed); +} +/** * ice_set_link_ksettings - Set Speed and Duplex * @netdev: network interface device structure
@@ -2472,7 +2508,8 @@ ice_set_link_ksettings(struct net_device *netdev, adv_link_speed = curr_link_speed;/* Convert the advertise link speeds to their corresponded PHY_TYPE */ -ice_update_phy_type (&phy_type_low, &phy_type_high, adv_link_speed); +ice_set_phy_type_from_speed (ks, &phy_type_low, &phy_type_high, + adv_link_speed);if (!autoneg_changed && adv_link_speed == curr_link_speed) {netdev_info (netdev,"Nothing changed, exiting without setting anything.\n" );
drivers/net/ethernet/intel/igb/igb_main.c +5 -7
@@ -9404,11 +9404,10 @@ static void igb_init_dmac(struct igb_adapter *adapter, u32 pba)struct e1000_hw *hw = &adapter->hw;u32 dmac_thr;u16 hwm; +u32 reg;if (hw->mac.type > e1000_82580) {if (adapter->flags &IGB_FLAG_DMAC ) { -u32 reg; -/* force threshold to 0. */ wr32 (E1000_DMCTXTH ,0 );
@@ -9441,7 +9440,6 @@ static void igb_init_dmac(struct igb_adapter *adapter, u32 pba)/* Disable BMC-to-OS Watchdog Enable */ if (hw->mac.type != e1000_i354) reg &= ~E1000_DMACR_DC_BMC2OSW_EN ; -wr32 (E1000_DMACR , reg);/* no lower threshold to disable
@@ -9458,12 +9456,12 @@ static void igb_init_dmac(struct igb_adapter *adapter, u32 pba)*/ wr32 (E1000_DMCTXTH , (IGB_MIN_TXPBSIZE - (IGB_TX_BUF_4096 + adapter->max_frame_size)) >>6 ); + } -/* make low power state decision controlled -* by DMA coal -*/ +if (hw->mac.type >= e1000_i210 || + (adapter->flags &IGB_FLAG_DMAC )) { reg =rd32 (E1000_PCIEMISC ); - reg &= ~E1000_PCIEMISC_LX_DECISION ; + reg |=E1000_PCIEMISC_LX_DECISION ;wr32 (E1000_PCIEMISC , reg); }/* endif adapter->dmac is not disabled */ }else if (hw->mac.type == e1000_82580) {
drivers/net/phy/aquantia_main.c +14 -1
@@ -34,6 +34,8 @@#define MDIO_AN_VEND_PROV 0xc400#define MDIO_AN_VEND_PROV_1000BASET_FULL BIT(15)#define MDIO_AN_VEND_PROV_1000BASET_HALF BIT(14) +#define MDIO_AN_VEND_PROV_5000BASET_FULL BIT(11) +#define MDIO_AN_VEND_PROV_2500BASET_FULL BIT(10)#define MDIO_AN_VEND_PROV_DOWNSHIFT_EN BIT(4)#define MDIO_AN_VEND_PROV_DOWNSHIFT_MASK GENMASK(3, 0)#define MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT 4
@@ -230,9 +232,20 @@ static int aqr_config_aneg(struct phy_device *phydev) phydev->advertising)) reg |=MDIO_AN_VEND_PROV_1000BASET_HALF ; +/* Handle the case when the 2.5G and 5G speeds are not advertised */ +if (linkmode_test_bit (ETHTOOL_LINK_MODE_2500baseT_Full_BIT, + phydev->advertising)) + reg |=MDIO_AN_VEND_PROV_2500BASET_FULL ; + +if (linkmode_test_bit (ETHTOOL_LINK_MODE_5000baseT_Full_BIT, + phydev->advertising)) + reg |=MDIO_AN_VEND_PROV_5000BASET_FULL ; + ret =phy_modify_mmd_changed (phydev,MDIO_MMD_AN ,MDIO_AN_VEND_PROV ,MDIO_AN_VEND_PROV_1000BASET_HALF | -MDIO_AN_VEND_PROV_1000BASET_FULL , reg); +MDIO_AN_VEND_PROV_1000BASET_FULL | +MDIO_AN_VEND_PROV_2500BASET_FULL | +MDIO_AN_VEND_PROV_5000BASET_FULL , reg);if (ret <0 )return ret;if (ret >0 )
drivers/net/virtio_net.c +6 -19
@@ -2393,7 +2393,6 @@ static const struct ethtool_ops virtnet_ethtool_ops = {static void virtnet_freeze_down (struct virtio_device *vdev) {struct virtnet_info *vi = vdev->priv; -int i;/* Make sure no work handler is accessing the device */ flush_work (&vi->config_work);
@@ -2401,14 +2400,8 @@ static void virtnet_freeze_down(struct virtio_device *vdev)netif_tx_lock_bh (vi->dev);netif_device_detach (vi->dev);netif_tx_unlock_bh (vi->dev); -cancel_delayed_work_sync (&vi->refill); - -if (netif_running (vi->dev)) { -for (i =0 ; i < vi->max_queue_pairs; i++) { -napi_disable (&vi->rq[i].napi); -virtnet_napi_tx_disable (&vi->sq[i].napi); - } - } +if (netif_running (vi->dev)) +virtnet_close (vi->dev); }static int init_vqs (struct virtnet_info *vi);
@@ -2416,7 +2409,7 @@ static int init_vqs(struct virtnet_info *vi);static int virtnet_restore_up (struct virtio_device *vdev) {struct virtnet_info *vi = vdev->priv; -int err, i; +int err; err =init_vqs (vi);if (err)
@@ -2425,15 +2418,9 @@ static int virtnet_restore_up(struct virtio_device *vdev)virtio_device_ready (vdev);if (netif_running (vi->dev)) { -for (i =0 ; i < vi->curr_queue_pairs; i++) -if (!try_fill_recv (vi, &vi->rq[i],GFP_KERNEL )) -schedule_delayed_work (&vi->refill,0 ); - -for (i =0 ; i < vi->max_queue_pairs; i++) { -virtnet_napi_enable (vi->rq[i].vq, &vi->rq[i].napi); -virtnet_napi_tx_enable (vi, vi->sq[i].vq, - &vi->sq[i].napi); - } + err =virtnet_open (vi->dev); +if (err) +return err; }netif_tx_lock_bh (vi->dev);
drivers/soc/bcm/brcmstb/pm/pm-arm.c +1 -0
@@ -780,6 +780,7 @@ static int brcmstb_pm_probe(struct platform_device *pdev) } ret =brcmstb_init_sram (dn); +of_node_put (dn);if (ret) {pr_err ("error setting up SRAM for PM\n" );return ret;
drivers/tty/vt/vt.c +3 -36
@@ -4541,16 +4541,8 @@ static int con_font_get(struct vc_data *vc, struct console_font_op *op)if (op->data && font.charcount > op->charcount) rc = -ENOSPC ; -if (!(op->flags &KD_FONT_FLAG_OLD )) { -if (font.width > op->width || font.height > op->height) - rc = -ENOSPC ; - }else { -if (font.width !=8 ) - rc = -EIO ; -else if ((op->height && font.height > op->height) || - font.height >32 ) - rc = -ENOSPC ; - } +if (font.width > op->width || font.height > op->height) + rc = -ENOSPC ;if (rc) goto out;
@@ -4578,7 +4570,7 @@ static int con_font_set(struct vc_data *vc, struct console_font_op *op)return -EINVAL ;if (op->charcount >512 )return -EINVAL ; -if (op->width <=0 || op->width >32 || op->height >32 ) +if (op->width <=0 || op->width >32 || !op->height || op->height >32 )return -EINVAL ; size = (op->width+7 )/8 *32 * op->charcount;if (size > max_font_size)
@@ -4588,31 +4580,6 @@ static int con_font_set(struct vc_data *vc, struct console_font_op *op)if (IS_ERR (font.data))return PTR_ERR (font.data); -if (!op->height) {/* Need to guess font height [compat] */ -int h, i; -u8 *charmap = font.data; - -/* -* If from KDFONTOP ioctl, don't allow things which can be done -* in userland,so that we can get rid of this soon -*/ -if (!(op->flags &KD_FONT_FLAG_OLD )) { -kfree (font.data); -return -EINVAL ; - } - -for (h =32 ; h >0 ; h--) -for (i =0 ; i < op->charcount; i++) -if (charmap[32 *i+h-1 ]) - goto nonzero; - -kfree (font.data); -return -EINVAL ; - - nonzero: - op->height = h; - } - font.charcount = op->charcount; font.width = op->width; font.height = op->height;
drivers/tty/vt/vt_ioctl.c +0 -147
177 lines not on this page · raw message
drivers/usb/chipidea/udc.c +3 -0
@@ -921,6 +921,9 @@ isr_setup_status_complete(struct usb_ep *ep, struct usb_request *req)struct ci_hdrc *ci = req->context;unsigned long flags; +if (req->status <0 ) +return ; +if (ci->setaddr) {hw_usb_set_address (ci, ci->address); ci->setaddr = false;
drivers/usb/host/xhci-hub.c +1 -1
@@ -566,7 +566,7 @@ struct xhci_hub *xhci_get_rhub(struct usb_hcd *hcd)* It will release and re-aquire the lock while calling ACPI * method. */ -static void xhci_set_port_power (struct xhci_hcd *xhci,struct usb_hcd *hcd, +void xhci_set_port_power (struct xhci_hcd *xhci,struct usb_hcd *hcd,u16 index,bool on,unsigned long *flags) {struct xhci_hub *rhub;
drivers/usb/host/xhci.c +13 -2
@@ -775,6 +775,8 @@ static void xhci_stop(struct usb_hcd *hcd)void xhci_shutdown (struct usb_hcd *hcd) {struct xhci_hcd *xhci =hcd_to_xhci (hcd); +unsigned long flags; +int i;if (xhci->quirks &XHCI_SPURIOUS_REBOOT )usb_disable_xhci_ports (to_pci_dev (hcd->self.sysdev));
@@ -790,12 +792,21 @@ void xhci_shutdown(struct usb_hcd *hcd)del_timer_sync (&xhci->shared_hcd->rh_timer); } -spin_lock_irq (&xhci->lock); +spin_lock_irqsave (&xhci->lock, flags);xhci_halt (xhci); + +/* Power off USB2 ports*/ +for (i =0 ; i < xhci->usb2_rhub.num_ports; i++) +xhci_set_port_power (xhci, xhci->main_hcd, i, false, &flags); + +/* Power off USB3 ports*/ +for (i =0 ; i < xhci->usb3_rhub.num_ports; i++) +xhci_set_port_power (xhci, xhci->shared_hcd, i, false, &flags); +/* Workaround for spurious wakeups at shutdown with HSW */ if (xhci->quirks &XHCI_SPURIOUS_WAKEUP )xhci_reset (xhci,XHCI_RESET_SHORT_USEC ); -spin_unlock_irq (&xhci->lock); +spin_unlock_irqrestore (&xhci->lock, flags);xhci_cleanup_msix (xhci);
drivers/usb/host/xhci.h +2 -0
@@ -2155,6 +2155,8 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, u16 wIndex,int xhci_hub_status_data (struct usb_hcd *hcd,char *buf);int xhci_find_raw_port_number (struct usb_hcd *hcd,int port1);struct xhci_hub *xhci_get_rhub (struct usb_hcd *hcd); +void xhci_set_port_power (struct xhci_hcd *xhci,struct usb_hcd *hcd,u16 index, +bool on,unsigned long *flags);void xhci_hc_died (struct xhci_hcd *xhci);
drivers/usb/serial/option.c +6 -0
@@ -252,10 +252,12 @@ static void option_instat_callback(struct urb *urb);#define QUECTEL_PRODUCT_EG95 0x0195#define QUECTEL_PRODUCT_BG96 0x0296#define QUECTEL_PRODUCT_EP06 0x0306 +#define QUECTEL_PRODUCT_EM05G 0x030a#define QUECTEL_PRODUCT_EM12 0x0512#define QUECTEL_PRODUCT_RM500Q 0x0800#define QUECTEL_PRODUCT_EC200S_CN 0x6002#define QUECTEL_PRODUCT_EC200T 0x6026 +#define QUECTEL_PRODUCT_RM500K 0x7001#define CMOTECH_VENDOR_ID 0x16d8#define CMOTECH_PRODUCT_6001 0x6001
@@ -1134,6 +1136,8 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff), .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) }, + { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G, 0xff), + .driver_info = RSVD(6) | ZLP }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff), .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
@@ -1147,6 +1151,7 @@ static const struct usb_device_id option_ids[] = { .driver_info = ZLP }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
@@ -1279,6 +1284,7 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */ .driver_info = NCTRL(2) | RSVD(3) }, + { USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x1250, 0xff, 0x00, 0x00) }, /* Telit LE910Cx (rmnet) */ { USB_DEVICE(TELIT_VENDOR_ID, 0x1260), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, { USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
drivers/xen/features.c +1 -1
@@ -29,6 +29,6 @@ void xen_setup_features(void)if (HYPERVISOR_xen_version (XENVER_get_features, &fi) <0 )break ;for (j =0 ; j <32 ; j++) - xen_features[i *32 + j] = !!(fi.submap &1 <<j); + xen_features[i *32 + j] = !!(fi.submap &1U << j); } }
fs/afs/inode.c +2 -1
@@ -739,7 +739,8 @@ int afs_getattr(const struct path *path, struct kstat *stat,_enter ("{ ino=%lu v=%u }" , inode->i_ino, inode->i_generation); -if (!(query_flags &AT_STATX_DONT_SYNC ) && +if (vnode->volume && + !(query_flags &AT_STATX_DONT_SYNC ) && !test_bit (AFS_VNODE_CB_PROMISED , &vnode->flags)) { key =afs_request_key (vnode->volume->cell);if (IS_ERR (key))
include/linux/kd.h deleted +0 -8
@@ -1,8 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _LINUX_KD_H -#define _LINUX_KD_H - -#include <uapi/linux/kd.h> - -#define KD_FONT_FLAG_OLD 0x80000000/* Invoked via old interface [compat] */ -#endif /* _LINUX_KD_H */
include/linux/ratelimit.h +8 -4
@@ -23,12 +23,16 @@ struct ratelimit_state {unsigned long flags; }; -#define RATELIMIT_STATE_INIT (name, interval_init, burst_init) { \ - .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ - .interval = interval_init, \ - .burst = burst_init, \ +#define RATELIMIT_STATE_INIT_FLAGS (name, interval_init, burst_init, flags_init) { \ + .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ + .interval = interval_init, \ + .burst = burst_init, \ + .flags = flags_init, \ } +#define RATELIMIT_STATE_INIT (name, interval_init, burst_init) \ + RATELIMIT_STATE_INIT_FLAGS(name, interval_init, burst_init, 0) +#define RATELIMIT_STATE_INIT_DISABLED \ RATELIMIT_STATE_INIT(ratelimit_state, 0, DEFAULT_RATELIMIT_BURST)
include/trace/events/libata.h +1 -0
@@ -249,6 +249,7 @@ DECLARE_EVENT_CLASS(ata_qc_complete_template, __entry->hob_feature = qc->result_tf.hob_feature; __entry->nsect = qc->result_tf.nsect; __entry->hob_nsect = qc->result_tf.hob_nsect; + __entry->flags = qc->flags; ), TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s status=%s " \
net/core/filter.c +28 -6
@@ -5313,10 +5313,21 @@ __bpf_sk_lookup(struct sk_buff *skb, struct bpf_sock_tuple *tuple, u32 len, ifindex, proto, netns_id, flags);if (sk) { - sk =sk_to_full_sk (sk); -if (!sk_fullsock (sk)) { +struct sock *sk2 =sk_to_full_sk (sk); + +/* sk_to_full_sk() may return (sk)->rsk_listener, so make sure the original sk +* sock refcnt is decremented to prevent a request_sock leak. +*/ +if (!sk_fullsock (sk2)) + sk2 =NULL ; +if (sk2 != sk) {sock_gen_put (sk); -return NULL ; +/* Ensure there is no need to bump sk2 refcnt */ +if (unlikely (sk2 && !sock_flag (sk2,SOCK_RCU_FREE ))) { +WARN_ONCE (1 ,"Found non-RCU, unreferenced socket!" ); +return NULL ; + } + sk = sk2; } }
@@ -5350,10 +5361,21 @@ bpf_sk_lookup(struct sk_buff *skb, struct bpf_sock_tuple *tuple, u32 len, flags);if (sk) { - sk =sk_to_full_sk (sk); -if (!sk_fullsock (sk)) { +struct sock *sk2 =sk_to_full_sk (sk); + +/* sk_to_full_sk() may return (sk)->rsk_listener, so make sure the original sk +* sock refcnt is decremented to prevent a request_sock leak. +*/ +if (!sk_fullsock (sk2)) + sk2 =NULL ; +if (sk2 != sk) {sock_gen_put (sk); -return NULL ; +/* Ensure there is no need to bump sk2 refcnt */ +if (unlikely (sk2 && !sock_flag (sk2,SOCK_RCU_FREE ))) { +WARN_ONCE (1 ,"Found non-RCU, unreferenced socket!" ); +return NULL ; + } + sk = sk2; } }
net/ipv4/ip_gre.c +10 -5
@@ -497,7 +497,6 @@ static void erspan_fb_xmit(struct sk_buff *skb, struct net_device *dev)int tunnel_hlen;int version;int nhoff; -int thoff; tun_info =skb_tunnel_info (skb); if (unlikely(!tun_info || !(tun_info->mode & IP_TUNNEL_INFO_TX) ||
@@ -531,10 +530,16 @@ static void erspan_fb_xmit(struct sk_buff *skb, struct net_device *dev) (ntohs(ip_hdr(skb)->tot_len) > skb->len - nhoff)) truncate = true; - thoff =skb_transport_header (skb) -skb_mac_header (skb); -if (skb->protocol ==htons (ETH_P_IPV6 ) && - (ntohs (ipv6_hdr (skb)->payload_len) > skb->len - thoff)) - truncate = true; +if (skb->protocol ==htons (ETH_P_IPV6 )) { +int thoff; + +if (skb_transport_header_was_set (skb)) + thoff =skb_transport_header (skb) -skb_mac_header (skb); +else + thoff = nhoff +sizeof (struct ipv6hdr ); +if (ntohs (ipv6_hdr (skb)->payload_len) > skb->len - thoff) + truncate = true; + }if (version ==1 ) { erspan_build_header(skb, ntohl(tunnel_id_to_key32(key->tun_id)),
net/ipv6/ip6_gre.c +10 -5
@@ -927,7 +927,6 @@ static netdev_tx_t ip6erspan_tunnel_xmit(struct sk_buff *skb,__be16 proto;__u32 mtu;int nhoff; -int thoff;if (!pskb_inet_may_pull (skb)) goto tx_err;
@@ -948,10 +947,16 @@ static netdev_tx_t ip6erspan_tunnel_xmit(struct sk_buff *skb, (ntohs(ip_hdr(skb)->tot_len) > skb->len - nhoff)) truncate = true; - thoff =skb_transport_header (skb) -skb_mac_header (skb); -if (skb->protocol ==htons (ETH_P_IPV6 ) && - (ntohs (ipv6_hdr (skb)->payload_len) > skb->len - thoff)) - truncate = true; +if (skb->protocol ==htons (ETH_P_IPV6 )) { +int thoff; + +if (skb_transport_header_was_set (skb)) + thoff =skb_transport_header (skb) -skb_mac_header (skb); +else + thoff = nhoff +sizeof (struct ipv6hdr ); +if (ntohs (ipv6_hdr (skb)->payload_len) > skb->len - thoff) + truncate = true; + }if (skb_cow_head (skb, dev->needed_headroom ?: t->hlen)) goto tx_err;
net/openvswitch/flow.c +1 -1
@@ -265,7 +265,7 @@ static int parse_ipv6hdr(struct sk_buff *skb, struct sw_flow_key *key)if (flags &IP6_FH_F_FRAG ) {if (frag_off) { key->ip.frag =OVS_FRAG_TYPE_LATER ; - key->ip.proto = nexthdr; + key->ip.proto =NEXTHDR_FRAGMENT ;return 0 ; } key->ip.frag =OVS_FRAG_TYPE_FIRST ;
net/sched/sch_netem.c +2 -2
@@ -1146,9 +1146,9 @@ static int netem_dump(struct Qdisc *sch, struct sk_buff *skb)struct tc_netem_rate rate;struct tc_netem_slot slot; - qopt.latency =min_t (psched_tdiff_t,PSCHED_NS2TICKS (q->latency), + qopt.latency =min_t (psched_time_t,PSCHED_NS2TICKS (q->latency),UINT_MAX ); - qopt.jitter =min_t (psched_tdiff_t,PSCHED_NS2TICKS (q->jitter), + qopt.jitter =min_t (psched_time_t,PSCHED_NS2TICKS (q->jitter),UINT_MAX ); qopt.limit = q->limit; qopt.loss = q->loss;
scripts/mod/modpost.c +1 -1
@@ -1131,7 +1131,7 @@ static const struct sectioncheck sectioncheck[] = { },/* Do not export init/exit functions or data */ { - .fromsec = { "__ksymtab*", NULL }, + .fromsec = { "___ksymtab*", NULL }, .bad_tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL }, .mismatch = EXPORT_TO_INIT_EXIT, .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
sound/pci/hda/patch_conexant.c +2 -2
@@ -1048,11 +1048,11 @@ static int patch_conexant_auto(struct hda_codec *codec)if (err <0 ) goto error; - err =snd_hda_gen_parse_auto_config (codec, &spec->gen.autocfg); + err =cx_auto_parse_beep (codec);if (err <0 ) goto error; - err =cx_auto_parse_beep (codec); + err =snd_hda_gen_parse_auto_config (codec, &spec->gen.autocfg);if (err <0 ) goto error;
sound/pci/hda/patch_realtek.c +10 -0
@@ -2585,6 +2585,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {SND_PCI_QUIRK (0x1558 ,0x67e1 ,"Clevo PB71[DE][CDF]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ),SND_PCI_QUIRK (0x1558 ,0x67e5 ,"Clevo PC70D[PRS](?:-D|-G)?" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ),SND_PCI_QUIRK (0x1558 ,0x67f1 ,"Clevo PC70H[PRS]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ), +SND_PCI_QUIRK (0x1558 ,0x67f5 ,"Clevo PD70PN[NRT]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ),SND_PCI_QUIRK (0x1558 ,0x70d1 ,"Clevo PC70[ER][CDF]" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ),SND_PCI_QUIRK (0x1558 ,0x7714 ,"Clevo X170SM" ,ALC1220_FIXUP_CLEVO_PB51ED_PINS ), SND_PCI_QUIRK(0x1558, 0x7715, "Clevo X170KM-G", ALC1220_FIXUP_CLEVO_PB51ED),
@@ -9805,6 +9806,7 @@ enum {ALC668_FIXUP_MIC_DET_COEF ,ALC897_FIXUP_LENOVO_HEADSET_MIC ,ALC897_FIXUP_HEADSET_MIC_PIN , + ALC897_FIXUP_HP_HSMIC_VERB, }; static const struct hda_fixup alc662_fixups[] = {
@@ -10224,6 +10226,13 @@ static const struct hda_fixup alc662_fixups[] = { .chained = true, .chain_id =ALC897_FIXUP_LENOVO_HEADSET_MIC }, + [ALC897_FIXUP_HP_HSMIC_VERB] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl []) { + {0x19 ,0x01a1913c },/* use as headset mic, without its own jack detect */ + { } + }, + }, };static const struct snd_pci_quirk alc662_fixup_tbl[] = {
@@ -10249,6 +10258,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {SND_PCI_QUIRK (0x1028 ,0x0698 ,"Dell" ,ALC668_FIXUP_DELL_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1028 ,0x069f ,"Dell" ,ALC668_FIXUP_DELL_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x103c ,0x1632 ,"HP RP5800" ,ALC662_FIXUP_HP_RP5800 ), +SND_PCI_QUIRK (0x103c ,0x8719 ,"HP" ,ALC897_FIXUP_HP_HSMIC_VERB ),SND_PCI_QUIRK (0x103c ,0x873e ,"HP" ,ALC671_FIXUP_HP_HEADSET_MIC2 ),SND_PCI_QUIRK (0x103c ,0x885f ,"HP 288 Pro G8" ,ALC671_FIXUP_HP_HEADSET_MIC2 ), SND_PCI_QUIRK(0x1043, 0x1080, "Asus UX501VW", ALC668_FIXUP_HEADSET_MODE),
sound/pci/hda/patch_via.c +2 -2
@@ -520,11 +520,11 @@ static int via_parse_auto_config(struct hda_codec *codec)if (err <0 )return err; - err =snd_hda_gen_parse_auto_config (codec, &spec->gen.autocfg); + err =auto_parse_beep (codec);if (err <0 )return err; - err =auto_parse_beep (codec); + err =snd_hda_gen_parse_auto_config (codec, &spec->gen.autocfg);if (err <0 )return err;