Linux 4.19.134
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.134 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/usb/dwc3.txt | 2 Makefile | 2 arch/alpha/defconfig | 1 arch/arm/boot/dts/socfpga.dtsi | 2 arch/arm/boot/dts/socfpga_arria10.dtsi | 2 arch/arm/configs/rpc_defconfig | 1 arch/arm/configs/s3c2410_defconfig | 1 arch/arm/mach-at91/pm_suspend.S | 4 arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 5 + arch/arm64/include/asm/alternative.h | 16 +-- arch/arm64/include/asm/debug-monitors.h | 2 arch/arm64/include/asm/syscall.h | 12 ++ arch/arm64/include/asm/thread_info.h | 1 arch/arm64/kernel/alternative.c | 16 --- arch/arm64/kernel/debug-monitors.c | 20 +++- arch/arm64/kernel/ptrace.c | 29 ++++-- arch/arm64/kernel/signal.c | 11 -- arch/arm64/kernel/syscall.c | 5 - arch/arm64/kernel/vmlinux.lds.S | 3 arch/ia64/configs/zx1_defconfig | 1 arch/m68k/configs/amiga_defconfig | 1 arch/m68k/configs/apollo_defconfig | 1 arch/m68k/configs/atari_defconfig | 1 arch/m68k/configs/bvme6000_defconfig | 1 arch/m68k/configs/hp300_defconfig | 1 arch/m68k/configs/mac_defconfig | 1 arch/m68k/configs/multi_defconfig | 1 arch/m68k/configs/mvme147_defconfig | 1 arch/m68k/configs/mvme16x_defconfig | 1 arch/m68k/configs/q40_defconfig | 1 arch/m68k/configs/sun3_defconfig | 1 arch/m68k/configs/sun3x_defconfig | 1 arch/m68k/kernel/setup_no.c | 3 arch/m68k/mm/mcfmmu.c | 2 arch/mips/configs/bigsur_defconfig | 1 arch/mips/configs/fuloong2e_defconfig | 1 arch/mips/configs/ip27_defconfig | 1 arch/mips/configs/ip32_defconfig | 1 arch/mips/configs/jazz_defconfig | 1 arch/mips/configs/malta_defconfig | 1 arch/mips/configs/malta_kvm_defconfig | 1 arch/mips/configs/malta_kvm_guest_defconfig | 1 arch/mips/configs/maltaup_xpa_defconfig | 1 arch/mips/configs/rm200_defconfig | 1 arch/mips/kernel/time.c | 13 -- arch/powerpc/configs/85xx-hw.config | 1 arch/powerpc/configs/amigaone_defconfig | 1 arch/powerpc/configs/chrp32_defconfig | 1 arch/powerpc/configs/g5_defconfig | 1 arch/powerpc/configs/maple_defconfig | 1 arch/powerpc/configs/pasemi_defconfig | 1 arch/powerpc/configs/pmac32_defconfig | 1 arch/powerpc/configs/powernv_defconfig | 1 arch/powerpc/configs/ppc64_defconfig | 1 arch/powerpc/configs/ppc64e_defconfig | 1 arch/powerpc/configs/ppc6xx_defconfig | 1 arch/powerpc/configs/pseries_defconfig | 1 arch/powerpc/configs/skiroot_defconfig | 1 arch/powerpc/mm/pkeys.c | 12 +- arch/riscv/include/asm/thread_info.h | 4 arch/sh/configs/sh03_defconfig | 1 arch/sparc/configs/sparc64_defconfig | 1 arch/x86/configs/i386_defconfig | 1 arch/x86/configs/x86_64_defconfig | 1 arch/x86/kernel/apic/vector.c | 22 +--- arch/x86/kernel/fpu/xstate.c | 2 drivers/acpi/video_detect.c | 19 ++++ drivers/base/regmap/regmap-debugfs.c | 52 ++++++----- drivers/block/zram/zram_drv.c | 3 drivers/char/tpm/tpm_tis_core.c | 2 drivers/char/virtio_console.c | 3 drivers/dma/fsl-edma.c | 7 + drivers/gpu/drm/exynos/exynos_drm_mic.c | 4 drivers/gpu/drm/msm/msm_submitqueue.c | 4 drivers/hid/hid-ids.h | 3 drivers/hid/hid-magicmouse.c | 6 + drivers/hid/hid-quirks.c | 5 - drivers/hwmon/emc2103.c | 2 drivers/hwtracing/intel_th/core.c | 21 +++- drivers/hwtracing/intel_th/pci.c | 15 +++ drivers/hwtracing/intel_th/sth.c | 4 drivers/i2c/busses/i2c-eg20t.c | 1 drivers/iio/accel/mma8452.c | 5 - drivers/iio/health/afe4403.c | 13 +- drivers/iio/health/afe4404.c | 8 + drivers/iio/humidity/hdc100x.c | 10 +- drivers/iio/humidity/hts221.h | 7 + drivers/iio/humidity/hts221_buffer.c | 9 + drivers/iio/magnetometer/ak8974.c | 29 +++--- drivers/iio/pressure/ms5611_core.c | 11 +- drivers/iio/pressure/zpa2326.c | 4 drivers/input/serio/i8042-x86ia64io.h | 7 + drivers/input/touchscreen/mms114.c | 17 +++ drivers/misc/atmel-ssc.c | 24 ++--- drivers/misc/mei/bus.c | 3 drivers/mmc/host/sdhci.c | 2 drivers/mtd/nand/raw/brcmnand/brcmnand.c | 5 - drivers/mtd/nand/raw/marvell_nand.c | 25 +++-- drivers/mtd/nand/raw/nand_timings.c | 5 - drivers/mtd/nand/raw/oxnas_nand.c | 24 +++-- drivers/net/dsa/bcm_sf2.c | 2 drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c | 19 ++-- drivers/net/phy/sfp-bus.c | 79 ++++++++++++++++ drivers/net/usb/qmi_wwan.c | 1 drivers/of/of_mdio.c | 9 + drivers/phy/allwinner/phy-sun4i-usb.c | 5 - drivers/scsi/Kconfig | 9 - drivers/scsi/sr_vendor.c | 8 - drivers/slimbus/core.c | 1 drivers/soc/qcom/rpmh-rsc.c | 98 +++++++++++++-------- drivers/soc/qcom/rpmh.c | 56 +++++------- drivers/spi/spi-fsl-dspi.c | 17 --- drivers/spi/spi-sprd-adi.c | 2 drivers/spi/spi-sun6i.c | 14 +-- drivers/staging/comedi/drivers/addi_apci_1500.c | 10 +- drivers/thermal/cpu_cooling.c | 6 - drivers/thermal/mtk_thermal.c | 6 - drivers/tty/serial/mxs-auart.c | 12 +- drivers/uio/uio_pdrv_genirq.c | 2 drivers/usb/c67x00/c67x00-sched.c | 2 drivers/usb/chipidea/core.c | 24 +++++ drivers/usb/dwc2/platform.c | 3 drivers/usb/gadget/function/f_uac1_legacy.c | 2 drivers/usb/gadget/udc/atmel_usba_udc.c | 2 drivers/usb/host/ehci-platform.c | 4 drivers/usb/host/ohci-platform.c | 5 - drivers/usb/host/xhci-plat.c | 10 -- drivers/usb/serial/ch341.c | 1 drivers/usb/serial/cypress_m8.c | 2 drivers/usb/serial/cypress_m8.h | 3 drivers/usb/serial/iuu_phoenix.c | 8 + drivers/usb/serial/option.c | 6 + drivers/virt/vboxguest/vboxguest_core.c | 6 - drivers/virt/vboxguest/vboxguest_core.h | 15 +++ drivers/virt/vboxguest/vboxguest_linux.c | 3 drivers/virt/vboxguest/vmmdev.h | 2 fs/fuse/file.c | 12 ++ fs/gfs2/ops_fstype.c | 12 ++ fs/overlayfs/export.c | 2 fs/overlayfs/file.c | 10 +- fs/overlayfs/super.c | 11 ++ include/linux/cgroup-defs.h | 8 + include/linux/cgroup.h | 4 include/linux/if_vlan.h | 29 ++++-- include/linux/printk.h | 5 - include/net/dst.h | 10 +- include/net/genetlink.h | 8 - include/net/inet_ecn.h | 23 +++- include/net/pkt_sched.h | 11 -- include/trace/events/rxrpc.h | 2 include/uapi/linux/vboxguest.h | 4 init/main.c | 1 kernel/cgroup/cgroup.c | 29 +++--- kernel/irq/manage.c | 37 +++++++ kernel/printk/internal.h | 5 + kernel/printk/printk.c | 34 +++++++ kernel/printk/printk_safe.c | 11 -- kernel/sched/core.c | 2 kernel/sched/fair.c | 10 +- kernel/time/timer.c | 21 +++- net/ceph/osd_client.c | 1 net/core/filter.c | 8 - net/core/sock.c | 2 net/ipv4/ping.c | 3 net/ipv4/tcp.c | 15 +-- net/ipv4/tcp_cong.c | 2 net/ipv4/tcp_input.c | 2 net/ipv4/tcp_ipv4.c | 15 ++- net/ipv4/tcp_output.c | 8 + net/l2tp/l2tp_core.c | 5 - net/llc/af_llc.c | 10 +- net/netlink/genetlink.c | 49 ---------- net/sched/act_connmark.c | 9 + net/sched/act_csum.c | 2 net/sched/act_skbedit.c | 2 net/sched/cls_api.c | 2 net/sched/cls_flow.c | 8 - net/sched/cls_flower.c | 2 net/sched/em_ipset.c | 2 net/sched/em_meta.c | 2 net/sched/sch_atm.c | 8 - net/sched/sch_cake.c | 4 net/sched/sch_dsmark.c | 6 - net/sched/sch_teql.c | 2 security/apparmor/match.c | 5 + sound/pci/hda/patch_realtek.c | 6 - sound/usb/card.c | 12 +- sound/usb/line6/capture.c | 2 sound/usb/line6/driver.c | 2 sound/usb/line6/playback.c | 2 sound/usb/midi.c | 17 ++- sound/usb/quirks.c | 36 +++++++ sound/usb/quirks.h | 2 tools/perf/util/srcline.c | 16 +++ tools/perf/util/stat.c | 6 - 195 files changed, 1032 insertions(+), 590 deletions(-)
AceLan Kao (2):
net: usb: qmi_wwan: add support for Quectel EG95 LTE modem
USB: serial: option: add Quectel EG95 LTE modem
Alexander Lobakin (1):
virtio: virtio_console: add missing MODULE_DEVICE_TABLE() for rproc serial
Alexander Shishkin (4):
intel_th: pci: Add Jasper Lake CPU support
intel_th: pci: Add Tiger Lake PCH-H support
intel_th: pci: Add Emmitsburg PCH support
intel_th: Fix a NULL dereference when hub driver is not loaded
Alexander Usyskin (1):
mei: bus: don't clean driver pointer
Amir Goldstein (2):
ovl: relax WARN_ON() when decoding lower directory file handle
ovl: fix unneeded call to ovl_change_flags()
Andreas Schwab (1):
riscv: use 16KB kernel stack on 64-bit
Andy Shevchenko (1):
i2c: eg20t: Load module automatically if ID matches
Aneesh Kumar K.V (1):
powerpc/book3s64/pkeys: Fix pkey_access_permitted() for execute disable pkey
Angelo Dureghello (2):
m68k: mm: fix node memblock init
spi: fix initial SPI_SR value in spi-fsl-dspi
Ard Biesheuvel (2):
arm64/alternatives: use subsections for replacement sequences arm64/alternatives: don't patch up internal branches
Bernard Zhao (1):
drm/msm: fix potential memleak in error branch
Bob Peterson (1):
gfs2: read-only mounts should grab the sd_freeze_gl glock
Changbin Du (1):
perf: Make perf able to build with latest libbfd
Chirantan Ekbote (1):
fuse: Fix parameter for FS_IOC_{GET,SET}FLAGS
Chris Wulff (1):
ALSA: usb-audio: Create a registration quirk for Kingston HyperX Amp (0951:16d8)
Christoffer Nielsen (1):
ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Flight S
Christoph Paasch (1):
tcp: make sure listeners don't initialize congestion-control state
Chuhong Yuan (2):
iio: mma8452: Add missed iio_device_unregister() call in mma8452_probe()
serial: mxs-auart: add missed iounmap() in probe failure and remove
Claudiu Beznea (1):
ARM: at91: pm: add quirk for sam9x60's ulp1
Colin Ian King (1):
phy: sun4i-usb: fix dereference of pointer phy0 before it is null checked
Cong Wang (3):
net_sched: fix a memory leak in atm_tc_init()
cgroup: fix cgroup_sk_alloc() for sk_clone_lock()
cgroup: Fix sock_cgroup_data on big-endian.
Dan Carpenter (1):
staging: comedi: verify array index is correct before using it
David Howells (1):
rxrpc: Fix trace string
David Pedersen (1):
Input: i8042 - add Lenovo XiaoXin Air 12 to i8042 nomux list
Diego Elio Pettenò (1):
scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled
Dinghao Liu (1):
iio: magnetometer: ak8974: Fix runtime PM imbalance on error
Dmitry Torokhov (1):
HID: magicmouse: do not set up autorepeat
Douglas Anderson (1):
regmap: debugfs: Don't sleep while atomic for fast_io regmaps
Emmanuel Pescosta (1):
ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Alpha S
Enric Balletbo i Serra (1):
Revert "thermal: mediatek: fix register index error"
Eric Dumazet (6):
llc: make sure applications use ARPHRD_ETHER
tcp: fix SO_RCVLOWAT possible hangs under high mem pressure
tcp: md5: add missing memory barriers in tcp_md5_do_add()/tcp_md5_hash_key()
tcp: md5: do not send silly options in SYNCOOKIES
tcp: md5: refine tcp_md5_do_add()/tcp_md5_hash_key() barriers
tcp: md5: allow changing MD5 keys in all socket states
Esben Haabendal (1):
uio_pdrv_genirq: fix use without device tree and no interrupt
Finley Xiao (1):
thermal/drivers/cpufreq_cooling: Fix wrong frequency converted from power
Florian Fainelli (2):
net: dsa: bcm_sf2: Fix node reference count
of: of_mdio: Correct loop scanning logic
Frederic Weisbecker (2):
timer: Prevent base->clk from moving backward
timer: Fix wheel index calculation on last level
Greg Kroah-Hartman (1):
Linux 4.19.134
Haibo Chen (1):
mmc: sdhci: do not enable card detect interrupt for gpio cd type
Hans de Goede (4):
HID: quirks: Remove ITE 8595 entry from hid_have_special_driver
ACPI: video: Use native backlight on Acer Aspire 5783z
virt: vbox: Fix VBGL_IOCTL_VMMDEV_REQUEST_BIG and _LOG req numbers to match upstream
virt: vbox: Fix guest capabilities mask check
Huacai Chen (1):
MIPS: Fix build for LTS kernel caused by backporting lpj adjustment
Igor Moura (1):
USB: serial: ch341: add new Product ID for CH340
Ilya Dryomov (1):
libceph: don't omit recovery_deletes in target_copy()
James Hilliard (2):
HID: quirks: Ignore Simply Automated UPB PIM
USB: serial: cypress_m8: enable Simply Automated UPB PIM
Jerome Brunet (1):
arm64: dts: meson: add missing gxl rng clock
Jin Yao (1):
perf stat: Zero all the 'ena' and 'run' array slot stats for interval mode
Johan Hovold (1):
USB: serial: iuu_phoenix: fix memory corruption
John Johansen (1):
apparmor: ensure that dfa state tables have entries
Jonathan Cameron (6):
iio:magnetometer:ak8974: Fix alignment and data leak issues iio:humidity:hdc100x Fix alignment and data leak issues iio:humidity:hts221 Fix alignment and data leak issues iio:pressure:ms5611 Fix buffer element alignment iio:health:afe4403 Fix timestamp alignment and prevent data leak. iio:health:afe4404 Fix timestamp alignment and prevent data leak.
Jörgen Storvist (1):
USB: serial: option: add GosunCn GM500 series
Kailang Yang (2):
ALSA: hda/realtek - change to suitable link model for ASUS platform
ALSA: hda/realtek - Enable Speaker for ASUS UX533 and UX534
Kevin Buettner (1):
copy_xstate_to_kernel: Fix typo which caused GDB regression
Krzysztof Kozlowski (3):
spi: spi-fsl-dspi: Fix lockup if device is shutdown during SPI transfer
ARM: dts: socfpga: Align L2 cache-controller nodename with dtschema
dmaengine: fsl-edma: Fix NULL pointer exception in fsl_edma_tx_handler
Lingling Xu (1):
spi: sprd: switch the sequence of setting WDG_LOAD_LOW and _HIGH
Marc Kleine-Budde (1):
spi: spi-sun6i: sun6i_spi_transfer_one(): fix setting of clock rate
Martin Varghese (1):
net: Added pointer check for dst->ops->neigh_lookup in dst_neigh_lookup_skb
Mathieu Desnoyers (1):
sched: Fix unreliable rseq cpu_id for new tasks
Maulik Shah (3):
soc: qcom: rpmh: Update dirty flag only when data changes
soc: qcom: rpmh: Invalidate SLEEP and WAKE TCSes before flushing new data
soc: qcom: rpmh-rsc: Allow using free WAKE TCS for active request
Michał Mirosław (2):
usb: gadget: udc: atmel: fix uninitialized read in debug printk
misc: atmel-ssc: lock with mutex instead of spinlock
Mike Rapoport (1):
m68k: nommu: register start of the memory with memblock
Minas Harutyunyan (1):
usb: dwc2: Fix shutdown callback in platform
Miquel Raynal (6):
mtd: rawnand: marvell: Use nand_cleanup() when the device is not yet registered
mtd: rawnand: marvell: Fix probe error path
mtd: rawnand: timings: Fix default tR_max and tCCS_min timings
mtd: rawnand: oxnas: Keep track of registered devices
mtd: rawnand: oxnas: Unregister all devices on error
mtd: rawnand: oxnas: Release all devices in the _remove() path
Navid Emamdoost (2):
drm/exynos: fix ref count leak in mic_pre_enable
iio: pressure: zpa2326: handle pm_runtime_get_sync failure
Neil Armstrong (1):
doc: dt: bindings: usb: dwc3: Update entries for disabling SS instances in park mode
Paul Menzel (1):
ACPI: video: Use native backlight on Acer TravelMate 5735Z
Peter Chen (1):
usb: chipidea: core: add wakeup support for extcon
Raju P.L.S.S.S.N (1):
soc: qcom: rpmh-rsc: Clear active mode configuration for wake TCS
Russell King (2):
net: sfp: add support for module quirks
net: sfp: add some quirks for GPON modules
Sabrina Dubroca (1):
ipv4: fill fl4_icmp_{type,code} in ping_v4_sendmsg
Saravana Kannan (1):
slimbus: core: Fix mismatch in of_node_get/put
Sasha Levin (3):
Revert "usb/ohci-platform: Fix a warning when hibernating" Revert "usb/xhci-plat: Set PM runtime as active on resume" Revert "usb/ehci-platform: Set PM runtime as active on resume"
Sean Tranchetti (1):
genetlink: remove genl_bind
Sebastian Parschauer (1):
HID: quirks: Always poll Obins Anne Pro 2 keyboard
Sergey Senozhatsky (1):
printk: queue wake_up_klogd irq_work only if per-CPU areas are ready
Stephan Gerhold (1):
Input: mms114 - add extra compatible for mms345l
Taehee Yoo (1):
net: rmnet: fix lower interface leak
Takashi Iwai (4):
ALSA: usb-audio: Rewrite registration quirk handling
ALSA: line6: Perform sanity check for each URB creation
ALSA: line6: Sync the pending work cancel at disconnection
ALSA: usb-audio: Fix race against the error recovery URB submission
Thomas Gleixner (1):
genirq/affinity: Handle affinity setting on inactive interrupts correctly
Toke Høiland-Jørgensen (2):
sched: consistently handle layer3 header accesses in the presence of VLANs
vlan: consolidate VLAN parsing code and limit max parsing depth
Tom Rix (1):
USB: c67x00: fix use after free in c67x00_giveback_urb
Vasily Averin (1):
tpm_tis: extra chip->ops check on error path in tpm_tis_core_init
Vincent Guittot (1):
sched/fair: handle case of task_h_load() returning 0
Vishwas M (1):
hwmon: (emc2103) fix unable to change fan pwm1_enable attribute
Wade Mealing (1):
Revert "zram: convert remaining CLASS_ATTR() to CLASS_ATTR_RO()"
Will Deacon (3):
arm64: ptrace: Override SPSR.SS when single-stepping is enabled
arm64: ptrace: Consistently use pseudo-singlestep exceptions
arm64: compat: Ensure upper 32 bits of x0 are zero on syscall return
Xin Long (1):
l2tp: remove skb_dst_set() from l2tp_xmit_skb()
Zhang Qiang (1):
usb: gadget: function: fix missing spinlock in f_uac1_legacy
youngjun (1):
ovl: inode reference leak in ovl_is_inuse true case.
Álvaro Fernández Rojas (1):
mtd: rawnand: brcmnand: fix CS0 layout
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/usb/dwc3.txt +2 -0
@@ -68,6 +68,8 @@ Optional properties: from P0 to P1/P2/P3 without delay. - snps,dis-tx-ipgap-linecheck-quirk: when set, disable u2mac linestate check during HS transmit. + - snps,parkmode-disable-ss-quirk: when set, all SuperSpeed bus instances in + park mode are disabled. - snps,dis_metastability_quirk: when set, disable metastability workaround. CAUTION: use only if you are absolutely sure of it. - snps,is-utmi-l1-suspend: true when DWC3 asserts output signal
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 133 +SUBLEVEL = 134 EXTRAVERSION = NAME = "People's Front"
arch/alpha/defconfig +0 -1
@@ -36,7 +36,6 @@ CONFIG_BLK_DEV_CY82C693=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_SCSI_AIC7XXX=m CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 # CONFIG_AIC7XXX_DEBUG_ENABLE is not set
arch/arm/boot/dts/socfpga.dtsi +1 -1
@@ -710,7 +710,7 @@ }; }; - L2: l2-cache@fffef000 { + L2: cache-controller@fffef000 { compatible = "arm,pl310-cache"; reg = <0xfffef000 0x1000>; interrupts = <0 38 0x04>;
arch/arm/boot/dts/socfpga_arria10.dtsi +1 -1
@@ -618,7 +618,7 @@ reg = <0xffcfb100 0x80>; }; - L2: l2-cache@fffff000 { + L2: cache-controller@fffff000 { compatible = "arm,pl310-cache"; reg = <0xfffff000 0x1000>; interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
arch/arm/configs/rpc_defconfig +0 -1
@@ -32,7 +32,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y
arch/arm/configs/s3c2410_defconfig +0 -1
@@ -206,7 +206,6 @@ CONFIG_EEPROM_AT24=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_CHR_DEV_SCH=m CONFIG_SCSI_CONSTANTS=y
arch/arm/mach-at91/pm_suspend.S +4 -0
@@ -220,6 +220,10 @@ ENDPROC(at91_backup_mode) orr tmp1, tmp1, #AT91_PMC_KEY str tmp1, [pmc, #AT91_CKGR_MOR] + /* Quirk for SAM9X60's PMC */ + nop + nop + wait_mckrdy /* Enable the crystal oscillator */
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi +5 -0
@@ -266,6 +266,11 @@ }; }; +&hwrng { + clocks = <&clkc CLKID_RNG0>; + clock-names = "core"; +}; + &i2c_A { clocks = <&clkc CLKID_I2C>; };
arch/arm64/include/asm/alternative.h +8 -8
@@ -73,11 +73,11 @@ static inline void apply_alternatives_module(void *start, size_t length) { }".pushsection .altinstructions,\"a\"\n" \ ALTINSTR_ENTRY(feature) \".popsection\n" \ -".pushsection .altinstr_replacement, \"a\"\n" \ +".subsection 1\n" \"663:\n\t" \ newinstr"\n" \"664:\n\t" \ -".popsection\n\t" \ +".previous\n\t" \".org . - (664b-663b) + (662b-661b)\n\t" \".org . - (662b-661b) + (664b-663b)\n" \".endif\n"
@@ -117,9 +117,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { } 662: .pushsection .altinstructions, "a" altinstruction_entry 661b, 663f, \cap, 662b-661b, 664f-663f .popsection - .pushsection .altinstr_replacement,"ax" + .subsection 1 663: \insn2 -664: .popsection +664: .previous .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b) .endif
@@ -160,7 +160,7 @@ static inline void apply_alternatives_module(void *start, size_t length) { } .pushsection .altinstructions, "a" altinstruction_entry 663f, 661f, \cap, 664f-663f, 662f-661f .popsection - .pushsection .altinstr_replacement, "ax" + .subsection 1 .align 2 /* So GAS knows label 661 is suitably aligned */ 661: .endm
@@ -179,9 +179,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { } .macro alternative_else 662: .if .Lasm_alt_mode==0 - .pushsection .altinstr_replacement,"ax" + .subsection 1 .else - .popsection + .previous .endif 663: .endm
@@ -192,7 +192,7 @@ static inline void apply_alternatives_module(void *start, size_t length) { } .macro alternative_endif 664: .if .Lasm_alt_mode==0 - .popsection + .previous .endif .org . - (664b-663b) + (662b-661b) .org . - (662b-661b) + (664b-663b)
arch/arm64/include/asm/debug-monitors.h +2 -0
@@ -119,6 +119,8 @@ void disable_debug_monitors(enum dbg_active_el el);void user_rewind_single_step (struct task_struct *task);void user_fastforward_single_step (struct task_struct *task); +void user_regs_reset_single_step (struct user_pt_regs *regs, +struct task_struct *task);void kernel_enable_single_step (struct pt_regs *regs);void kernel_disable_single_step (void );
arch/arm64/include/asm/syscall.h +11 -1
@@ -45,6 +45,10 @@ static inline long syscall_get_error(struct task_struct *task, struct pt_regs *regs) {unsigned long error = regs->regs[0 ]; + +if (is_compat_thread (task_thread_info (task))) + error =sign_extend64 (error,31 ); +return IS_ERR_VALUE (error) ? error :0 ; }
@@ -58,7 +62,13 @@ static inline void syscall_set_return_value(struct task_struct *task,struct pt_regs *regs, int error, long val) { - regs->regs[0] = (long) error ? error : val; + if (error) + val = error; + +if (is_compat_thread (task_thread_info (task))) + val =lower_32_bits (val); + + regs->regs[0 ] = val; }#define SYSCALL_MAX_ARGS 6
arch/arm64/include/asm/thread_info.h +1 -0
@@ -101,6 +101,7 @@ void arch_release_task_struct(struct task_struct *tsk);#define _TIF_SECCOMP (1 << TIF_SECCOMP)#define _TIF_UPROBE (1 << TIF_UPROBE)#define _TIF_FSCHECK (1 << TIF_FSCHECK) +#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)#define _TIF_32BIT (1 << TIF_32BIT)#define _TIF_SVE (1 << TIF_SVE)
arch/arm64/kernel/alternative.c +2 -14
@@ -44,20 +44,8 @@ struct alt_region {*/ static bool branch_insn_requires_update (struct alt_instr *alt,unsigned long pc) { -unsigned long replptr; - -if (kernel_text_address (pc)) -return true; - - replptr = (unsigned long )ALT_REPL_PTR (alt); -if (pc >= replptr && pc <= (replptr + alt->alt_len)) -return false; - -/* -* Branching into *another* alternate sequence is doomed, and -* we're not even trying to fix it up. -*/ -BUG (); +unsigned long replptr = (unsigned long )ALT_REPL_PTR (alt); +return !(pc >= replptr && pc <= (replptr + alt->alt_len)); }#define align_down (x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
arch/arm64/kernel/debug-monitors.c +16 -4
@@ -152,17 +152,20 @@ postcore_initcall(debug_monitors_init);/* * Single step API and exception handling. */ -static void set_regs_spsr_ss (struct pt_regs *regs) +static void set_user_regs_spsr_ss (struct user_pt_regs *regs) { regs->pstate |=DBG_SPSR_SS ; } -NOKPROBE_SYMBOL (set_regs_spsr_ss); +NOKPROBE_SYMBOL (set_user_regs_spsr_ss); -static void clear_regs_spsr_ss (struct pt_regs *regs) +static void clear_user_regs_spsr_ss (struct user_pt_regs *regs) { regs->pstate &= ~DBG_SPSR_SS ; } -NOKPROBE_SYMBOL (clear_regs_spsr_ss); +NOKPROBE_SYMBOL (clear_user_regs_spsr_ss); + +#define set_regs_spsr_ss (r) set_user_regs_spsr_ss(&(r)->user_regs) +#define clear_regs_spsr_ss (r) clear_user_regs_spsr_ss(&(r)->user_regs)/* EL1 Single Step Handler hooks */ static LIST_HEAD (step_hook);
@@ -400,6 +403,15 @@ void user_fastforward_single_step(struct task_struct *task)clear_regs_spsr_ss (task_pt_regs (task)); } +void user_regs_reset_single_step (struct user_pt_regs *regs, +struct task_struct *task) +{ +if (test_tsk_thread_flag (task,TIF_SINGLESTEP )) +set_user_regs_spsr_ss (regs); +else +clear_user_regs_spsr_ss (regs); +} +/* Kernel API */ void kernel_enable_single_step (struct pt_regs *regs) {
arch/arm64/kernel/ptrace.c +21 -8
@@ -1647,12 +1647,23 @@ static void tracehook_report_syscall(struct pt_regs *regs, saved_reg = regs->regs[regno]; regs->regs[regno] = dir; -if (dir ==PTRACE_SYSCALL_EXIT ) +if (dir ==PTRACE_SYSCALL_ENTER ) { +if (tracehook_report_syscall_entry (regs)) +forget_syscall (regs); + regs->regs[regno] = saved_reg; + }else if (!test_thread_flag (TIF_SINGLESTEP )) {tracehook_report_syscall_exit (regs,0 ); -else if (tracehook_report_syscall_entry (regs)) -forget_syscall (regs); + regs->regs[regno] = saved_reg; + }else { + regs->regs[regno] = saved_reg; - regs->regs[regno] = saved_reg; +/* +* Signal a pseudo-step exception since we are stepping but +* tracer modifications to the registers may have rewound the +* state machine. +*/ +tracehook_report_syscall_exit (regs,1 ); + } }int syscall_trace_enter (struct pt_regs *regs)
@@ -1675,12 +1686,14 @@ int syscall_trace_enter(struct pt_regs *regs)void syscall_trace_exit (struct pt_regs *regs) { +unsigned long flags =READ_ONCE (current_thread_info ()->flags); +audit_syscall_exit (regs); -if (test_thread_flag (TIF_SYSCALL_TRACEPOINT )) +if (flags & _TIF_SYSCALL_TRACEPOINT)trace_sys_exit (regs,regs_return_value (regs)); -if (test_thread_flag (TIF_SYSCALL_TRACE )) +if (flags & (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP))tracehook_report_syscall (regs,PTRACE_SYSCALL_EXIT );rseq_syscall (regs);
@@ -1758,8 +1771,8 @@ static int valid_native_regs(struct user_pt_regs *regs)*/ int valid_user_regs (struct user_pt_regs *regs,struct task_struct *task) { -if (!test_tsk_thread_flag (task,TIF_SINGLESTEP )) - regs->pstate &= ~DBG_SPSR_SS ; +/* https://lore.kernel.org/lkml/20191118131525.GA4180@willie-the-truck */ +user_regs_reset_single_step (regs, task);if (is_compat_thread (task_thread_info (task)))return valid_compat_regs (regs);
arch/arm64/kernel/signal.c +2 -9
@@ -798,7 +798,6 @@ static void setup_restart_syscall(struct pt_regs *regs)*/ static void handle_signal (struct ksignal *ksig,struct pt_regs *regs) { -struct task_struct *tsk = current;sigset_t *oldset =sigmask_to_save ();int usig = ksig->sig;int ret;
@@ -822,14 +821,8 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)*/ ret |= !valid_user_regs (®s->user_regs, current); -/* -* Fast forward the stepping logic so we step into the signal -* handler. -*/ -if (!ret) -user_fastforward_single_step (tsk); - -signal_setup_done (ret, ksig,0 ); +/* Step into the signal handler if we are stepping */ +signal_setup_done (ret, ksig,test_thread_flag (TIF_SINGLESTEP )); }/*
arch/arm64/kernel/syscall.c +4 -1
@@ -50,6 +50,9 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno, ret =do_ni_syscall (regs, scno); } +if (is_compat_task ()) + ret =lower_32_bits (ret); + regs->regs[0 ] = ret; }
@@ -121,7 +124,7 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,if (!has_syscall_work (flags) && !IS_ENABLED (CONFIG_DEBUG_RSEQ )) {local_daif_mask (); flags =current_thread_info ()->flags; -if (!has_syscall_work (flags)) { +if (!has_syscall_work (flags) && !(flags & _TIF_SINGLESTEP)) {/* * We're off to userspace, where interrupts are * always enabled after we restore the flags from
arch/arm64/kernel/vmlinux.lds.S +0 -3
@@ -154,9 +154,6 @@ SECTIONS *(.altinstructions) __alt_instructions_end = .; } - .altinstr_replacement : { - *(.altinstr_replacement) - } . = ALIGN(PAGE_SIZE); __inittext_end = .;
arch/ia64/configs/zx1_defconfig +0 -1
@@ -36,7 +36,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_CHR_DEV_OSST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y
arch/m68k/configs/amiga_defconfig +0 -1
@@ -341,7 +341,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/apollo_defconfig +0 -1
@@ -328,7 +328,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/atari_defconfig +0 -1
@@ -336,7 +336,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/bvme6000_defconfig +0 -1
@@ -326,7 +326,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/hp300_defconfig +0 -1
@@ -328,7 +328,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/mac_defconfig +0 -1
@@ -335,7 +335,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/multi_defconfig +0 -1
@@ -358,7 +358,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/mvme147_defconfig +0 -1
@@ -325,7 +325,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/mvme16x_defconfig +0 -1
@@ -326,7 +326,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/q40_defconfig +0 -1
@@ -333,7 +333,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/sun3_defconfig +0 -1
@@ -323,7 +323,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/configs/sun3x_defconfig +0 -1
@@ -323,7 +323,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SAS_ATTRS=m
arch/m68k/kernel/setup_no.c +2 -1
@@ -140,7 +140,8 @@ void __init setup_arch(char **cmdline_p)pr_debug ("MEMORY -> ROMFS=0x%p-0x%06lx MEM=0x%06lx-0x%06lx\n " , __bss_stop, memory_start, memory_start, memory_end); -memblock_add (memory_start, memory_end - memory_start); +memblock_add (_rambase, memory_end - _rambase); +memblock_reserve (_rambase, memory_start - _rambase);/* Keep a copy of command line */ *cmdline_p = &command_line[0 ];
arch/m68k/mm/mcfmmu.c +1 -1
@@ -160,7 +160,7 @@ void __init cf_bootmem_alloc(void) m68k_memory[0 ].addr = _rambase; m68k_memory[0 ].size = _ramend - _rambase; -memblock_add (m68k_memory[0 ].addr, m68k_memory[0 ].size); +memblock_add_node (m68k_memory[0 ].addr, m68k_memory[0 ].size,0 );/* compute total pages in system */ num_pages =PFN_DOWN (_ramend - _rambase);
arch/mips/configs/bigsur_defconfig +0 -1
@@ -123,7 +123,6 @@ CONFIG_BLK_DEV_TC86C001=m CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_CHR_DEV_SCH=m CONFIG_ATA=y
arch/mips/configs/fuloong2e_defconfig +0 -1
@@ -111,7 +111,6 @@ CONFIG_CDROM_PKTCDVD=m CONFIG_ATA_OVER_ETH=m CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y # CONFIG_SCSI_LOWLEVEL is not set
arch/mips/configs/ip27_defconfig +0 -1
@@ -107,7 +107,6 @@ CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_CHR_DEV_SCH=m CONFIG_SCSI_CONSTANTS=y
arch/mips/configs/ip32_defconfig +0 -1
@@ -54,7 +54,6 @@ CONFIG_RAID_ATTRS=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y
arch/mips/configs/jazz_defconfig +0 -1
@@ -206,7 +206,6 @@ CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SCAN_ASYNC=y CONFIG_SCSI_FC_ATTRS=y
arch/mips/configs/malta_defconfig +0 -1
@@ -245,7 +245,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y
arch/mips/configs/malta_kvm_defconfig +0 -1
@@ -252,7 +252,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y
arch/mips/configs/malta_kvm_guest_defconfig +0 -1
@@ -254,7 +254,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y
arch/mips/configs/maltaup_xpa_defconfig +0 -1
@@ -250,7 +250,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y
arch/mips/configs/rm200_defconfig +0 -1
@@ -218,7 +218,6 @@ CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SCAN_ASYNC=y CONFIG_SCSI_FC_ATTRS=y
arch/mips/kernel/time.c +4 -9
@@ -40,10 +40,8 @@ static unsigned long glb_lpj_ref_freq;static int cpufreq_callback (struct notifier_block *nb,unsigned long val,void *data) { -struct cpufreq_freqs *freq = data; -struct cpumask *cpus = freq->policy->cpus; -unsigned long lpj;int cpu; +struct cpufreq_freqs *freq = data;/* * Skip lpj numbers adjustment if the CPU-freq transition is safe for
@@ -64,6 +62,7 @@ static int cpufreq_callback(struct notifier_block *nb, } } + cpu = freq->cpu;/* * Adjust global lpj variable and per-CPU udelay_val number in * accordance with the new CPU frequency.
@@ -74,12 +73,8 @@ static int cpufreq_callback(struct notifier_block *nb, glb_lpj_ref_freq, freq->new); -for_each_cpu (cpu, cpus) { - lpj =cpufreq_scale (per_cpu (pcp_lpj_ref, cpu), -per_cpu (pcp_lpj_ref_freq, cpu), - freq->new); - cpu_data[cpu].udelay_val = (unsigned int )lpj; - } + cpu_data[cpu].udelay_val =cpufreq_scale (per_cpu (pcp_lpj_ref, cpu), +per_cpu (pcp_lpj_ref_freq, cpu), freq->new); }return NOTIFY_OK ;
arch/powerpc/configs/85xx-hw.config +0 -1
@@ -2,7 +2,6 @@ CONFIG_AQUANTIA_PHY=y CONFIG_AT803X_PHY=y CONFIG_ATA=y CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_BLK_DEV_SR=y CONFIG_BROADCOM_PHY=y CONFIG_C293_PCIE=y
arch/powerpc/configs/amigaone_defconfig +0 -1
@@ -48,7 +48,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SYM53C8XX_2=y
arch/powerpc/configs/chrp32_defconfig +0 -1
@@ -46,7 +46,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SYM53C8XX_2=y
arch/powerpc/configs/g5_defconfig +0 -1
@@ -63,7 +63,6 @@ CONFIG_CDROM_PKTCDVD=m CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SPI_ATTRS=y
arch/powerpc/configs/maple_defconfig +0 -1
@@ -42,7 +42,6 @@ CONFIG_BLK_DEV_RAM_SIZE=8192 # CONFIG_SCSI_PROC_FS is not set CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_IPR=y CONFIG_ATA=y
arch/powerpc/configs/pasemi_defconfig +0 -1
@@ -61,7 +61,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_CHR_DEV_OSST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_CHR_DEV_SCH=y CONFIG_SCSI_CONSTANTS=y
arch/powerpc/configs/pmac32_defconfig +0 -1
@@ -121,7 +121,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_FC_ATTRS=y
arch/powerpc/configs/powernv_defconfig +0 -1
@@ -109,7 +109,6 @@ CONFIG_BLK_DEV_NVME=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SCAN_ASYNC=y
arch/powerpc/configs/ppc64_defconfig +0 -1
@@ -93,7 +93,6 @@ CONFIG_VIRTIO_BLK=m CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_FC_ATTRS=y
arch/powerpc/configs/ppc64e_defconfig +0 -1
@@ -61,7 +61,6 @@ CONFIG_BLK_DEV_RAM_SIZE=65536 CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_FC_ATTRS=y
arch/powerpc/configs/ppc6xx_defconfig +0 -1
@@ -374,7 +374,6 @@ CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_CHR_DEV_OSST=m CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_CHR_DEV_SCH=m CONFIG_SCSI_ENCLOSURE=m
arch/powerpc/configs/pseries_defconfig +0 -1
@@ -97,7 +97,6 @@ CONFIG_VIRTIO_BLK=m CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_FC_ATTRS=y
arch/powerpc/configs/skiroot_defconfig +0 -1
@@ -77,7 +77,6 @@ CONFIG_EEPROM_AT24=y # CONFIG_CXL is not set CONFIG_BLK_DEV_SD=m CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SCAN_ASYNC=y
arch/powerpc/mm/pkeys.c +7 -5
@@ -365,12 +365,14 @@ static bool pkey_access_permitted(int pkey, bool write, bool execute)return true; pkey_shift =pkeyshift (pkey); -if (execute && !(read_iamr () & (IAMR_EX_BIT << pkey_shift))) -return true; +if (execute) +return !(read_iamr () & (IAMR_EX_BIT << pkey_shift)); + + amr =read_amr (); +if (write) +return !(amr & (AMR_WR_BIT << pkey_shift)); - amr =read_amr ();/* Delay reading amr until absolutely needed */ -return ((!write && !(amr & (AMR_RD_BIT << pkey_shift))) || - (write && !(amr & (AMR_WR_BIT << pkey_shift)))); +return !(amr & (AMR_RD_BIT << pkey_shift)); }bool arch_pte_access_permitted (u64 pte,bool write,bool execute)
arch/riscv/include/asm/thread_info.h +4 -0
@@ -20,7 +20,11 @@#include <linux/const.h> /* thread information allocation */ +#ifdef CONFIG_64BIT +#define THREAD_SIZE_ORDER (2) +#else #define THREAD_SIZE_ORDER (1) +#endif #define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)#ifndef __ASSEMBLY__
arch/sh/configs/sh03_defconfig +0 -1
@@ -47,7 +47,6 @@ CONFIG_BLK_DEV_IDETAPE=m CONFIG_SCSI=m CONFIG_BLK_DEV_SD=m CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_NETDEVICES=y CONFIG_NET_ETHERNET=y
arch/sparc/configs/sparc64_defconfig +0 -1
@@ -74,7 +74,6 @@ CONFIG_RAID_ATTRS=m CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=m -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=m CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y
arch/x86/configs/i386_defconfig +0 -1
@@ -149,7 +149,6 @@ CONFIG_CONNECTOR=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SPI_ATTRS=y
arch/x86/configs/x86_64_defconfig +0 -1
@@ -148,7 +148,6 @@ CONFIG_CONNECTOR=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SPI_ATTRS=y
arch/x86/kernel/apic/vector.c +5 -17
@@ -448,12 +448,10 @@ static int x86_vector_activate(struct irq_domain *dom, struct irq_data *irqd,trace_vector_activate (irqd->irq, apicd->is_managed, apicd->can_reserve, reserve); -/* Nothing to do for fixed assigned vectors */ -if (!apicd->can_reserve && !apicd->is_managed) -return 0 ; -raw_spin_lock_irqsave (&vector_lock, flags); -if (reserve ||irqd_is_managed_and_shutdown (irqd)) +if (!apicd->can_reserve && !apicd->is_managed) +assign_irq_vector_any_locked (irqd); +else if (reserve ||irqd_is_managed_and_shutdown (irqd))vector_assign_managed_shutdown (irqd);else if (apicd->is_managed) ret =activate_managed (irqd);
@@ -771,20 +769,10 @@ void lapic_offline(void)static int apic_set_affinity (struct irq_data *irqd,const struct cpumask *dest,bool force) { -struct apic_chip_data *apicd =apic_chip_data (irqd);int err; -/* -* Core code can call here for inactive interrupts. For inactive -* interrupts which use managed or reservation mode there is no -* point in going through the vector assignment right now as the -* activation will assign a vector which fits the destination -* cpumask. Let the core code store the destination mask and be -* done with it. -*/ -if (!irqd_is_activated (irqd) && - (apicd->is_managed || apicd->can_reserve)) -return IRQ_SET_MASK_OK ; +if (WARN_ON_ONCE (!irqd_is_activated (irqd))) +return -EIO ;raw_spin_lock (&vector_lock);cpumask_and (vector_searchmask, dest, cpu_online_mask);
arch/x86/kernel/fpu/xstate.c +1 -1
@@ -1029,7 +1029,7 @@ int copy_xstate_to_kernel(void *kbuf, struct xregs_state *xsave, unsigned int ofcopy_part (offsetof(struct fxregs_state , st_space),128 , &xsave->i387.st_space, &kbuf, &offset_start, &count);if (header.xfeatures &XFEATURE_MASK_SSE ) -copy_part (xstate_offsets[XFEATURE_MASK_SSE ],256 , +copy_part (xstate_offsets[XFEATURE_SSE ],256 , &xsave->i387.xmm_space, &kbuf, &offset_start, &count);/* * Fill xsave->i387.sw_reserved value for ptrace frame:
drivers/acpi/video_detect.c +19 -0
@@ -328,6 +328,25 @@ static const struct dmi_system_id video_detect_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Precision 7510"), }, }, + { + .callback = video_detect_force_native, + .ident = "Acer Aspire 5738z", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"), + DMI_MATCH(DMI_BOARD_NAME, "JV50"), + }, + }, + { + /* https://bugzilla.kernel.org/show_bug.cgi?id=207835 */ + .callback = video_detect_force_native, + .ident = "Acer TravelMate 5735Z", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 5735Z"), + DMI_MATCH(DMI_BOARD_NAME, "BA51_MV"), + }, + }, /* * Desktops which falsely report a backlight and which our heuristics
drivers/base/regmap/regmap-debugfs.c +29 -23
93 lines not on this page · raw message
drivers/block/zram/zram_drv.c +2 -1
@@ -1802,7 +1802,8 @@ static ssize_t hot_add_show(struct class *class,return ret;return scnprintf (buf,PAGE_SIZE ,"%d\n" , ret); } -static CLASS_ATTR_RO (hot_add); +static struct class_attribute class_attr_hot_add = +__ATTR (hot_add,0400 , hot_add_show,NULL ); static ssize_t hot_remove_store(struct class *class, struct class_attribute *attr,
drivers/char/tpm/tpm_tis_core.c +1 -1
@@ -1007,7 +1007,7 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,return 0 ; out_err: -if ((chip->ops !=NULL ) && (chip->ops->clk_enable !=NULL )) +if (chip->ops->clk_enable !=NULL ) chip->ops->clk_enable (chip, false);tpm_tis_remove (chip);
drivers/char/virtio_console.c +2 -1
@@ -2142,6 +2142,7 @@ static struct virtio_device_id id_table[] = { { VIRTIO_ID_CONSOLE, VIRTIO_DEV_ANY_ID }, { 0 }, }; +MODULE_DEVICE_TABLE (virtio, id_table);static unsigned int features[] = { VIRTIO_CONSOLE_F_SIZE,
@@ -2154,6 +2155,7 @@ static struct virtio_device_id rproc_serial_id_table[] = {#endif { 0 }, }; +MODULE_DEVICE_TABLE (virtio, rproc_serial_id_table);static unsigned int rproc_serial_features[] = { };
@@ -2306,6 +2308,5 @@ static void __exit fini(void)module_init (init);module_exit (fini); -MODULE_DEVICE_TABLE (virtio, id_table);MODULE_DESCRIPTION ("Virtio console driver" );MODULE_LICENSE ("GPL" );
drivers/dma/fsl-edma.c +7 -0
@@ -682,6 +682,13 @@ static irqreturn_t fsl_edma_tx_handler(int irq, void *dev_id) fsl_chan = &fsl_edma->chans[ch];spin_lock (&fsl_chan->vchan.lock); + +if (!fsl_chan->edesc) { +/* terminate_all called before */ +spin_unlock (&fsl_chan->vchan.lock); +continue ; + } +if (!fsl_chan->edesc->iscyclic) {list_del (&fsl_chan->edesc->vdesc.node);vchan_cookie_complete (&fsl_chan->edesc->vdesc);
drivers/gpu/drm/exynos/exynos_drm_mic.c +3 -1
@@ -267,8 +267,10 @@ static void mic_pre_enable(struct drm_bridge *bridge) goto unlock; ret =pm_runtime_get_sync (mic->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (mic->dev); goto unlock; + }mic_set_path (mic,1 );
drivers/gpu/drm/msm/msm_submitqueue.c +3 -1
@@ -78,8 +78,10 @@ int msm_submitqueue_create(struct drm_device *drm, struct msm_file_private *ctx, queue->flags = flags;if (priv->gpu) { -if (prio >= priv->gpu->nr_rings) +if (prio >= priv->gpu->nr_rings) { +kfree (queue);return -EINVAL ; + } queue->prio = prio; }
drivers/hid/hid-ids.h +3 -0
@@ -609,6 +609,7 @@#define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081 0xa081#define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A0C2 0xa0c2#define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096 0xa096 +#define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A293 0xa293#define USB_VENDOR_ID_IMATION 0x0718#define USB_DEVICE_ID_DISC_STAKKA 0xd000
@@ -972,6 +973,8 @@#define USB_DEVICE_ID_ROCCAT_RYOS_MK_PRO 0x3232#define USB_DEVICE_ID_ROCCAT_SAVU 0x2d5a +#define USB_VENDOR_ID_SAI 0x17dd +#define USB_VENDOR_ID_SAITEK 0x06a3#define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17#define USB_DEVICE_ID_SAITEK_PS1000 0x0621
drivers/hid/hid-magicmouse.c +6 -0
@@ -452,6 +452,12 @@ static int magicmouse_setup_input(struct input_dev *input, struct hid_device *hd__set_bit (MSC_RAW , input->mscbit); } +/* +* hid-input may mark device as using autorepeat, but neither +* the trackpad, nor the mouse actually want it. +*/ +__clear_bit (EV_REP , input->evbit); +return 0 ; }
drivers/hid/hid-quirks.c +2 -3
@@ -90,6 +90,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096), HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A293), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
@@ -400,9 +401,6 @@ static const struct hid_device_id hid_have_special_driver[] = { { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081) }, { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A0C2) }, #endif -#if IS_ENABLED(CONFIG_HID_ITE) - { HID_USB_DEVICE(USB_VENDOR_ID_ITE, USB_DEVICE_ID_ITE8595) }, -#endif #if IS_ENABLED(CONFIG_HID_ICADE) { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ION, USB_DEVICE_ID_ICADE) }, #endif
@@ -878,6 +876,7 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_PETZL, USB_DEVICE_ID_PETZL_HEADLAMP) }, { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE) }, { HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAI, USB_DEVICE_ID_CYPRESS_HIDCOM) }, #if IS_ENABLED(CONFIG_MOUSE_SYNAPTICS_USB) { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP) }, { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_INT_TP) },
drivers/hwmon/emc2103.c +1 -1
@@ -454,7 +454,7 @@ static ssize_t pwm1_enable_store(struct device *dev, } result =read_u8_from_i2c (client,REG_FAN_CONF1 , &conf_reg); -if (result) { +if (result <0 ) { count = result; goto err; }
drivers/hwtracing/intel_th/core.c +18 -3
@@ -944,15 +944,30 @@ int intel_th_set_output(struct intel_th_device *thdev, {struct intel_th_device *hub =to_intel_th_hub (thdev);struct intel_th_driver *hubdrv =to_intel_th_driver (hub->dev.driver); +int ret;/* In host mode, this is up to the external debugger, do nothing. */ if (hub->host_mode)return 0 ; -if (!hubdrv->set_output) -return -ENOTSUPP ; +/* +* hub is instantiated together with the source device that +* calls here, so guaranteed to be present. +*/ + hubdrv =to_intel_th_driver (hub->dev.driver); +if (!hubdrv || !try_module_get (hubdrv->driver.owner)) +return -EINVAL ; + +if (!hubdrv->set_output) { + ret = -ENOTSUPP ; + goto out; + } + + ret = hubdrv->set_output (hub, master); -return hubdrv->set_output (hub, master); +out: +module_put (hubdrv->driver.owner); +return ret; }EXPORT_SYMBOL_GPL (intel_th_set_output);
drivers/hwtracing/intel_th/pci.c +15 -0
@@ -205,11 +205,21 @@ static const struct pci_device_id intel_th_pci_id_table[] = { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa0a6), .driver_data = (kernel_ulong_t)&intel_th_2x, }, + { +/* Tiger Lake PCH-H */ +PCI_DEVICE (PCI_VENDOR_ID_INTEL ,0x43a6 ), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, {/* Jasper Lake PCH */ PCI_DEVICE (PCI_VENDOR_ID_INTEL ,0x4da6 ), .driver_data = (kernel_ulong_t)&intel_th_2x, }, + { +/* Jasper Lake CPU */ +PCI_DEVICE (PCI_VENDOR_ID_INTEL ,0x4e29 ), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, {/* Elkhart Lake CPU */ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x4529),
@@ -220,6 +230,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x4b26), .driver_data = (kernel_ulong_t)&intel_th_2x, }, + { +/* Emmitsburg PCH */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1bcc), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, { 0 }, };
drivers/hwtracing/intel_th/sth.c +1 -3
@@ -157,9 +157,7 @@ static int sth_stm_link(struct stm_data *stm_data, unsigned int master, { struct sth_device *sth = container_of(stm_data, struct sth_device, stm); -intel_th_set_output (to_intel_th_device (sth->dev), master); - -return 0 ; +return intel_th_set_output (to_intel_th_device (sth->dev), master); }static int intel_th_sw_init (struct sth_device *sth)
drivers/i2c/busses/i2c-eg20t.c +1 -0
@@ -188,6 +188,7 @@ static const struct pci_device_id pch_pcidev_id[] = { { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_I2C), 1, }, {0,} }; +MODULE_DEVICE_TABLE (pci, pch_pcidev_id);static irqreturn_t pch_i2c_handler (int irq,void *pData);
drivers/iio/accel/mma8452.c +4 -1
@@ -1651,10 +1651,13 @@ static int mma8452_probe(struct i2c_client *client, ret =mma8452_set_freefall_mode (data, false);if (ret <0 ) - goto buffer_cleanup; + goto unregister_device;return 0 ; +unregister_device: +iio_device_unregister (indio_dev); + buffer_cleanup:iio_triggered_buffer_cleanup (indio_dev);
drivers/iio/health/afe4403.c +8 -5
@@ -71,6 +71,7 @@ static const struct reg_field afe4403_reg_fields[] = {* @regulator: Pointer to the regulator for the IC * @trig: IIO trigger for this device * @irq: ADC_RDY line interrupt number +* @buffer: Used to construct data layout to push into IIO buffer. */ struct afe4403_data {struct device *dev;
@@ -80,6 +81,8 @@ struct afe4403_data {struct regulator *regulator;struct iio_trigger *trig;int irq; +/* Ensure suitable alignment for timestamp */ +s32 buffer[8 ]__aligned(8) ; };enum afe4403_chan_id {
@@ -317,7 +320,6 @@ static irqreturn_t afe4403_trigger_handler(int irq, void *private)struct iio_dev *indio_dev = pf->indio_dev;struct afe4403_data *afe =iio_priv (indio_dev);int ret, bit, i =0 ; -s32 buffer[8 ];u8 tx[4 ] = {AFE440X_CONTROL0 ,0x0 ,0x0 ,AFE440X_CONTROL0_READ };u8 rx[3 ];
@@ -334,9 +336,9 @@ static irqreturn_t afe4403_trigger_handler(int irq, void *private)if (ret) goto err; - buffer[i++] = (rx[0 ] <<16 ) | - (rx[1 ] <<8 ) | - (rx[2 ]); + afe->buffer[i++] = (rx[0 ] <<16 ) | + (rx[1 ] <<8 ) | + (rx[2 ]); }/* Disable reading from the device */
@@ -345,7 +347,8 @@ static irqreturn_t afe4403_trigger_handler(int irq, void *private)if (ret) goto err; -iio_push_to_buffers_with_timestamp (indio_dev, buffer, pf->timestamp); +iio_push_to_buffers_with_timestamp (indio_dev, afe->buffer, + pf->timestamp); err:iio_trigger_notify_done (indio_dev->trig);
drivers/iio/health/afe4404.c +5 -3
@@ -91,6 +91,7 @@ static const struct reg_field afe4404_reg_fields[] = {* @regulator: Pointer to the regulator for the IC * @trig: IIO trigger for this device * @irq: ADC_RDY line interrupt number +* @buffer: Used to construct a scan to push to the iio buffer. */ struct afe4404_data {struct device *dev;
@@ -99,6 +100,7 @@ struct afe4404_data {struct regulator *regulator;struct iio_trigger *trig;int irq; +s32 buffer[10 ]__aligned(8) ; };enum afe4404_chan_id {
@@ -336,17 +338,17 @@ static irqreturn_t afe4404_trigger_handler(int irq, void *private)struct iio_dev *indio_dev = pf->indio_dev;struct afe4404_data *afe =iio_priv (indio_dev);int ret, bit, i =0 ; -s32 buffer[10 ];for_each_set_bit (bit, indio_dev->active_scan_mask, indio_dev->masklength) { ret =regmap_read (afe->regmap, afe4404_channel_values[bit], - &buffer[i++]); + &afe->buffer[i++]);if (ret) goto err; } -iio_push_to_buffers_with_timestamp (indio_dev, buffer, pf->timestamp); +iio_push_to_buffers_with_timestamp (indio_dev, afe->buffer, + pf->timestamp); err:iio_trigger_notify_done (indio_dev->trig);
drivers/iio/humidity/hdc100x.c +7 -3
@@ -38,6 +38,11 @@ struct hdc100x_data {/* integration time of the sensor */ int adc_int_us[2 ]; +/* Ensure natural alignment of timestamp */ +struct { +__be16 channels[2 ]; +s64 ts__aligned(8) ; + } scan; };/* integration time in us */
@@ -319,7 +324,6 @@ static irqreturn_t hdc100x_trigger_handler(int irq, void *p)struct i2c_client *client = data->client;int delay = data->adc_int_us[0 ] + data->adc_int_us[1 ];int ret; -s16 buf[8 ];/* 2x s16 + padding + 8 byte timestamp */ /* dual read starts at temp register */ mutex_lock (&data->lock);
@@ -330,13 +334,13 @@ static irqreturn_t hdc100x_trigger_handler(int irq, void *p) }usleep_range (delay, delay +1000 ); - ret =i2c_master_recv (client, (u8 *)buf,4 ); + ret =i2c_master_recv (client, (u8 *)data->scan.channels,4 );if (ret <0 ) {dev_err (&client->dev,"cannot read sensor data\n" ); goto err; } -iio_push_to_buffers_with_timestamp (indio_dev, buf, +iio_push_to_buffers_with_timestamp (indio_dev, &data->scan,iio_get_time_ns (indio_dev)); err:mutex_unlock (&data->lock);
drivers/iio/humidity/hts221.h +5 -2
@@ -15,8 +15,6 @@#include <linux/iio/iio.h> -#define HTS221_DATA_SIZE 2 -enum hts221_sensor_type {HTS221_SENSOR_H ,HTS221_SENSOR_T ,
@@ -40,6 +38,11 @@ struct hts221_hw {bool enabled;u8 odr; +/* Ensure natural alignment of timestamp */ +struct { +__le16 channels[2 ]; +s64 ts__aligned(8) ; + } scan; };extern const struct dev_pm_ops hts221_pm_ops;
drivers/iio/humidity/hts221_buffer.c +5 -4
@@ -163,7 +163,6 @@ static const struct iio_buffer_setup_ops hts221_buffer_ops = {static irqreturn_t hts221_buffer_handler_thread (int irq,void *p) { -u8 buffer[ALIGN (2 *HTS221_DATA_SIZE ,sizeof (s64)) +sizeof (s64)];struct iio_poll_func *pf = p;struct iio_dev *iio_dev = pf->indio_dev;struct hts221_hw *hw =iio_priv (iio_dev);
@@ -173,18 +172,20 @@ static irqreturn_t hts221_buffer_handler_thread(int irq, void *p)/* humidity data */ ch = &iio_dev->channels[HTS221_SENSOR_H ]; err =regmap_bulk_read (hw->regmap, ch->address, - buffer,HTS221_DATA_SIZE ); + &hw->scan.channels[0 ], +sizeof (hw->scan.channels[0 ]));if (err <0 ) goto out;/* temperature data */ ch = &iio_dev->channels[HTS221_SENSOR_T ]; err =regmap_bulk_read (hw->regmap, ch->address, - buffer +HTS221_DATA_SIZE ,HTS221_DATA_SIZE ); + &hw->scan.channels[1 ], +sizeof (hw->scan.channels[1 ]));if (err <0 ) goto out; -iio_push_to_buffers_with_timestamp (iio_dev, buffer, +iio_push_to_buffers_with_timestamp (iio_dev, &hw->scan,iio_get_time_ns (iio_dev)); out:
drivers/iio/magnetometer/ak8974.c +17 -12
@@ -184,6 +184,11 @@ struct ak8974 {bool drdy_irq;struct completion drdy_complete;bool drdy_active_low; +/* Ensure timestamp is naturally aligned */ +struct { +__le16 channels[3 ]; +s64 ts__aligned(8) ; + } scan; };static const char ak8974_reg_avdd[] ="avdd" ;
@@ -580,7 +585,6 @@ static void ak8974_fill_buffer(struct iio_dev *indio_dev) {struct ak8974 *ak8974 =iio_priv (indio_dev);int ret; -__le16 hw_values[8 ];/* Three axes + 64bit padding */ pm_runtime_get_sync (&ak8974->i2c->dev);mutex_lock (&ak8974->lock);
@@ -590,13 +594,13 @@ static void ak8974_fill_buffer(struct iio_dev *indio_dev)dev_err (&ak8974->i2c->dev,"error triggering measure\n" ); goto out_unlock; } - ret =ak8974_getresult (ak8974, hw_values); + ret =ak8974_getresult (ak8974, ak8974->scan.channels);if (ret) {dev_err (&ak8974->i2c->dev,"error getting measures\n" ); goto out_unlock; } -iio_push_to_buffers_with_timestamp (indio_dev, hw_values, +iio_push_to_buffers_with_timestamp (indio_dev, &ak8974->scan,iio_get_time_ns (indio_dev)); out_unlock:
@@ -764,19 +768,21 @@ static int ak8974_probe(struct i2c_client *i2c, ak8974->map =devm_regmap_init_i2c (i2c, &ak8974_regmap_config);if (IS_ERR (ak8974->map)) {dev_err (&i2c->dev,"failed to allocate register map\n" ); +pm_runtime_put_noidle (&i2c->dev); +pm_runtime_disable (&i2c->dev);return PTR_ERR (ak8974->map); } ret =ak8974_set_power (ak8974,AK8974_PWR_ON );if (ret) {dev_err (&i2c->dev,"could not power on\n" ); - goto power_off; + goto disable_pm; } ret =ak8974_detect (ak8974);if (ret) {dev_err (&i2c->dev,"neither AK8974 nor AMI30x found\n" ); - goto power_off; + goto disable_pm; } ret =ak8974_selftest (ak8974);
@@ -786,14 +792,9 @@ static int ak8974_probe(struct i2c_client *i2c, ret =ak8974_reset (ak8974);if (ret) {dev_err (&i2c->dev,"AK8974 reset failed\n" ); - goto power_off; + goto disable_pm; } -pm_runtime_set_autosuspend_delay (&i2c->dev, -AK8974_AUTOSUSPEND_DELAY ); -pm_runtime_use_autosuspend (&i2c->dev); -pm_runtime_put (&i2c->dev); - indio_dev->dev.parent = &i2c->dev; indio_dev->channels = ak8974_channels; indio_dev->num_channels =ARRAY_SIZE (ak8974_channels);
@@ -846,6 +847,11 @@ static int ak8974_probe(struct i2c_client *i2c, goto cleanup_buffer; } +pm_runtime_set_autosuspend_delay (&i2c->dev, +AK8974_AUTOSUSPEND_DELAY ); +pm_runtime_use_autosuspend (&i2c->dev); +pm_runtime_put (&i2c->dev); +return 0 ; cleanup_buffer:
@@ -854,7 +860,6 @@ static int ak8974_probe(struct i2c_client *i2c,pm_runtime_put_noidle (&i2c->dev);pm_runtime_disable (&i2c->dev);ak8974_set_power (ak8974,AK8974_PWR_OFF ); -power_off:regulator_bulk_disable (ARRAY_SIZE (ak8974->regs), ak8974->regs);return ret;
drivers/iio/pressure/ms5611_core.c +8 -3
@@ -215,16 +215,21 @@ static irqreturn_t ms5611_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct ms5611_state *st =iio_priv (indio_dev); -s32 buf[4 ];/* s32 (pressure) + s32 (temp) + 2 * s32 (timestamp) */ +/* Ensure buffer elements are naturally aligned */ +struct { +s32 channels[2 ]; +s64 ts__aligned(8) ; + } scan;int ret;mutex_lock (&st->lock); - ret =ms5611_read_temp_and_pressure (indio_dev, &buf[1 ], &buf[0 ]); + ret =ms5611_read_temp_and_pressure (indio_dev, &scan.channels[1 ], + &scan.channels[0 ]);mutex_unlock (&st->lock);if (ret <0 ) goto err; -iio_push_to_buffers_with_timestamp (indio_dev, buf, +iio_push_to_buffers_with_timestamp (indio_dev, &scan,iio_get_time_ns (indio_dev)); err:
drivers/iio/pressure/zpa2326.c +3 -1
@@ -672,8 +672,10 @@ static int zpa2326_resume(const struct iio_dev *indio_dev)int err; err =pm_runtime_get_sync (indio_dev->dev.parent); -if (err <0 ) +if (err <0 ) { +pm_runtime_put (indio_dev->dev.parent);return err; + }if (err >0 ) {/*
drivers/input/serio/i8042-x86ia64io.h +7 -0
@@ -429,6 +429,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "076804U"), }, }, + { +/* Lenovo XiaoXin Air 12 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), + DMI_MATCH(DMI_PRODUCT_NAME, "80UN"), + }, + }, { .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
drivers/input/touchscreen/mms114.c +15 -2
@@ -54,6 +54,7 @@enum mms_type {TYPE_MMS114 =114 ,TYPE_MMS152 =152 , +TYPE_MMS345L =345 , };struct mms114_data {
@@ -250,6 +251,15 @@ static int mms114_get_version(struct mms114_data *data)int error;switch (data->type) { +case TYPE_MMS345L : + error =__mms114_read_reg (data,MMS152_FW_REV ,3 , buf); +if (error) +return error; + +dev_info (dev,"TSP FW Rev: bootloader 0x%x / core 0x%x / config 0x%x\n" , + buf[0 ], buf[1 ], buf[2 ]); +break ; +case TYPE_MMS152 : error =__mms114_read_reg (data,MMS152_FW_REV ,3 , buf);if (error)
@@ -287,8 +297,8 @@ static int mms114_setup_regs(struct mms114_data *data)if (error <0 )return error; -/* MMS152 has no configuration or power on registers */ -if (data->type ==TYPE_MMS152 ) +/* Only MMS114 has configuration and power on registers */ +if (data->type !=TYPE_MMS114 )return 0 ; error =mms114_set_active (data, true);
@@ -598,6 +608,9 @@ static const struct of_device_id mms114_dt_match[] = { }, { .compatible = "melfas,mms152", .data = (void *)TYPE_MMS152, + }, { + .compatible = "melfas,mms345l", + .data = (void *)TYPE_MMS345L, }, { } };
drivers/misc/atmel-ssc.c +12 -12
@@ -13,7 +13,7 @@#include <linux/clk.h> #include <linux/err.h> #include <linux/io.h> -#include <linux/spinlock.h> +#include <linux/mutex.h> #include <linux/atmel-ssc.h> #include <linux/slab.h> #include <linux/module.h>
@@ -23,7 +23,7 @@#include "../../sound/soc/atmel/atmel_ssc_dai.h" /* Serialize access to ssc_list and user count */ -static DEFINE_SPINLOCK (user_lock); +static DEFINE_MUTEX (user_lock);static LIST_HEAD (ssc_list);struct ssc_device *ssc_request (unsigned int ssc_num)
@@ -31,7 +31,7 @@ struct ssc_device *ssc_request(unsigned int ssc_num)int ssc_valid =0 ;struct ssc_device *ssc; -spin_lock (&user_lock); +mutex_lock (&user_lock);list_for_each_entry (ssc, &ssc_list, list) {if (ssc->pdev->dev.of_node) { if (of_alias_get_id(ssc->pdev->dev.of_node, "ssc")
@@ -47,18 +47,18 @@ struct ssc_device *ssc_request(unsigned int ssc_num) }if (!ssc_valid) { -spin_unlock (&user_lock); +mutex_unlock (&user_lock);pr_err ("ssc: ssc%d platform device is missing\n" , ssc_num);return ERR_PTR (-ENODEV ); }if (ssc->user) { -spin_unlock (&user_lock); +mutex_unlock (&user_lock);dev_dbg (&ssc->pdev->dev,"module busy\n" );return ERR_PTR (-EBUSY ); } ssc->user++; -spin_unlock (&user_lock); +mutex_unlock (&user_lock);clk_prepare (ssc->clk);
@@ -70,14 +70,14 @@ void ssc_free(struct ssc_device *ssc) {bool disable_clk = true; -spin_lock (&user_lock); +mutex_lock (&user_lock);if (ssc->user) ssc->user--;else { disable_clk = false;dev_dbg (&ssc->pdev->dev,"device already free\n" ); } -spin_unlock (&user_lock); +mutex_unlock (&user_lock);if (disable_clk)clk_unprepare (ssc->clk);
@@ -240,9 +240,9 @@ static int ssc_probe(struct platform_device *pdev)return -ENXIO ; } -spin_lock (&user_lock); +mutex_lock (&user_lock);list_add_tail (&ssc->list, &ssc_list); -spin_unlock (&user_lock); +mutex_unlock (&user_lock);platform_set_drvdata (pdev, ssc);
@@ -261,9 +261,9 @@ static int ssc_remove(struct platform_device *pdev)ssc_sound_dai_remove (ssc); -spin_lock (&user_lock); +mutex_lock (&user_lock);list_del (&ssc->list); -spin_unlock (&user_lock); +mutex_unlock (&user_lock);return 0 ; }
drivers/misc/mei/bus.c +1 -2
@@ -755,9 +755,8 @@ static int mei_cl_device_remove(struct device *dev)mei_cl_bus_module_put (cldev);module_put (THIS_MODULE ); - dev->driver =NULL ; -return ret; +return ret; } static ssize_t name_show(struct device *dev, struct device_attribute *a,
drivers/mmc/host/sdhci.c +1 -1
@@ -133,7 +133,7 @@ static void sdhci_set_card_detection(struct sdhci_host *host, bool enable)u32 present;if ((host->quirks &SDHCI_QUIRK_BROKEN_CARD_DETECTION ) || - !mmc_card_is_removable (host->mmc)) + !mmc_card_is_removable (host->mmc) ||mmc_can_gpio_cd (host->mmc))return ;if (enable) {
drivers/mtd/nand/raw/brcmnand/brcmnand.c +3 -2
@@ -491,8 +491,9 @@ static int brcmnand_revision_init(struct brcmnand_controller *ctrl) }else { ctrl->cs_offsets = brcmnand_cs_offsets; -/* v5.0 and earlier has a different CS0 offset layout */ -if (ctrl->nand_version <=0x0500 ) +/* v3.3-5.0 have a different CS0 offset layout */ +if (ctrl->nand_version >=0x0303 && + ctrl->nand_version <=0x0500 ) ctrl->cs0_offsets = brcmnand_cs_offsets_cs0; }
drivers/mtd/nand/raw/marvell_nand.c +15 -10
@@ -2564,7 +2564,7 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc, ret =mtd_device_register (mtd,NULL ,0 );if (ret) {dev_err (dev,"failed to register mtd device: %d\n" , ret); -nand_release (chip); +nand_cleanup (chip);return ret; }
@@ -2573,6 +2573,16 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,return 0 ; } +static void marvell_nand_chips_cleanup (struct marvell_nfc *nfc) +{ +struct marvell_nand_chip *entry, *temp; + +list_for_each_entry_safe (entry, temp, &nfc->chips, node) { +nand_release (&entry->chip); +list_del (&entry->node); + } +} +static int marvell_nand_chips_init (struct device *dev,struct marvell_nfc *nfc) {struct device_node *np = dev->of_node;
@@ -2607,21 +2617,16 @@ static int marvell_nand_chips_init(struct device *dev, struct marvell_nfc *nfc) ret =marvell_nand_chip_init (dev, nfc, nand_np);if (ret) {of_node_put (nand_np); -return ret; + goto cleanup_chips; } }return 0 ; -} -static void marvell_nand_chips_cleanup (struct marvell_nfc *nfc) -{ -struct marvell_nand_chip *entry, *temp; +cleanup_chips: +marvell_nand_chips_cleanup (nfc); -list_for_each_entry_safe (entry, temp, &nfc->chips, node) { -nand_release (&entry->chip); -list_del (&entry->node); - } +return ret; }static int marvell_nfc_init_dma (struct marvell_nfc *nfc)
drivers/mtd/nand/raw/nand_timings.c +2 -3
@@ -331,10 +331,9 @@ int onfi_fill_data_interface(struct nand_chip *chip,/* microseconds -> picoseconds */ timings->tPROG_max =1000000ULL *ONFI_DYN_TIMING_MAX ; timings->tBERS_max =1000000ULL *ONFI_DYN_TIMING_MAX ; - timings->tR_max =1000000ULL *200000000ULL ; -/* nanoseconds -> picoseconds */ - timings->tCCS_min =1000UL *500000 ; + timings->tR_max =200000000 ; + timings->tCCS_min =500000 ; }return 0 ;
drivers/mtd/nand/raw/oxnas_nand.c +18 -6
@@ -36,6 +36,7 @@ struct oxnas_nand_ctrl {void __iomem *io_base;struct clk *clk;struct nand_chip *chips[OXNAS_NAND_MAX_CHIPS ]; +unsigned int nchips; };static uint8_t oxnas_nand_read_byte (struct mtd_info *mtd)
@@ -86,9 +87,9 @@ static int oxnas_nand_probe(struct platform_device *pdev)struct nand_chip *chip;struct mtd_info *mtd;struct resource *res; -int nchips =0 ;int count =0 ;int err =0 ; +int i;/* Allocate memory for the device structure (and zero it) */ oxnas = devm_kzalloc(&pdev->dev, sizeof(*oxnas),
@@ -150,12 +151,12 @@ static int oxnas_nand_probe(struct platform_device *pdev)if (err) goto err_cleanup_nand; - oxnas->chips[nchips] = chip; - ++nchips; + oxnas->chips[oxnas->nchips] = chip; + ++oxnas->nchips; }/* Exit if no chips found */ -if (!nchips) { +if (!oxnas->nchips) { err = -ENODEV ; goto err_clk_unprepare; }
@@ -168,6 +169,13 @@ static int oxnas_nand_probe(struct platform_device *pdev)nand_cleanup (chip); err_release_child:of_node_put (nand_np); + +for (i =0 ; i < oxnas->nchips; i++) { + chip = oxnas->chips[i]; +WARN_ON (mtd_device_unregister (nand_to_mtd (chip))); +nand_cleanup (chip); + } + err_clk_unprepare:clk_disable_unprepare (oxnas->clk);return err;
@@ -176,9 +184,13 @@ static int oxnas_nand_probe(struct platform_device *pdev)static int oxnas_nand_remove (struct platform_device *pdev) {struct oxnas_nand_ctrl *oxnas =platform_get_drvdata (pdev); +struct nand_chip *chip; +int i; -if (oxnas->chips[0 ]) -nand_release (oxnas->chips[0 ]); +for (i =0 ; i < oxnas->nchips; i++) { + chip = oxnas->chips[i]; +nand_release (chip); + }clk_disable_unprepare (oxnas->clk);
drivers/net/dsa/bcm_sf2.c +2 -0
@@ -1078,6 +1078,8 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev)set_bit (0 , priv->cfp.used);set_bit (0 , priv->cfp.unique); +/* Balance of_node_put() done by of_find_node_by_name() */ +of_node_get (dn); ports =of_find_node_by_name (dn,"ports" );if (ports) {bcm_sf2_identify_ports (priv, ports);
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +12 -7
@@ -56,15 +56,23 @@ static int rmnet_unregister_real_device(struct net_device *real_dev)return 0 ; } -static int rmnet_register_real_device (struct net_device *real_dev) +static int rmnet_register_real_device (struct net_device *real_dev, +struct netlink_ext_ack *extack) {struct rmnet_port *port;int rc, entry;ASSERT_RTNL (); -if (rmnet_is_real_dev_registered (real_dev)) +if (rmnet_is_real_dev_registered (real_dev)) { + port =rmnet_get_port_rtnl (real_dev); +if (port->rmnet_mode !=RMNET_EPMODE_VND ) { +NL_SET_ERR_MSG_MOD (extack,"bridge device already exists" ); +return -EINVAL ; + } +return 0 ; + } port =kzalloc (sizeof (*port),GFP_ATOMIC );if (!port)
@@ -143,7 +151,7 @@ static int rmnet_newlink(struct net *src_net, struct net_device *dev, mux_id =nla_get_u16 (data[IFLA_RMNET_MUX_ID ]); - err =rmnet_register_real_device (real_dev); + err =rmnet_register_real_device (real_dev, extack);if (err) goto err0;
@@ -425,13 +433,10 @@ int rmnet_add_bridge(struct net_device *rmnet_dev,if (port->nr_rmnet_devs >1 )return -EINVAL ; -if (port->rmnet_mode !=RMNET_EPMODE_VND ) -return -EINVAL ; -if (rmnet_is_real_dev_registered (slave_dev))return -EBUSY ; - err =rmnet_register_real_device (slave_dev); + err =rmnet_register_real_device (slave_dev, extack);if (err)return -EBUSY ;
drivers/net/phy/sfp-bus.c +79 -0
115 lines not on this page · raw message
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1305,6 +1305,7 @@ static const struct usb_device_id products[] = { {QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)}, /* Quectel EG91 */ + {QMI_QUIRK_SET_DTR(0x2c7c, 0x0195, 4)}, /* Quectel EG95 */ {QMI_FIXED_INTF(0x2c7c, 0x0296, 4)}, /* Quectel BG96 */ {QMI_QUIRK_SET_DTR(0x2cb7, 0x0104, 4)}, /* Fibocom NL678 series */ {QMI_FIXED_INTF(0x0489, 0xe0b4, 0)}, /* Foxconn T77W968 LTE */
drivers/of/of_mdio.c +7 -2
@@ -267,10 +267,15 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) child, addr);if (of_mdiobus_child_is_phy (child)) { +/* -ENODEV is the return code that PHYLIB has +* standardized on to indicate that bus +* scanning should continue. +*/ rc =of_mdiobus_register_phy (mdio, child, addr); -if (rc && rc != -ENODEV ) +if (!rc) +break ; +if (rc != -ENODEV ) goto unregister; -break ; } } }
drivers/phy/allwinner/phy-sun4i-usb.c +3 -2
@@ -550,13 +550,14 @@ static void sun4i_usb_phy0_id_vbus_det_scan(struct work_struct *work)struct sun4i_usb_phy_data *data = container_of(work, struct sun4i_usb_phy_data, detect.work);struct phy *phy0 = data->phys[0 ].phy; -struct sun4i_usb_phy *phy =phy_get_drvdata (phy0); +struct sun4i_usb_phy *phy;bool force_session_end, id_notify = false, vbus_notify = false;int id_det, vbus_det; -if (phy0 ==NULL ) +if (!phy0)return ; + phy =phy_get_drvdata (phy0); id_det =sun4i_usb_phy0_get_id_det (data); vbus_det =sun4i_usb_phy0_get_vbus_det (data);
drivers/scsi/Kconfig +0 -9
@@ -144,15 +144,6 @@ config BLK_DEV_SR <file:Documentation/scsi/scsi.txt>. The module will be called sr_mod. -config BLK_DEV_SR_VENDOR - bool "Enable vendor-specific extensions (for SCSI CDROM)" - depends on BLK_DEV_SR - help - This enables the usage of vendor specific SCSI commands. This is - required to support multisession CDs with old NEC/TOSHIBA cdrom - drives (and HP Writers). If you have such a drive and get the first - session only, try saying Y here; everybody else says N. - config CHR_DEV_SG tristate "SCSI generic support" depends on SCSI
drivers/scsi/sr_vendor.c +0 -8
@@ -66,9 +66,6 @@void sr_vendor_init (Scsi_CD *cd) { -#ifndef CONFIG_BLK_DEV_SR_VENDOR - cd->vendor =VENDOR_SCSI3 ; -#else const char *vendor = cd->device->vendor;const char *model = cd->device->model;
@@ -100,7 +97,6 @@ void sr_vendor_init(Scsi_CD *cd) cd->vendor =VENDOR_TOSHIBA ; } -#endif }
@@ -114,10 +110,8 @@ int sr_set_blocklength(Scsi_CD *cd, int blocklength)struct ccs_modesel_head *modesel;int rc, density =0 ; -#ifdef CONFIG_BLK_DEV_SR_VENDOR if (cd->vendor ==VENDOR_TOSHIBA ) density = (blocklength >2048 ) ?0x81 :0x83 ; -#endif buffer =kmalloc (512 ,GFP_KERNEL |GFP_DMA );if (!buffer)
@@ -205,7 +199,6 @@ int sr_cd_check(struct cdrom_device_info *cdi) }break ; -#ifdef CONFIG_BLK_DEV_SR_VENDOR case VENDOR_NEC :{unsigned long min, sec, frame; cgc.cmd[0 ] =0xde ;
@@ -298,7 +291,6 @@ int sr_cd_check(struct cdrom_device_info *cdi) sector = buffer[11 ] + (buffer[10 ] <<8 ) + (buffer[9 ] <<16 ) + (buffer[8 ] <<24 );break ; -#endif /* CONFIG_BLK_DEV_SR_VENDOR */ default :/* should not happen */
drivers/slimbus/core.c +1 -0
@@ -236,6 +236,7 @@ EXPORT_SYMBOL_GPL(slim_register_controller);/* slim_remove_device: Remove the effect of slim_add_device() */ static void slim_remove_device (struct slim_device *sbdev) { +of_node_put (sbdev->dev.of_node);device_unregister (&sbdev->dev); }
drivers/soc/qcom/rpmh-rsc.c +64 -34
146 lines not on this page · raw message
drivers/soc/qcom/rpmh.c +27 -29
114 lines not on this page · raw message
drivers/spi/spi-fsl-dspi.c +2 -15
@@ -71,7 +71,7 @@#define SPI_SR 0x2c#define SPI_SR_EOQF 0x10000000#define SPI_SR_TCFQF 0x80000000 -#define SPI_SR_CLEAR 0xdaad0000 +#define SPI_SR_CLEAR 0x9aaf0000#define SPI_RSER_TFFFE BIT(25)#define SPI_RSER_TFFFD BIT(24)
@@ -1164,20 +1164,7 @@ static int dspi_remove(struct platform_device *pdev)static void dspi_shutdown (struct platform_device *pdev) { -struct spi_controller *ctlr =platform_get_drvdata (pdev); -struct fsl_dspi *dspi =spi_controller_get_devdata (ctlr); - -/* Disable RX and TX */ -regmap_update_bits (dspi->regmap,SPI_MCR , -SPI_MCR_DIS_TXF |SPI_MCR_DIS_RXF , -SPI_MCR_DIS_TXF |SPI_MCR_DIS_RXF ); - -/* Stop Running */ -regmap_update_bits (dspi->regmap,SPI_MCR ,SPI_MCR_HALT ,SPI_MCR_HALT ); - -dspi_release_dma (dspi); -clk_disable_unprepare (dspi->clk); -spi_unregister_controller (dspi->master); +dspi_remove (pdev); }static struct platform_driver fsl_dspi_driver = {
drivers/spi/spi-sprd-adi.c +1 -1
@@ -358,9 +358,9 @@ static int sprd_adi_restart_handler(struct notifier_block *this,sprd_adi_write (sadi, sadi->slave_pbase +REG_WDG_LOCK ,WDG_UNLOCK_KEY );/* Load the watchdog timeout value, 50ms is always enough. */ +sprd_adi_write (sadi, sadi->slave_pbase +REG_WDG_LOAD_HIGH ,0 );sprd_adi_write (sadi, sadi->slave_pbase +REG_WDG_LOAD_LOW ,WDG_LOAD_VAL &WDG_LOAD_MASK ); -sprd_adi_write (sadi, sadi->slave_pbase +REG_WDG_LOAD_HIGH ,0 );/* Start the watchdog to reset system */ sprd_adi_read (sadi, sadi->slave_pbase +REG_WDG_CTRL , &val);
drivers/spi/spi-sun6i.c +6 -8
@@ -202,7 +202,7 @@ static int sun6i_spi_transfer_one(struct spi_master *master, struct spi_transfer *tfr) {struct sun6i_spi *sspi =spi_master_get_devdata (master); -unsigned int mclk_rate, div, timeout; +unsigned int mclk_rate, div, div_cdr1, div_cdr2, timeout;unsigned int start, end, tx_time;unsigned int trig_level;unsigned int tx_len =0 ;
@@ -291,14 +291,12 @@ static int sun6i_spi_transfer_one(struct spi_master *master,* First try CDR2, and if we can't reach the expected * frequency, fall back to CDR1. */ - div = mclk_rate / (2 * tfr->speed_hz); -if (div <= (SUN6I_CLK_CTL_CDR2_MASK +1 )) { -if (div >0 ) - div--; - - reg =SUN6I_CLK_CTL_CDR2 (div) |SUN6I_CLK_CTL_DRS ; + div_cdr1 =DIV_ROUND_UP (mclk_rate, tfr->speed_hz); + div_cdr2 =DIV_ROUND_UP (div_cdr1,2 ); +if (div_cdr2 <= (SUN6I_CLK_CTL_CDR2_MASK +1 )) { + reg =SUN6I_CLK_CTL_CDR2 (div_cdr2 -1 ) |SUN6I_CLK_CTL_DRS ; }else { - div =ilog2 (mclk_rate) -ilog2 (tfr->speed_hz); + div =min (SUN6I_CLK_CTL_CDR1_MASK ,order_base_2 (div_cdr1)); reg =SUN6I_CLK_CTL_CDR1 (div); }
drivers/staging/comedi/drivers/addi_apci_1500.c +7 -3
@@ -456,9 +456,9 @@ static int apci1500_di_cfg_trig(struct comedi_device *dev,unsigned int lo_mask = data[5 ] << shift;unsigned int chan_mask = hi_mask | lo_mask;unsigned int old_mask = (1 << shift) -1 ; -unsigned int pm = devpriv->pm[trig] & old_mask; -unsigned int pt = devpriv->pt[trig] & old_mask; -unsigned int pp = devpriv->pp[trig] & old_mask; +unsigned int pm; +unsigned int pt; +unsigned int pp;if (trig >1 ) { dev_dbg(dev->class_dev,
@@ -471,6 +471,10 @@ static int apci1500_di_cfg_trig(struct comedi_device *dev,return -EINVAL ; } + pm = devpriv->pm[trig] & old_mask; + pt = devpriv->pt[trig] & old_mask; + pp = devpriv->pp[trig] & old_mask; +switch (data[2 ]) {case COMEDI_DIGITAL_TRIG_DISABLE :/* clear trigger configuration */
drivers/thermal/cpu_cooling.c +3 -3
@@ -278,11 +278,11 @@ static u32 cpu_power_to_freq(struct cpufreq_cooling_device *cpufreq_cdev,int i;struct freq_table *freq_table = cpufreq_cdev->freq_table; -for (i =1 ; i <= cpufreq_cdev->max_level; i++) -if (power > freq_table[i].power) +for (i =0 ; i < cpufreq_cdev->max_level; i++) +if (power >= freq_table[i].power)break ; -return freq_table[i -1 ].frequency; +return freq_table[i].frequency; }/**
drivers/thermal/mtk_thermal.c +2 -4
@@ -431,8 +431,7 @@ static int mtk_thermal_bank_temperature(struct mtk_thermal_bank *bank)u32 raw;for (i =0 ; i < conf->bank_data[bank->id].num_sensors; i++) { - raw =readl (mt->thermal_base + - conf->msr[conf->bank_data[bank->id].sensors[i]]); + raw =readl (mt->thermal_base + conf->msr[i]); temp = raw_to_mcelsius(mt, conf->bank_data[bank->id].sensors[i],
@@ -569,8 +568,7 @@ static void mtk_thermal_init_bank(struct mtk_thermal *mt, int num,for (i =0 ; i < conf->bank_data[num].num_sensors; i++)writel (conf->sensor_mux_values[conf->bank_data[num].sensors[i]], - mt->thermal_base + - conf->adcpnp[conf->bank_data[num].sensors[i]]); + mt->thermal_base + conf->adcpnp[i]);writel ((1 << conf->bank_data[num].num_sensors) -1 , mt->thermal_base +TEMP_MONCTL0 );
drivers/tty/serial/mxs-auart.c +8 -4
@@ -1703,21 +1703,21 @@ static int mxs_auart_probe(struct platform_device *pdev) irq =platform_get_irq (pdev,0 );if (irq <0 ) { ret = irq; - goto out_disable_clks; + goto out_iounmap; } s->port.irq = irq; ret =devm_request_irq (&pdev->dev, irq, mxs_auart_irq_handle,0 ,dev_name (&pdev->dev), s);if (ret) - goto out_disable_clks; + goto out_iounmap;platform_set_drvdata (pdev, s); ret =mxs_auart_init_gpios (s, &pdev->dev);if (ret) {dev_err (&pdev->dev,"Failed to initialize GPIOs.\n" ); - goto out_disable_clks; + goto out_iounmap; }/*
@@ -1725,7 +1725,7 @@ static int mxs_auart_probe(struct platform_device *pdev)*/ ret =mxs_auart_request_gpio_irq (s);if (ret) - goto out_disable_clks; + goto out_iounmap; auart_port[s->port.line] = s;
@@ -1751,6 +1751,9 @@ static int mxs_auart_probe(struct platform_device *pdev)mxs_auart_free_gpio_irq (s); auart_port[pdev->id] =NULL ; +out_iounmap: +iounmap (s->port.membase); + out_disable_clks:if (is_asm9260_auart (s)) {clk_disable_unprepare (s->clk);
@@ -1766,6 +1769,7 @@ static int mxs_auart_remove(struct platform_device *pdev)uart_remove_one_port (&auart_driver, &s->port); auart_port[pdev->id] =NULL ;mxs_auart_free_gpio_irq (s); +iounmap (s->port.membase);if (is_asm9260_auart (s)) {clk_disable_unprepare (s->clk);clk_disable_unprepare (s->clk_ahb);
drivers/uio/uio_pdrv_genirq.c +1 -1
@@ -148,7 +148,7 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)if (!uioinfo->irq) { ret =platform_get_irq (pdev,0 ); uioinfo->irq = ret; -if (ret == -ENXIO && pdev->dev.of_node) +if (ret == -ENXIO ) uioinfo->irq =UIO_IRQ_NONE ;else if (ret <0 ) {dev_err (&pdev->dev,"failed to get IRQ\n" );
drivers/usb/c67x00/c67x00-sched.c +1 -1
@@ -486,7 +486,7 @@ c67x00_giveback_urb(struct c67x00_hcd *c67x00, struct urb *urb, int status)c67x00_release_urb (c67x00, urb);usb_hcd_unlink_urb_from_ep (c67x00_hcd_to_hcd (c67x00), urb);spin_unlock (&c67x00->lock); -usb_hcd_giveback_urb (c67x00_hcd_to_hcd (c67x00), urb, urbp->status); +usb_hcd_giveback_urb (c67x00_hcd_to_hcd (c67x00), urb, status);spin_lock (&c67x00->lock); }
drivers/usb/chipidea/core.c +24 -0
@@ -1154,6 +1154,29 @@ static void ci_controller_suspend(struct ci_hdrc *ci)enable_irq (ci->irq); } +/* +* Handle the wakeup interrupt triggered by extcon connector +* We need to call ci_irq again for extcon since the first +* interrupt (wakeup int) only let the controller be out of +* low power mode, but not handle any interrupts. +*/ +static void ci_extcon_wakeup_int (struct ci_hdrc *ci) +{ +struct ci_hdrc_cable *cable_id, *cable_vbus; +u32 otgsc =hw_read_otgsc (ci, ~0 ); + + cable_id = &ci->platdata->id_extcon; + cable_vbus = &ci->platdata->vbus_extcon; + +if (!IS_ERR (cable_id->edev) && ci->is_otg && + (otgsc &OTGSC_IDIE ) && (otgsc &OTGSC_IDIS )) +ci_irq (ci->irq, ci); + +if (!IS_ERR (cable_vbus->edev) && ci->is_otg && + (otgsc &OTGSC_BSVIE ) && (otgsc &OTGSC_BSVIS )) +ci_irq (ci->irq, ci); +} +static int ci_controller_resume (struct device *dev) {struct ci_hdrc *ci =dev_get_drvdata (dev);
@@ -1186,6 +1209,7 @@ static int ci_controller_resume(struct device *dev)enable_irq (ci->irq);if (ci_otg_is_fsm_mode (ci))ci_otg_fsm_wakeup_by_srp (ci); +ci_extcon_wakeup_int (ci); }return 0 ;
drivers/usb/dwc2/platform.c +2 -1
@@ -349,7 +349,8 @@ static void dwc2_driver_shutdown(struct platform_device *dev) {struct dwc2_hsotg *hsotg =platform_get_drvdata (dev); -disable_irq (hsotg->irq); +dwc2_disable_global_interrupts (hsotg); +synchronize_irq (hsotg->irq); }/**
drivers/usb/gadget/function/f_uac1_legacy.c +2 -0
@@ -336,7 +336,9 @@ static int f_audio_out_ep_complete(struct usb_ep *ep, struct usb_request *req)/* Copy buffer is full, add it to the play_queue */ if (audio_buf_size - copy_buf->actual < req->actual) { +spin_lock_irq (&audio->lock);list_add_tail (©_buf->list, &audio->play_queue); +spin_unlock_irq (&audio->lock);schedule_work (&audio->playback_work); copy_buf =f_audio_buffer_alloc (audio_buf_size);if (IS_ERR (copy_buf))
drivers/usb/gadget/udc/atmel_usba_udc.c +1 -1
@@ -860,7 +860,7 @@ static int usba_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)u32 status;DBG (DBG_GADGET |DBG_QUEUE ,"ep_dequeue: %s, req %p\n" , - ep->ep.name, req); + ep->ep.name, _req);spin_lock_irqsave (&udc->lock, flags);
drivers/usb/host/ehci-platform.c +0 -4
@@ -457,10 +457,6 @@ static int ehci_platform_resume(struct device *dev)ehci_resume (hcd, priv->reset_on_resume); -pm_runtime_disable (dev); -pm_runtime_set_active (dev); -pm_runtime_enable (dev); -if (priv->quirk_poll)quirk_poll_init (priv);
drivers/usb/host/ohci-platform.c +0 -5
@@ -301,11 +301,6 @@ static int ohci_platform_resume(struct device *dev) }ohci_resume (hcd, false); - -pm_runtime_disable (dev); -pm_runtime_set_active (dev); -pm_runtime_enable (dev); -return 0 ; }#endif /* CONFIG_PM_SLEEP */
drivers/usb/host/xhci-plat.c +1 -9
@@ -408,15 +408,7 @@ static int __maybe_unused xhci_plat_resume(struct device *dev)if (ret)return ret; - ret =xhci_resume (xhci,0 ); -if (ret) -return ret; - -pm_runtime_disable (dev); -pm_runtime_set_active (dev); -pm_runtime_enable (dev); - -return 0 ; +return xhci_resume (xhci,0 ); }static int __maybe_unused xhci_plat_runtime_suspend (struct device *dev)
drivers/usb/serial/ch341.c +1 -0
@@ -81,6 +81,7 @@static const struct usb_device_id id_table[] = { {USB_DEVICE (0x4348 ,0x5523 ) }, + {USB_DEVICE (0x1a86 ,0x7522 ) }, {USB_DEVICE (0x1a86 ,0x7523 ) }, {USB_DEVICE (0x1a86 ,0x5523 ) }, { },
drivers/usb/serial/cypress_m8.c +2 -0
@@ -59,6 +59,7 @@ static const struct usb_device_id id_table_earthmate[] = {static const struct usb_device_id id_table_cyphidcomrs232[] = { {USB_DEVICE (VENDOR_ID_CYPRESS ,PRODUCT_ID_CYPHIDCOM ) }, + {USB_DEVICE (VENDOR_ID_SAI ,PRODUCT_ID_CYPHIDCOM ) }, {USB_DEVICE (VENDOR_ID_POWERCOM ,PRODUCT_ID_UPS ) }, {USB_DEVICE (VENDOR_ID_FRWD ,PRODUCT_ID_CYPHIDCOM_FRWD ) }, { }/* Terminating entry */
@@ -73,6 +74,7 @@ static const struct usb_device_id id_table_combined[] = { { USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB) }, { USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB_LT20) }, { USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) }, + { USB_DEVICE(VENDOR_ID_SAI, PRODUCT_ID_CYPHIDCOM) }, { USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) }, { USB_DEVICE(VENDOR_ID_FRWD, PRODUCT_ID_CYPHIDCOM_FRWD) }, { USB_DEVICE(VENDOR_ID_DAZZLE, PRODUCT_ID_CA42) },
drivers/usb/serial/cypress_m8.h +3 -0
@@ -25,6 +25,9 @@#define VENDOR_ID_CYPRESS 0x04b4#define PRODUCT_ID_CYPHIDCOM 0x5500 +/* Simply Automated HID->COM UPB PIM (using Cypress PID 0x5500) */ +#define VENDOR_ID_SAI 0x17dd +/* FRWD Dongle - a GPS sports watch */ #define VENDOR_ID_FRWD 0x6737#define PRODUCT_ID_CYPHIDCOM_FRWD 0x0001
drivers/usb/serial/iuu_phoenix.c +5 -3
@@ -697,14 +697,16 @@ static int iuu_uart_write(struct tty_struct *tty, struct usb_serial_port *port,struct iuu_private *priv =usb_get_serial_port_data (port);unsigned long flags; -if (count >256 ) -return -ENOMEM ; -spin_lock_irqsave (&priv->lock, flags); + count =min (count,256 - priv->writelen); +if (count ==0 ) + goto out; +/* fill the buffer */ memcpy (priv->writebuf + priv->writelen, buf, count); priv->writelen += count; +out:spin_unlock_irqrestore (&priv->lock, flags);return count;
drivers/usb/serial/option.c +6 -0
@@ -245,6 +245,7 @@ static void option_instat_callback(struct urb *urb);/* These Quectel products use Quectel's vendor ID */ #define QUECTEL_PRODUCT_EC21 0x0121#define QUECTEL_PRODUCT_EC25 0x0125 +#define QUECTEL_PRODUCT_EG95 0x0195#define QUECTEL_PRODUCT_BG96 0x0296#define QUECTEL_PRODUCT_EP06 0x0306#define QUECTEL_PRODUCT_EM12 0x0512
@@ -1097,6 +1098,8 @@ static const struct usb_device_id option_ids[] = { .driver_info = RSVD(4) }, { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25), .driver_info = RSVD(4) }, + { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95), + .driver_info = RSVD(4) }, { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), .driver_info = RSVD(4) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
@@ -2028,6 +2031,9 @@ static const struct usb_device_id option_ids[] = { .driver_info = RSVD(4) | RSVD(5) }, { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ .driver_info = RSVD(6) }, + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ { } /* Terminating entry */ };MODULE_DEVICE_TABLE (usb, option_ids);
drivers/virt/vboxguest/vboxguest_core.c +4 -2
@@ -1408,7 +1408,7 @@ static int vbg_ioctl_change_guest_capabilities(struct vbg_dev *gdev, or_mask = caps->u.in.or_mask; not_mask = caps->u.in.not_mask; -if ((or_mask | not_mask) & ~VMMDEV_EVENT_VALID_EVENT_MASK ) +if ((or_mask | not_mask) & ~VMMDEV_GUEST_CAPABILITIES_MASK )return -EINVAL ; ret = vbg_set_session_capabilities(gdev, session, or_mask, not_mask,
@@ -1482,7 +1482,8 @@ int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data)/* For VMMDEV_REQUEST hdr->type != VBG_IOCTL_HDR_TYPE_DEFAULT */ if (req_no_size ==VBG_IOCTL_VMMDEV_REQUEST (0 ) || - req ==VBG_IOCTL_VMMDEV_REQUEST_BIG ) + req ==VBG_IOCTL_VMMDEV_REQUEST_BIG || + req ==VBG_IOCTL_VMMDEV_REQUEST_BIG_ALT )return vbg_ioctl_vmmrequest (gdev, session, data);if (hdr->type !=VBG_IOCTL_HDR_TYPE_DEFAULT )
@@ -1520,6 +1521,7 @@ int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data)case VBG_IOCTL_HGCM_CALL (0 ):return vbg_ioctl_hgcm_call (gdev, session, f32bit, data);case VBG_IOCTL_LOG (0 ): +case VBG_IOCTL_LOG_ALT (0 ):return vbg_ioctl_log (data); }
drivers/virt/vboxguest/vboxguest_core.h +15 -0
@@ -15,6 +15,21 @@#include <linux/vboxguest.h> #include "vmmdev.h" +/* +* The mainline kernel version (this version) of the vboxguest module +* contained a bug where it defined VBGL_IOCTL_VMMDEV_REQUEST_BIG and +* VBGL_IOCTL_LOG using _IOC(_IOC_READ | _IOC_WRITE, 'V', ...) instead +* of _IO(V, ...) as the out of tree VirtualBox upstream version does. +* +* These _ALT definitions keep compatibility with the wrong defines the +* mainline kernel version used for a while. +* Note the VirtualBox userspace bits have always been built against +* VirtualBox upstream's headers, so this is likely not necessary. But +* we must never break our ABI so we keep these around to be 100% sure. +*/ +#define VBG_IOCTL_VMMDEV_REQUEST_BIG_ALT _IOC(_IOC_READ | _IOC_WRITE, 'V', 3, 0) +#define VBG_IOCTL_LOG_ALT (s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 9, s) +struct vbg_session ;/** VBox guest memory balloon. */
drivers/virt/vboxguest/vboxguest_linux.c +2 -1
@@ -112,7 +112,8 @@ static long vbg_misc_device_ioctl(struct file *filp, unsigned int req,* the need for a bounce-buffer and another copy later on. */ is_vmmdev_req = (req & ~IOCSIZE_MASK ) ==VBG_IOCTL_VMMDEV_REQUEST (0 ) || - req ==VBG_IOCTL_VMMDEV_REQUEST_BIG ; + req ==VBG_IOCTL_VMMDEV_REQUEST_BIG || + req ==VBG_IOCTL_VMMDEV_REQUEST_BIG_ALT ;if (is_vmmdev_req) buf =vbg_req_alloc (size,VBG_IOCTL_HDR_TYPE_DEFAULT );
drivers/virt/vboxguest/vmmdev.h +2 -0
@@ -206,6 +206,8 @@ VMMDEV_ASSERT_SIZE(vmmdev_mask, 24 + 8);* not. */ #define VMMDEV_GUEST_SUPPORTS_GRAPHICS BIT(2) +/* The mask of valid capabilities, for sanity checking. */ +#define VMMDEV_GUEST_CAPABILITIES_MASK 0x00000007U/** struct vmmdev_hypervisorinfo - Hypervisor info structure. */ struct vmmdev_hypervisorinfo {
fs/fuse/file.c +11 -1
@@ -18,6 +18,7 @@#include <linux/swap.h> #include <linux/falloc.h> #include <linux/uio.h> +#include <linux/fs.h> static const struct file_operations fuse_direct_io_file_operations;
@@ -2535,7 +2536,16 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,struct iovec *iov = iov_page; iov->iov_base = (void __user *)arg; - iov->iov_len =_IOC_SIZE (cmd); + +switch (cmd) { +case FS_IOC_GETFLAGS : +case FS_IOC_SETFLAGS : + iov->iov_len =sizeof (int ); +break ; +default : + iov->iov_len =_IOC_SIZE (cmd); +break ; + }if (_IOC_DIR (cmd) & _IOC_WRITE) { in_iov = iov;
fs/gfs2/ops_fstype.c +11 -1
@@ -1160,7 +1160,17 @@ static int fill_super(struct super_block *sb, struct gfs2_args *args, int silent goto fail_per_node; } -if (!sb_rdonly (sb)) { +if (sb_rdonly (sb)) { +struct gfs2_holder freeze_gh; + + error =gfs2_glock_nq_init (sdp->sd_freeze_gl,LM_ST_SHARED , +GL_EXACT , &freeze_gh); +if (error) { +fs_err (sdp,"can't make FS RO: %d\n" , error); + goto fail_per_node; + } +gfs2_glock_dq_uninit (&freeze_gh); + }else { error =gfs2_make_fs_rw (sdp);if (error) {fs_err (sdp,"can't make FS RW: %d\n" , error);
fs/overlayfs/export.c +1 -1
@@ -485,7 +485,7 @@ static struct dentry *ovl_lookup_real_inode(struct super_block *sb,if (IS_ERR_OR_NULL (this))return this; -if (WARN_ON (ovl_dentry_real_at (this, layer->idx) != real)) { +if (ovl_dentry_real_at (this, layer->idx) != real) {dput (this); this =ERR_PTR (-EIO ); }
fs/overlayfs/file.c +6 -4
@@ -24,13 +24,16 @@ static char ovl_whatisit(struct inode *inode, struct inode *realinode)return 'm' ; } +/* No atime modificaton nor notify on underlying */ +#define OVL_OPEN_FLAGS (O_NOATIME | FMODE_NONOTIFY) +static struct file *ovl_open_realfile (const struct file *file,struct inode *realinode) {struct inode *inode =file_inode (file);struct file *realfile;const struct cred *old_cred; -int flags = file->f_flags |O_NOATIME |FMODE_NONOTIFY ; +int flags = file->f_flags |OVL_OPEN_FLAGS ; old_cred =ovl_override_creds (inode->i_sb); realfile = open_with_fake_path(&file->f_path, flags, realinode,
@@ -51,8 +54,7 @@ static int ovl_change_flags(struct file *file, unsigned int flags)struct inode *inode =file_inode (file);int err; -/* No atime modificaton on underlying */ - flags |=O_NOATIME |FMODE_NONOTIFY ; + flags |=OVL_OPEN_FLAGS ;/* If some flag changed that cannot be changed then something's amiss */ if (WARN_ON ((file->f_flags ^ flags) & ~OVL_SETFL_MASK ))
@@ -105,7 +107,7 @@ static int ovl_real_fdget_meta(const struct file *file, struct fd *real, }/* Did the flags change since open? */ -if (unlikely ((file->f_flags ^ real->file->f_flags) & ~O_NOATIME )) +if (unlikely ((file->f_flags ^ real->file->f_flags) & ~OVL_OPEN_FLAGS ))return ovl_change_flags (real->file, file->f_flags);return 0 ;
fs/overlayfs/super.c +10 -1
@@ -1310,14 +1310,23 @@ static int ovl_get_lower_layers(struct super_block *sb, struct ovl_fs *ofs,if (err <0 ) goto out; +/* +* Check if lower root conflicts with this overlay layers before +* checking if it is in-use as upperdir/workdir of "another" +* mount, because we do not bother to check in ovl_is_inuse() if +* the upperdir/workdir is in fact in-use by our +* upperdir/workdir. +*/ err =ovl_setup_trap (sb, stack[i].dentry, &trap,"lowerdir" );if (err) goto out;if (ovl_is_inuse (stack[i].dentry)) { err =ovl_report_in_use (ofs,"lowerdir" ); -if (err) +if (err) { +iput (trap); goto out; + } } mnt =clone_private_mount (&stack[i]);
include/linux/cgroup-defs.h +6 -2
@@ -755,7 +755,9 @@ struct sock_cgroup_data { union { #ifdef __LITTLE_ENDIAN struct { - u8 is_data; + u8 is_data : 1; + u8 no_refcnt : 1; + u8 unused : 6; u8 padding; u16 prioidx; u32 classid;
@@ -765,7 +767,9 @@ struct sock_cgroup_data {u32 classid;u16 prioidx;u8 padding; - u8 is_data; + u8 unused : 6; + u8 no_refcnt : 1; + u8 is_data : 1; } __packed;#endif u64 val;
include/linux/cgroup.h +3 -1
@@ -810,6 +810,7 @@ extern spinlock_t cgroup_sk_update_lock;void cgroup_sk_alloc_disable (void );void cgroup_sk_alloc (struct sock_cgroup_data *skcd); +void cgroup_sk_clone (struct sock_cgroup_data *skcd);void cgroup_sk_free (struct sock_cgroup_data *skcd);static inline struct cgroup *sock_cgroup_ptr (struct sock_cgroup_data *skcd)
@@ -823,7 +824,7 @@ static inline struct cgroup *sock_cgroup_ptr(struct sock_cgroup_data *skcd)*/ v =READ_ONCE (skcd->val); -if (v &1 ) +if (v &3 )return &cgrp_dfl_root.cgrp;return (struct cgroup *)(unsigned long )v ?: &cgrp_dfl_root.cgrp;
@@ -835,6 +836,7 @@ static inline struct cgroup *sock_cgroup_ptr(struct sock_cgroup_data *skcd)#else /* CONFIG_CGROUP_DATA */ static inline void cgroup_sk_alloc (struct sock_cgroup_data *skcd) {} +static inline void cgroup_sk_clone (struct sock_cgroup_data *skcd) {}static inline void cgroup_sk_free (struct sock_cgroup_data *skcd) {}#endif /* CONFIG_CGROUP_DATA */
include/linux/if_vlan.h +22 -7
@@ -30,6 +30,8 @@#define VLAN_ETH_DATA_LEN 1500/* Max. octets in payload */ #define VLAN_ETH_FRAME_LEN 1518/* Max. octets in frame sans FCS */ +#define VLAN_MAX_DEPTH 8/* Max. number of nested VLAN tags parsed */ +/* * struct vlan_hdr - vlan header * @h_vlan_TCI: priority and VLAN ID
@@ -558,10 +560,10 @@ static inline int vlan_get_tag(const struct sk_buff *skb, u16 *vlan_tci)* Returns the EtherType of the packet, regardless of whether it is * vlan encapsulated (normal or hardware accelerated) or not. */ -static inline __be16 __vlan_get_protocol (struct sk_buff *skb,__be16 type, +static inline __be16 __vlan_get_protocol (const struct sk_buff *skb,__be16 type,int *depth) { -unsigned int vlan_depth = skb->mac_len; +unsigned int vlan_depth = skb->mac_len, parse_depth =VLAN_MAX_DEPTH ;/* if type is 802.1Q/AD then the header should already be * present at mac_len - VLAN_HLEN (if mac_len > 0), or at
@@ -576,13 +578,12 @@ static inline __be16 __vlan_get_protocol(struct sk_buff *skb, __be16 type, vlan_depth =ETH_HLEN ; }do { -struct vlan_hdr *vh; +struct vlan_hdr vhdr, *vh; -if (unlikely (!pskb_may_pull (skb, - vlan_depth +VLAN_HLEN ))) + vh =skb_header_pointer (skb, vlan_depth,sizeof (vhdr), &vhdr); +if (unlikely (!vh || !--parse_depth))return 0 ; - vh = (struct vlan_hdr *)(skb->data + vlan_depth); type = vh->h_vlan_encapsulated_proto; vlan_depth +=VLAN_HLEN ; }while (eth_type_vlan (type));
@@ -601,11 +602,25 @@ static inline __be16 __vlan_get_protocol(struct sk_buff *skb, __be16 type,* Returns the EtherType of the packet, regardless of whether it is * vlan encapsulated (normal or hardware accelerated) or not. */ -static inline __be16 vlan_get_protocol (struct sk_buff *skb) +static inline __be16 vlan_get_protocol (const struct sk_buff *skb) {return __vlan_get_protocol (skb, skb->protocol,NULL ); } +/* A getter for the SKB protocol field which will handle VLAN tags consistently +* whether VLAN acceleration is enabled or not. +*/ +static inline __be16 skb_protocol (const struct sk_buff *skb,bool skip_vlan) +{ +if (!skip_vlan) +/* VLAN acceleration strips the VLAN header from the skb and +* moves it to skb->vlan_proto +*/ +return skb_vlan_tag_present (skb) ? skb->vlan_proto : skb->protocol; + +return vlan_get_protocol (skb); +} +static inline void vlan_set_encap_proto (struct sk_buff *skb,struct vlan_hdr *vhdr) {
include/linux/printk.h +0 -5
@@ -206,7 +206,6 @@ __printf(1, 2) void dump_stack_set_arch_desc(const char *fmt, ...);void dump_stack_print_info (const char *log_lvl);void show_regs_print_info (const char *log_lvl); extern asmlinkage void dump_stack(void) __cold; -extern void printk_safe_init (void );extern void printk_safe_flush (void );extern void printk_safe_flush_on_panic (void );#else
@@ -273,10 +272,6 @@ static inline asmlinkage void dump_stack(void) { } -static inline void printk_safe_init (void ) -{ -} -static inline void printk_safe_flush (void ) { }
include/net/dst.h +9 -1
@@ -412,7 +412,15 @@ static inline struct neighbour *dst_neigh_lookup(const struct dst_entry *dst, costatic inline struct neighbour *dst_neigh_lookup_skb (const struct dst_entry *dst,struct sk_buff *skb) { -struct neighbour *n = dst->ops->neigh_lookup (dst, skb,NULL ); +struct neighbour *n =NULL ; + +/* The packets from tunnel devices (eg bareudp) may have only +* metadata in the dst pointer of skb. Hence a pointer check of +* neigh_lookup is needed. +*/ +if (dst->ops->neigh_lookup) + n = dst->ops->neigh_lookup (dst, skb,NULL ); +return IS_ERR (n) ?NULL : n; }
include/net/genetlink.h +0 -8
@@ -34,12 +34,6 @@ struct genl_info;* do additional, common, filtering and return an error * @post_doit: called after an operation's doit callback, it may * undo operations done by pre_doit, for example release locks -* @mcast_bind: a socket bound to the given multicast group (which -* is given as the offset into the groups array) -* @mcast_unbind: a socket was unbound from the given multicast group. -* Note that unbind() will not be called symmetrically if the -* generic netlink family is removed while there are still open -* sockets. * @attrbuf: buffer to store parsed attributes (private) * @mcgrps: multicast groups used by this family * @n_mcgrps: number of multicast groups
@@ -62,8 +56,6 @@ struct genl_family {void (*post_doit)(const struct genl_ops *ops,struct sk_buff *skb,struct genl_info *info); -int (*mcast_bind)(struct net *net,int group); -void (*mcast_unbind)(struct net *net,int group);struct nlattr ** attrbuf;/* private */ const struct genl_ops * ops;const struct genl_multicast_group *mcgrps;
include/net/inet_ecn.h +16 -7
@@ -4,6 +4,7 @@#include <linux/ip.h> #include <linux/skbuff.h> +#include <linux/if_vlan.h> #include <net/inet_sock.h> #include <net/dsfield.h>
@@ -142,7 +143,7 @@ static inline void ipv6_copy_dscp(unsigned int dscp, struct ipv6hdr *inner)static inline int INET_ECN_set_ce (struct sk_buff *skb) { -switch (skb->protocol) { +switch (skb_protocol (skb, true)) {case cpu_to_be16 (ETH_P_IP ):if (skb_network_header (skb) +sizeof (struct iphdr ) <=skb_tail_pointer (skb))
@@ -209,12 +210,16 @@ static inline int IP_ECN_decapsulate(const struct iphdr *oiph, {__u8 inner; -if (skb->protocol ==htons (ETH_P_IP )) +switch (skb_protocol (skb, true)) { +case htons (ETH_P_IP ): inner =ip_hdr (skb)->tos; -else if (skb->protocol ==htons (ETH_P_IPV6 )) +break ; +case htons (ETH_P_IPV6 ): inner =ipv6_get_dsfield (ipv6_hdr (skb)); -else +break ; +default :return 0 ; + }return INET_ECN_decapsulate (skb, oiph->tos, inner); }
@@ -224,12 +229,16 @@ static inline int IP6_ECN_decapsulate(const struct ipv6hdr *oipv6h, {__u8 inner; -if (skb->protocol ==htons (ETH_P_IP )) +switch (skb_protocol (skb, true)) { +case htons (ETH_P_IP ): inner =ip_hdr (skb)->tos; -else if (skb->protocol ==htons (ETH_P_IPV6 )) +break ; +case htons (ETH_P_IPV6 ): inner =ipv6_get_dsfield (ipv6_hdr (skb)); -else +break ; +default :return 0 ; + }return INET_ECN_decapsulate (skb,ipv6_get_dsfield (oipv6h), inner); }
include/net/pkt_sched.h +0 -11
@@ -122,17 +122,6 @@ static inline void qdisc_run(struct Qdisc *q) } } -static inline __be16 tc_skb_protocol (const struct sk_buff *skb) -{ -/* We need to take extra care in case the skb came via -* vlan accelerated path. In that case, use skb->vlan_proto -* as the original vlan header was already stripped. -*/ -if (skb_vlan_tag_present (skb)) -return skb->vlan_proto; -return skb->protocol; -} -/* Calculate maximal size of packet seen by hard_start_xmit routine of this device. */
include/trace/events/rxrpc.h +1 -1
@@ -408,7 +408,7 @@ enum rxrpc_tx_point { EM(rxrpc_cong_begin_retransmission, " Retrans") \ EM(rxrpc_cong_cleared_nacks, " Cleared") \ EM(rxrpc_cong_new_low_nack, " NewLowN") \ - EM(rxrpc_cong_no_change, "") \ + EM(rxrpc_cong_no_change, " -") \ EM(rxrpc_cong_progress, " Progres") \ EM(rxrpc_cong_retransmit_again, " ReTxAgn") \EM (rxrpc_cong_rtt_window_end," RttWinE" ) \
include/uapi/linux/vboxguest.h +2 -2
@@ -103,7 +103,7 @@ VMMDEV_ASSERT_SIZE(vbg_ioctl_driver_version_info, 24 + 20);/* IOCTL to perform a VMM Device request larger then 1KB. */ -#define VBG_IOCTL_VMMDEV_REQUEST_BIG _IOC(_IOC_READ | _IOC_WRITE, 'V', 3, 0) +#define VBG_IOCTL_VMMDEV_REQUEST_BIG _IO('V', 3)/** VBG_IOCTL_HGCM_CONNECT data structure. */
@@ -198,7 +198,7 @@ struct vbg_ioctl_log { } u; }; -#define VBG_IOCTL_LOG (s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 9, s) +#define VBG_IOCTL_LOG (s) _IO('V', 9)/** VBG_IOCTL_WAIT_FOR_EVENTS data structure. */
init/main.c +0 -1
@@ -641,7 +641,6 @@ asmlinkage __visible void __init start_kernel(void)softirq_init ();timekeeping_init ();time_init (); -printk_safe_init ();perf_event_init ();profile_init ();call_function_init ();
kernel/cgroup/cgroup.c +18 -11
@@ -5928,17 +5928,8 @@ void cgroup_sk_alloc_disable(void)void cgroup_sk_alloc (struct sock_cgroup_data *skcd) { -if (cgroup_sk_alloc_disabled) -return ; - -/* Socket clone path */ -if (skcd->val) { -/* -* We might be cloning a socket which is left in an empty -* cgroup and the cgroup might have already been rmdir'd. -* Don't use cgroup_get_live(). -*/ -cgroup_get (sock_cgroup_ptr (skcd)); +if (cgroup_sk_alloc_disabled) { + skcd->no_refcnt =1 ;return ; }
@@ -5962,8 +5953,24 @@ void cgroup_sk_alloc(struct sock_cgroup_data *skcd)rcu_read_unlock (); } +void cgroup_sk_clone (struct sock_cgroup_data *skcd) +{ +/* Socket clone path */ +if (skcd->val) { +/* +* We might be cloning a socket which is left in an empty +* cgroup and the cgroup might have already been rmdir'd. +* Don't use cgroup_get_live(). +*/ +cgroup_get (sock_cgroup_ptr (skcd)); + } +} +void cgroup_sk_free (struct sock_cgroup_data *skcd) { +if (skcd->no_refcnt) +return ;
Lines of this file are not shown. View the raw message.
net/netlink/genetlink.c +0 -49
49 lines not on this page · 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.