09 Mar, 2020

1 commit


08 Mar, 2020

8 commits

  • Pull char/misc fixes from Greg KH:
    "Here are four small char/misc driver fixes for reported issues for
    5.6-rc5.

    These fixes are:

    - binder fix for a potential use-after-free problem found (took two
    tries to get it right)

    - interconnect core fix

    - altera-stapl driver fix

    All four of these have been in linux-next for a while with no reported
    issues"

    * tag 'char-misc-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    binder: prevent UAF for binderfs devices II
    interconnect: Handle memory allocation errors
    altera-stapl: altera_get_note: prevent write beyond end of 'key'
    binder: prevent UAF for binderfs devices

    Linus Torvalds
     
  • Pull driver core and debugfs fixes from Greg KH:
    "Here are four small driver core / debugfs patches for 5.6-rc3:

    - debugfs api cleanup now that all debugfs_create_regset32() callers
    have been fixed up. This was waiting until after the -rc1 merge as
    these fixes came in through different trees

    - driver core sync state fixes based on reports of minor issues found
    in the feature

    All of these have been in linux-next with no reported issues"

    * tag 'driver-core-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    driver core: Skip unnecessary work when device doesn't have sync_state()
    driver core: Add dev_has_sync_state()
    driver core: Call sync_state() even if supplier has no consumers
    debugfs: remove return value of debugfs_create_regset32()

    Linus Torvalds
     
  • Pull tty/serial fixes from Greg KH:
    "Here are some small tty/serial fixes for 5.6-rc5

    Just some small serial driver fixes, and a vt core fixup, full details
    are:

    - vt fixes for issues found by syzbot

    - serdev fix for Apple boxes

    - fsl_lpuart serial driver fixes

    - MAINTAINER update for incorrect serial files

    - new device ids for 8250_exar driver

    - mvebu-uart fix

    All of these have been in linux-next with no reported issues"

    * tag 'tty-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    tty: serial: fsl_lpuart: free IDs allocated by IDA
    Revert "tty: serial: fsl_lpuart: drop EARLYCON_DECLARE"
    serdev: Fix detection of UART devices on Apple machines.
    MAINTAINERS: Add missed files related to Synopsys DesignWare UART
    serial: 8250_exar: add support for ACCES cards
    tty:serial:mvebu-uart:fix a wrong return
    vt: selection, push sel_lock up
    vt: selection, push console lock down

    Linus Torvalds
     
  • Pull USB/PHY fixes from Greg KH:
    "Here are some small USB and PHY driver fixes for reported issues for
    5.6-rc5.

    Included in here are:

    - phy driver fixes

    - new USB quirks

    - USB cdns3 gadget driver fixes

    - USB hub core fixes

    All of these have been in linux-next with no reported issues"

    * tag 'usb-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    usb: dwc3: gadget: Update chain bit correctly when using sg list
    usb: core: port: do error out if usb_autopm_get_interface() fails
    usb: core: hub: do error out if usb_autopm_get_interface() fails
    usb: core: hub: fix unhandled return by employing a void function
    usb: storage: Add quirk for Samsung Fit flash
    usb: quirks: add NO_LPM quirk for Logitech Screen Share
    usb: usb251xb: fix regulator probe and error handling
    phy: allwinner: Fix GENMASK misuse
    usb: cdns3: gadget: toggle cycle bit before reset endpoint
    usb: cdns3: gadget: link trb should point to next request
    phy: mapphone-mdm6600: Fix timeouts by adding wake-up handling
    phy: brcm-sata: Correct MDIO operations for 40nm platforms
    phy: ti: gmii-sel: do not fail in case of gmii
    phy: ti: gmii-sel: fix set of copy-paste errors
    phy: core: Fix phy_get() to not return error on link creation failure
    phy: mapphone-mdm6600: Fix write timeouts with shorter GPIO toggle interval

    Linus Torvalds
     
  • Pull rdma fixes from Jason Gunthorpe:
    "Nothing particularly exciting, some small ODP regressions from the mmu
    notifier rework, another bunch of syzkaller fixes, and a bug fix for a
    botched syzkaller fix in the first rc pull request.

    - Fix busted syzkaller fix in 'get_new_pps' - this turned out to
    crash on certain HW configurations

    - Bug fixes for various missed things in error unwinds

    - Add a missing rcu_read_lock annotation in hfi/qib

    - Fix two ODP related regressions from the recent mmu notifier
    changes

    - Several more syzkaller bugs in siw, RDMA netlink, verbs and iwcm

    - Revert an old patch in CMA as it is now shown to not be allocating
    port numbers properly"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
    RDMA/iwcm: Fix iwcm work deallocation
    RDMA/siw: Fix failure handling during device creation
    RDMA/nldev: Fix crash when set a QP to a new counter but QPN is missing
    RDMA/odp: Ensure the mm is still alive before creating an implicit child
    RDMA/core: Fix protection fault in ib_mr_pool_destroy
    IB/mlx5: Fix implicit ODP race
    IB/hfi1, qib: Ensure RCU is locked when accessing list
    RDMA/core: Fix pkey and port assignment in get_new_pps
    RMDA/cm: Fix missing ib_cm_destroy_id() in ib_cm_insert_listen()
    RDMA/rw: Fix error flow during RDMA context initialization
    RDMA/core: Fix use of logical OR in get_new_pps
    Revert "RDMA/cma: Simplify rdma_resolve_addr() error flow"

    Linus Torvalds
     
  • Pull io_uring fixes from Jens Axboe:
    "Here are a few io_uring fixes that should go into this release. This
    contains:

    - Removal of (now) unused io_wq_flush() and associated flag (Pavel)

    - Fix cancelation lockup with linked timeouts (Pavel)

    - Fix for potential use-after-free when freeing percpu ref for fixed
    file sets

    - io-wq cancelation fixups (Pavel)"

    * tag 'io_uring-5.6-2020-03-07' of git://git.kernel.dk/linux-block:
    io_uring: fix lockup with timeouts
    io_uring: free fixed_file_data after RCU grace period
    io-wq: remove io_wq_flush and IO_WQ_WORK_INTERNAL
    io-wq: fix IO_WQ_WORK_NO_CANCEL cancellation

    Linus Torvalds
     
  • Pull block fixes from Jens Axboe:
    "Here are a few fixes that should go into this release. This contains:

    - Revert of a bad bcache patch from this merge window

    - Removed unused function (Daniel)

    - Fixup for the blktrace fix from Jan from this release (Cengiz)

    - Fix of deeper level bfqq overwrite in BFQ (Carlo)"

    * tag 'block-5.6-2020-03-07' of git://git.kernel.dk/linux-block:
    block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group()
    blktrace: fix dereference after null check
    Revert "bcache: ignore pending signals when creating gc and allocator thread"
    block: Remove used kblockd_schedule_work_on()

    Linus Torvalds
     
  • Pull media fixes from Mauro Carvalho Chehab:

    - a fix for the media controller links in both hantro driver and in
    v4l2-mem2mem core

    - some fixes for the pulse8-cec driver

    - vicodec: handle alpha channel for RGB32 formats, as it may be used

    - mc-entity.c: fix handling of pad flags

    * tag 'media/v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
    media: hantro: Fix broken media controller links
    media: mc-entity.c: use & to check pad flags, not ==
    media: v4l2-mem2mem.c: fix broken links
    media: vicodec: process all 4 components for RGB32 formats
    media: pulse8-cec: close serio in disconnect, not adap_free
    media: pulse8-cec: INIT_DELAYED_WORK was called too late

    Linus Torvalds
     

07 Mar, 2020

23 commits

  • There is a recipe to deadlock the kernel: submit a timeout sqe with a
    linked_timeout (e.g. test_single_link_timeout_ception() from liburing),
    and SIGKILL the process.

    Then, io_kill_timeouts() takes @ctx->completion_lock, but the timeout
    isn't flagged with REQ_F_COMP_LOCKED, and will try to double grab it
    during io_put_free() to cancel the linked timeout. Probably, the same
    can happen with another io_kill_timeout() call site, that is
    io_commit_cqring().

    Signed-off-by: Pavel Begunkov
    Signed-off-by: Jens Axboe

    Pavel Begunkov
     
  • Pull s390 fixes from Vasily Gorbik:

    - Fix panic in gup_fast on large pud by providing an implementation of
    pud_write. This has been overlooked during migration to common gup
    code.

    - Fix unexpected write combining on PCI stores.

    * tag 's390-5.6-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/pci: Fix unexpected write combine on resource
    s390/mm: fix panic in gup_fast on large pud

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:
    "Some more powerpc fixes for 5.6:

    - One fix for a recent regression to our breakpoint/watchpoint code.

    - Another fix for our KUAP support, this time a missing annotation in
    a rarely used path in signal handling.

    - A fix for our handling of a CPU feature that effects the PMU, when
    booting guests in some configurations.

    - A minor fix to our linker script to explicitly include the .BTF
    section.

    Thanks to: Christophe Leroy, Desnes A. Nunes do Rosario, Leonardo
    Bras, Naveen N. Rao, Ravi Bangoria, Stefan Berger"

    * tag 'powerpc-5.6-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/mm: Fix missing KUAP disable in flush_coherent_icache()
    powerpc: fix hardware PMU exception bug on PowerVM compatibility mode systems
    powerpc: Include .BTF section
    powerpc/watchpoint: Don't call dar_within_range() for Book3S

    Linus Torvalds
     
  • Pull xen fixes from Juergen Gross:
    "Four fixes and a small cleanup patch:

    - two fixes by Dongli Zhang fixing races in the xenbus driver

    - two fixes by me fixing issues introduced in 5.6

    - a small cleanup by Gustavo Silva replacing a zero-length array with
    a flexible-array"

    * tag 'for-linus-5.6b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen/blkfront: fix ring info addressing
    xen/xenbus: fix locking
    xenbus: req->err should be updated before req->state
    xenbus: req->body should be updated before req->state
    xen: Replace zero-length array with flexible-array member

    Linus Torvalds
     
  • Pull thread fixes from Christian Brauner:
    "Here are a few hopefully uncontroversial fixes:

    - Use RCU_INIT_POINTER() when initializing rcu protected members in
    task_struct to fix sparse warnings.

    - Add pidfd_fdinfo_test binary to .gitignore file"

    * tag 'for-linus-2020-03-07' of gitolite.kernel.org:pub/scm/linux/kernel/git/brauner/linux:
    selftests: pidfd: Add pidfd_fdinfo_test in .gitignore
    exit: Fix Sparse errors and warnings
    fork: Use RCU_INIT_POINTER() instead of rcu_access_pointer()

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "The regular "bump-in-the-middle" updates, containing mostly ASoC-
    related fixes at this time. All changes are reasonably small.

    A few entries are for ASoC and ALSA core parts (DAPM, PCM, topology)
    for followups of the recent changes and potential buffer overflow by
    snprintf(), while the rest are (both new and old) device-specific
    fixes for Intel, meson, tas2562, rt1015, as well as the usual HD-audio
    quirks"

    * tag 'sound-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (25 commits)
    ALSA: sgio2audio: Remove usage of dropped hw_params/hw_free functions
    ALSA: hda/realtek - Enable the headset of ASUS B9450FA with ALC294
    ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master
    ALSA: hda/realtek - Add Headset Button supported for ThinkPad X1
    ALSA: hda/realtek - Add Headset Mic supported
    ASoC: wm8741: Fix typo in Kconfig prompt
    ASoC: stm32: sai: manage rebind issue
    ASoC: SOF: Fix snd_sof_ipc_stream_posn()
    ASoC: rt1015: modify pre-divider for sysclk
    ASoC: rt1015: add operation callback function for rt1015_dai[]
    ASoC: soc-component: tidyup snd_soc_pcm_component_sync_stop()
    ASoC: dapm: Correct DAPM handling of active widgets during shutdown
    ASoC: tas2562: Fix sample rate error message
    ASoC: Intel: Skylake: Fix available clock counter incrementation
    ASoC: soc-pcm/soc-compress: don't use snd_soc_dapm_stream_stop()
    ASoC: meson: g12a: add tohdmitx reset
    ASoC: pcm512x: Fix unbalanced regulator enable call in probe error path
    ASoC: soc-core: fix for_rtd_codec_dai_rollback() macro
    ASoC: topology: Fix memleak in soc_tplg_manifest_load()
    ASoC: topology: Fix memleak in soc_tplg_link_elems_load()
    ...

    Linus Torvalds
     
  • …/broonie/sound into for-linus

    ASoC: Fixes for v5.6

    More fixes that have arrived since the merge window, spread out all
    over. There's a few things like the operation callback addition for
    rt1015 and the meson reset addition which add small new bits of
    functionality to fix non-working systems, they're all very small and for
    parts of newly added functionality.

    Takashi Iwai
     
  • …/git/shuah/linux-kselftest

    Pull kselftest update from Shuah Khan:
    "This consists of a cleanup patch to undo changes to global .gitignore
    that added selftests/lkdtm objects and add them to a local
    selftests/lkdtm/.gitignore.

    Summary of Linus's comments on local vs. global gitignore scope:

    - Keep local gitignore patterns in local files.

    - Put only global gitignore patterns in the top-level gitignore file.

    Local scope keeps things much better separated. It also incidentally
    means that if a directory gets renamed, the gitignore file continues
    to work unless in the case of renaming the actual files themselves
    that are named in the gitignore"

    * tag 'linux-kselftest-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftest/lkdtm: Use local .gitignore

    Linus Torvalds
     
  • Pull RISC-V fixes from Palmer Dabbelt:
    "This contains a handful of fixes that I would like to target for 5.6:

    - A pair of fixes to module loading, which we hope solve the last of
    the issues with module text being loaded too sparsely for our call
    relocations.

    - A Kconfig fix that disallows selecting memory models not supported
    by NOMMU.

    - A series of Kconfig updates to ease selecting the drivers necessary
    to run on QEMU's virt platform.

    - DTS updates for SiFive's HiFive Unleashed.

    - A fix to our seccomp support that avoids mangling restartable
    syscalls"

    * tag 'riscv-for-linus-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
    riscv: fix seccomp reject syscall code path
    riscv: dts: Add GPIO reboot method to HiFive Unleashed DTS file
    RISC-V: Select Goldfish RTC driver for QEMU virt machine
    RISC-V: Select SYSCON Reboot and Poweroff for QEMU virt machine
    RISC-V: Enable QEMU virt machine support in defconfigs
    RISC-V: Add kconfig option for QEMU virt machine
    riscv: Fix range looking for kernel image memblock
    riscv: Force flat memory model with no-mmu
    riscv: Change code model of module to medany to improve data accessing
    riscv: avoid the PIC offset of static percpu data in module beyond 2G limits

    Linus Torvalds
     
  • This makes the script more convenient to run.

    Signed-off-by: Jonathan Neuschäfer
    Signed-off-by: Linus Torvalds

    Jonathan Neuschäfer
     
  • Pull devicetree fixes from Rob Herring:
    "Another batch of DT fixes. I think this should be the last of it, but
    sending pull requests seems to cause people to send more fixes.

    Summary:

    - Fixes for warnings introduced by hierarchical PSCI binding changes

    - Fixes for broken doc references due to DT schema conversions

    - Several grammar and typo fixes

    - Fix a bunch of dtc warnings in examples"

    * tag 'devicetree-fixes-for-5.6-3' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    dt-bindings: arm: Fixup the DT bindings for hierarchical PSCI states
    dt-bindings: power: Extend nodename pattern for power-domain providers
    MAINTAINERS: update ALLWINNER CPUFREQ DRIVER entry
    dt-bindings: bus: Drop empty compatible string in example
    dt-bindings: power: Convert domain-idle-states bindings to json-schema
    dt-bindings: arm: Fix cpu compatibles in the hierarchical example for PSCI
    dt-bindings: arm: Correct links to idle states definitions
    dt-bindings: mfd: Fix typo in file name of twl-familly.txt
    dt-bindings: mfd: tps65910: Improve grammar
    dt-bindings: mfd: zii,rave-sp: Fix a typo ("onborad")
    dt-bindings: arm: fsl: fix APF6Dev compatible
    dt-bindings: Fix dtc warnings in examples
    docs: dt: fix several broken doc references
    docs: dt: fix several broken references due to renames
    MAINTAINERS: clean up PCIE DRIVER FOR CAVIUM THUNDERX

    Linus Torvalds
     
  • Pull vgacon fix from Daniel Vetter:
    "One vgacon input check for stable"

    * tag 'drm-fixes-2020-03-06-1' of git://anongit.freedesktop.org/drm/drm:
    vgacon: Fix a UAF in vgacon_invert_region

    Linus Torvalds
     
  • Pull btrfs fix from David Sterba:
    "One fixup for DIO when in use with the new checksums, a missed case
    where the checksum size was still assuming u32"

    * tag 'for-5.6-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
    btrfs: fix RAID direct I/O reads with alternate csums

    Linus Torvalds
     
  • Pull file locking fixes from Jeff Layton:
    "Just a couple of late-breaking patches for the file locking code. The
    second patch (from yangerkun) fixes a rather nasty looking potential
    use-after-free that should go to stable.

    The other patch could technically wait for 5.7, but it's fairly
    innocuous so I figured we might as well take it"

    * tag 'filelock-v5.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux:
    locks: fix a potential use-after-free problem when wakeup a waiter
    fcntl: Distribute switch variables for initialization

    Linus Torvalds
     
  • Pull spi fixes from Mark Brown:
    "A selection of small fixes, mostly for drivers, that have arrived
    since the merge window. None of them are earth shattering in
    themselves but all useful for affected systems"

    * tag 'spi-fix-v5.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
    spi: spi_register_controller(): free bus id on error paths
    spi: bcm63xx-hsspi: Really keep pll clk enabled
    spi: atmel-quadspi: fix possible MMIO window size overrun
    spi/zynqmp: remove entry that causes a cs glitch
    spi: pxa2xx: Add CS control clock quirk
    spi: spidev: Fix CS polarity if GPIO descriptors are used
    spi: qup: call spi_qup_pm_resume_runtime before suspending
    spi: spi-omap2-mcspi: Support probe deferral for DMA channels
    spi: spi-omap2-mcspi: Handle DMA size restriction on AM65x

    Linus Torvalds
     
  • …git/broonie/regulator

    Pull regulator fixes from Mark Brown:
    "A couple of small fixes, one for a minor issue in the stm32-vrefbuf
    driver and a documentation fix in the Qualcomm code"

    * tag 'regulator-fix-v5.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
    regulator: stm32-vrefbuf: fix a possible overshoot when re-enabling
    regulator: qcom_spmi: Fix docs for PM8004

    Linus Torvalds
     
  • Pull hwmon fixes from Guenter Roeck:
    "Fix an error return in the adt7462 driver, bad voltage limits reported
    by the xdpe12284 driver, and a broken documentation reference in the
    adm1177 driver documentation"

    * tag 'hwmon-for-v5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (adt7462) Fix an error return in ADT7462_REG_VOLT()
    hwmon: (pmbus/xdpe12284) Add callback for vout limits conversion
    docs: adm1177: fix a broken reference

    Linus Torvalds
     
  • Pull arm64 fixes from Will Deacon:
    "Here are another three arm64 fixes for 5.6, all pretty minor. Main
    thing is fixing a silly bug in the fsl_imx8_ddr PMU driver where we
    would zero the counters when disabling them.

    - Fix misreporting of ASID limit when KPTI is enabled

    - Fix busted NULL pointer checks for GICC structure in ACPI PMU code

    - Avoid nobbling the "fsl_imx8_ddr" PMU counters when disabling them"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: context: Fix ASID limit in boot messages
    drivers/perf: arm_pmu_acpi: Fix incorrect checking of gicc pointer
    drivers/perf: fsl_imx8_ddr: Correct the CLEAR bit definition

    Linus Torvalds
     
  • When syzkaller tests, there is a UAF:
    BUG: KASan: use after free in vgacon_invert_region+0x9d/0x110 at addr
    ffff880000100000
    Read of size 2 by task syz-executor.1/16489
    page:ffffea0000004000 count:0 mapcount:-127 mapping: (null)
    index:0x0
    page flags: 0xfffff00000000()
    page dumped because: kasan: bad access detected
    CPU: 1 PID: 16489 Comm: syz-executor.1 Not tainted
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
    Call Trace:
    [] dump_stack+0x1e/0x20
    [] kasan_report+0x577/0x950
    [] __asan_load2+0x62/0x80
    [] vgacon_invert_region+0x9d/0x110
    [] invert_screen+0xe5/0x470
    [] set_selection+0x44b/0x12f0
    [] tioclinux+0xee/0x490
    [] vt_ioctl+0xff4/0x2670
    [] tty_ioctl+0x46a/0x1a10
    [] do_vfs_ioctl+0x5bd/0xc40
    [] SyS_ioctl+0x132/0x170
    [] system_call_fastpath+0x22/0x27
    Memory state around the buggy address:
    ffff8800000fff00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00
    ffff8800000fff80: 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00
    >ffff880000100000: ff ff ff ff ff ff ff ff ff ff ff ff ff
    ff ff ff

    It can be reproduce in the linux mainline by the program:
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    struct tiocl_selection {
    unsigned short xs; /* X start */
    unsigned short ys; /* Y start */
    unsigned short xe; /* X end */
    unsigned short ye; /* Y end */
    unsigned short sel_mode; /* selection mode */
    };

    #define TIOCL_SETSEL 2
    struct tiocl {
    unsigned char type;
    unsigned char pad;
    struct tiocl_selection sel;
    };

    int main()
    {
    int fd = 0;
    const char *dev = "/dev/char/4:1";

    struct vt_consize v = {0};
    struct tiocl tioc = {0};

    fd = open(dev, O_RDWR, 0);

    v.v_rows = 3346;
    ioctl(fd, VT_RESIZEX, &v);

    tioc.type = TIOCL_SETSEL;
    ioctl(fd, TIOCLINUX, &tioc);

    return 0;
    }

    When resize the screen, update the 'vc->vc_size_row' to the new_row_size,
    but when 'set_origin' in 'vgacon_set_origin', vgacon use 'vga_vram_base'
    for 'vc_origin' and 'vc_visible_origin', not 'vc_screenbuf'. It maybe
    smaller than 'vc_screenbuf'. When TIOCLINUX, use the new_row_size to calc
    the offset, it maybe larger than the vga_vram_size in vgacon driver, then
    bad access.
    Also, if set an larger screenbuf firstly, then set an more larger
    screenbuf, when copy old_origin to new_origin, a bad access may happen.

    So, If the screen size larger than vga_vram, resize screen should be
    failed. This alse fix CVE-2020-8649 and CVE-2020-8647.

    Linus pointed out that overflow checking seems absent. We're saved by
    the existing bounds checks in vc_do_resize() with rather strict
    limits:

    if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW)
    return -EINVAL;

    Fixes: 0aec4867dca14 ("[PATCH] SVGATextMode fix")
    Reference: CVE-2020-8647 and CVE-2020-8649
    Reported-by: Hulk Robot
    Signed-off-by: Zhang Xiaoxu
    [danvet: augment commit message to point out overflow safety]
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter
    Link: https://patchwork.freedesktop.org/patch/msgid/20200304022429.37738-1-zhangxiaoxu5@huawei.com

    Zhang Xiaoxu
     
  • The hierarchical topology with power-domain should be described through
    child nodes, rather than as currently described in the PSCI root node. Fix
    this by adding a patternProperties with a corresponding reference to the
    power-domain DT binding.

    Additionally, update the example to conform to the new pattern, but also to
    the adjusted domain-idle-state DT binding.

    Fixes: a3f048b5424e ("dt: psci: Update DT bindings to support hierarchical PSCI states")
    Signed-off-by: Ulf Hansson
    [robh: Add missing allOf, tweak power-domain node name]
    Signed-off-by: Rob Herring

    Ulf Hansson
     
  • The existing binding requires the nodename to have a '@', which is a bit
    limiting for the wider use case. Therefore, let's extend the pattern to
    allow either '@' or '-'.

    Fixes: a3f048b5424e ("dt: psci: Update DT bindings to support hierarchical PSCI states")
    Signed-off-by: Ulf Hansson
    [robh: drop example change]
    Signed-off-by: Rob Herring

    Ulf Hansson
     
  • The percpu refcount protects this structure, and we can have an atomic
    switch in progress when exiting. This makes it unsafe to just free the
    struct normally, and can trigger the following KASAN warning:

    BUG: KASAN: use-after-free in percpu_ref_switch_to_atomic_rcu+0xfa/0x1b0
    Read of size 1 at addr ffff888181a19a30 by task swapper/0/0

    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.6.0-rc4+ #5747
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    Call Trace:

    dump_stack+0x76/0xa0
    print_address_description.constprop.0+0x3b/0x60
    ? percpu_ref_switch_to_atomic_rcu+0xfa/0x1b0
    ? percpu_ref_switch_to_atomic_rcu+0xfa/0x1b0
    __kasan_report.cold+0x1a/0x3d
    ? percpu_ref_switch_to_atomic_rcu+0xfa/0x1b0
    percpu_ref_switch_to_atomic_rcu+0xfa/0x1b0
    rcu_core+0x370/0x830
    ? percpu_ref_exit+0x50/0x50
    ? rcu_note_context_switch+0x7b0/0x7b0
    ? run_rebalance_domains+0x11d/0x140
    __do_softirq+0x10a/0x3e9
    irq_exit+0xd5/0xe0
    smp_apic_timer_interrupt+0x86/0x200
    apic_timer_interrupt+0xf/0x20

    RIP: 0010:default_idle+0x26/0x1f0

    Fix this by punting the final exit and free of the struct to RCU, then
    we know that it's safe to do so. Jann suggested the approach of using a
    double rcu callback to achieve this. It's important that we do a nested
    call_rcu() callback, as otherwise the free could be ordered before the
    atomic switch, even if the latter was already queued.

    Reported-by: syzbot+e017e49c39ab484ac87a@syzkaller.appspotmail.com
    Suggested-by: Jann Horn
    Reviewed-by: Paul E. McKenney
    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • '16306a61d3b7 ("fs/locks: always delete_block after waiting.")' add the
    logic to check waiter->fl_blocker without blocked_lock_lock. And it will
    trigger a UAF when we try to wakeup some waiter:

    Thread 1 has create a write flock a on file, and now thread 2 try to
    unlock and delete flock a, thread 3 try to add flock b on the same file.

    Thread2 Thread3
    flock syscall(create flock b)
    ...flock_lock_inode_wait
    flock_lock_inode(will insert
    our fl_blocked_member list
    to flock a's fl_blocked_requests)
    sleep
    flock syscall(unlock)
    ...flock_lock_inode_wait
    locks_delete_lock_ctx
    ...__locks_wake_up_blocks
    __locks_delete_blocks(
    b->fl_blocker = NULL)
    ...
    break by a signal
    locks_delete_block
    b->fl_blocker == NULL &&
    list_empty(&b->fl_blocked_requests)
    success, return directly
    locks_free_lock b
    wake_up(&b->fl_waiter)
    trigger UAF

    Fix it by remove this logic, and this patch may also fix CVE-2019-19769.

    Cc: stable@vger.kernel.org
    Fixes: 16306a61d3b7 ("fs/locks: always delete_block after waiting.")
    Signed-off-by: yangerkun
    Signed-off-by: Jeff Layton

    yangerkun
     

06 Mar, 2020

8 commits

  • The bfq_find_set_group() function takes as input a blkcg (which represents
    a cgroup) and retrieves the corresponding bfq_group, then it updates the
    bfq internal group hierarchy (see comments inside the function for why
    this is needed) and finally it returns the bfq_group.
    In the hierarchy update cycle, the pointer holding the correct bfq_group
    that has to be returned is mistakenly used to traverse the hierarchy
    bottom to top, meaning that in each iteration it gets overwritten with the
    parent of the current group. Since the update cycle stops at root's
    children (depth = 2), the overwrite becomes a problem only if the blkcg
    describes a cgroup at a hierarchy level deeper than that (depth > 2). In
    this case the root's child that happens to be also an ancestor of the
    correct bfq_group is returned. The main consequence is that processes
    contained in a cgroup at depth greater than 2 are wrongly placed in the
    group described above by BFQ.

    This commits fixes this problem by using a different bfq_group pointer in
    the update cycle in order to avoid the overwrite of the variable holding
    the original group reference.

    Reported-by: Kwon Je Oh
    Signed-off-by: Carlo Nonato
    Signed-off-by: Paolo Valente
    Signed-off-by: Jens Axboe

    Carlo Nonato
     
  • Merge misc fixes from Andrew Morton:
    "7 fixes"

    * emailed patches from Andrew Morton :
    arch/Kconfig: update HAVE_RELIABLE_STACKTRACE description
    mm, hotplug: fix page online with DEBUG_PAGEALLOC compiled but not enabled
    mm/z3fold.c: do not include rwlock.h directly
    fat: fix uninit-memory access for partial initialized inode
    mm: avoid data corruption on CoW fault into PFN-mapped VMA
    mm: fix possible PMD dirty bit lost in set_pmd_migration_entry()
    mm, numa: fix bad pmd by atomically check for pmd_trans_huge when marking page tables prot_numa

    Linus Torvalds
     
  • Since commit 3bc3206e1c0f ("serial: fsl_lpuart: Remove the alias node
    dependence") the port line number can also be allocated by IDA, but in
    case of an error the ID will no be removed again. More importantly, any
    ID will be freed in remove(), even if it wasn't allocated but instead
    fetched by of_alias_get_id(). If it was not allocated by IDA there will
    be a warning:
    WARN(1, "ida_free called for id=%d which is not allocated.\n", id);

    Move the ID allocation more to the end of the probe() so that we still
    can use plain return in the first error cases.

    Fixes: 3bc3206e1c0f ("serial: fsl_lpuart: Remove the alias node dependence")
    Signed-off-by: Michael Walle
    Cc: stable
    Link: https://lore.kernel.org/r/20200303174306.6015-3-michael@walle.cc
    Signed-off-by: Greg Kroah-Hartman

    Michael Walle
     
  • This reverts commit a659652f6169240a5818cb244b280c5a362ef5a4.

    This broke the earlycon on LS1021A processors because the order of the
    earlycon_setup() functions were changed. Before the commit the normal
    lpuart32_early_console_setup() was called. After the commit the
    lpuart32_imx_early_console_setup() is called instead.

    Fixes: a659652f6169 ("tty: serial: fsl_lpuart: drop EARLYCON_DECLARE")
    Signed-off-by: Michael Walle
    Link: https://lore.kernel.org/r/20200303174306.6015-2-michael@walle.cc
    Signed-off-by: Greg Kroah-Hartman

    Michael Walle
     
  • On Apple devices the _CRS method returns an empty resource template, and
    the resource settings are instead provided by the _DSM method. But
    commit 33364d63c75d6182fa369cea80315cf1bb0ee38e (serdev: Add ACPI
    devices by ResourceSource field) changed the search for serdev devices
    to require valid, non-empty resource template, thereby breaking Apple
    devices and causing bluetooth devices to not be found.

    This expands the check so that if we don't find a valid template, and
    we're on an Apple machine, then just check for the device being an
    immediate child of the controller and having a "baud" property.

    Cc: # 5.5
    Fixes: 33364d63c75d ("serdev: Add ACPI devices by ResourceSource field")
    Signed-off-by: Ronald Tschalär
    Link: https://lore.kernel.org/r/20200211194723.486217-1-ronald@innovation.ch
    Signed-off-by: Greg Kroah-Hartman

    Ronald Tschalär
     
  • save_stack_trace_tsk_reliable() is not the only function providing the
    reliable stack traces anymore. Architecture might define ARCH_STACKWALK
    which provides a newer stack walking interface and has
    arch_stack_walk_reliable() function. Update the description accordingly.

    Signed-off-by: Andrew Morton
    Signed-off-by: Miroslav Benes
    Acked-by: Josh Poimboeuf
    Link: http://lkml.kernel.org/r/20200120154042.9934-1-mbenes@suse.cz
    Signed-off-by: Linus Torvalds

    Miroslav Benes
     
  • Commit cd02cf1aceea ("mm/hotplug: fix an imbalance with DEBUG_PAGEALLOC")
    fixed memory hotplug with debug_pagealloc enabled, where onlining a page
    goes through page freeing, which removes the direct mapping. Some arches
    don't like when the page is not mapped in the first place, so
    generic_online_page() maps it first. This is somewhat wasteful, but
    better than special casing page freeing fast paths.

    The commit however missed that DEBUG_PAGEALLOC configured doesn't mean
    it's actually enabled. One has to test debug_pagealloc_enabled() since
    031bc5743f15 ("mm/debug-pagealloc: make debug-pagealloc boottime
    configurable"), or alternatively debug_pagealloc_enabled_static() since
    8e57f8acbbd1 ("mm, debug_pagealloc: don't rely on static keys too early"),
    but this is not done.

    As a result, a s390 kernel with DEBUG_PAGEALLOC configured but not enabled
    will crash:

    Unable to handle kernel pointer dereference in virtual kernel address space
    Failing address: 0000000000000000 TEID: 0000000000000483
    Fault in home space mode while using kernel ASCE.
    AS:0000001ece13400b R2:000003fff7fd000b R3:000003fff7fcc007 S:000003fff7fd7000 P:000000000000013d
    Oops: 0004 ilc:2 [#1] SMP
    CPU: 1 PID: 26015 Comm: chmem Kdump: loaded Tainted: GX 5.3.18-5-default #1 SLE15-SP2 (unreleased)
    Krnl PSW : 0704e00180000000 0000001ecd281b9e (__kernel_map_pages+0x166/0x188)
    R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 RI:0 EA:3
    Krnl GPRS: 0000000000000000 0000000000000800 0000400b00000000 0000000000000100
    0000000000000001 0000000000000000 0000000000000002 0000000000000100
    0000001ece139230 0000001ecdd98d40 0000400b00000100 0000000000000000
    000003ffa17e4000 001fffe0114f7d08 0000001ecd4d93ea 001fffe0114f7b20
    Krnl Code: 0000001ecd281b8e: ec17ffff00d8 ahik %r1,%r7,-1
    0000001ecd281b94: ec111dbc0355 risbg %r1,%r1,29,188,3
    >0000001ecd281b9e: 94fb5006 ni 6(%r5),251
    0000001ecd281ba2: 41505008 la %r5,8(%r5)
    0000001ecd281ba6: ec51fffc6064 cgrj %r5,%r1,6,1ecd281b9e
    0000001ecd281bac: 1a07 ar %r0,%r7
    0000001ecd281bae: ec03ff584076 crj %r0,%r3,4,1ecd281a5e
    Call Trace:
    [] __kernel_map_pages+0x166/0x188
    [] online_pages_range+0xf6/0x128
    [] walk_system_ram_range+0x7e/0xd8
    [] online_pages+0x2fe/0x3f0
    [] memory_subsys_online+0x8e/0xc0
    [] device_online+0x5a/0xc8
    [] state_store+0x88/0x118
    [] kernfs_fop_write+0xc2/0x200
    [] vfs_write+0x176/0x1e0
    [] ksys_write+0xa2/0x100
    [] system_call+0xd8/0x2c8

    Fix this by checking debug_pagealloc_enabled_static() before calling
    kernel_map_pages(). Backports for kernel before 5.5 should use
    debug_pagealloc_enabled() instead. Also add comments.

    Fixes: cd02cf1aceea ("mm/hotplug: fix an imbalance with DEBUG_PAGEALLOC")
    Reported-by: Gerald Schaefer
    Signed-off-by: Andrew Morton
    Signed-off-by: Vlastimil Babka
    Reviewed-by: David Hildenbrand
    Cc:
    Cc: Joonsoo Kim
    Cc: Qian Cai
    Link: http://lkml.kernel.org/r/20200224094651.18257-1-vbabka@suse.cz
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     
  • rwlock.h should not be included directly. Instead linux/splinlock.h
    should be included. One thing it does is to break the RT build.

    Signed-off-by: Andrew Morton
    Signed-off-by: Sebastian Andrzej Siewior
    Cc: Peter Zijlstra
    Cc: Vitaly Wool
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/20200224133631.1510569-1-bigeasy@linutronix.de
    Signed-off-by: Linus Torvalds

    Sebastian Andrzej Siewior