23 Oct, 2020

4 commits

  • Pull initial set_fs() removal from Al Viro:
    "Christoph's set_fs base series + fixups"

    * 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    fs: Allow a NULL pos pointer to __kernel_read
    fs: Allow a NULL pos pointer to __kernel_write
    powerpc: remove address space overrides using set_fs()
    powerpc: use non-set_fs based maccess routines
    x86: remove address space overrides using set_fs()
    x86: make TASK_SIZE_MAX usable from assembly code
    x86: move PAGE_OFFSET, TASK_SIZE & friends to page_{32,64}_types.h
    lkdtm: remove set_fs-based tests
    test_bitmap: remove user bitmap tests
    uaccess: add infrastructure for kernel builds with set_fs()
    fs: don't allow splice read/write without explicit ops
    fs: don't allow kernel reads and writes without iter ops
    sysctl: Convert to iter interfaces
    proc: add a read_iter method to proc proc_ops
    proc: cleanup the compat vs no compat file ops
    proc: remove a level of indentation in proc_get_inode

    Linus Torvalds
     
  • Pull nfsd updates from Bruce Fields:
    "The one new feature this time, from Anna Schumaker, is READ_PLUS,
    which has the same arguments as READ but allows the server to return
    an array of data and hole extents.

    Otherwise it's a lot of cleanup and bugfixes"

    * tag 'nfsd-5.10' of git://linux-nfs.org/~bfields/linux: (43 commits)
    NFSv4.2: Fix NFS4ERR_STALE error when doing inter server copy
    SUNRPC: fix copying of multiple pages in gss_read_proxy_verf()
    sunrpc: raise kernel RPC channel buffer size
    svcrdma: fix bounce buffers for unaligned offsets and multiple pages
    nfsd: remove unneeded break
    net/sunrpc: Fix return value for sysctl sunrpc.transports
    NFSD: Encode a full READ_PLUS reply
    NFSD: Return both a hole and a data segment
    NFSD: Add READ_PLUS hole segment encoding
    NFSD: Add READ_PLUS data support
    NFSD: Hoist status code encoding into XDR encoder functions
    NFSD: Map nfserr_wrongsec outside of nfsd_dispatch
    NFSD: Remove the RETURN_STATUS() macro
    NFSD: Call NFSv2 encoders on error returns
    NFSD: Fix .pc_release method for NFSv2
    NFSD: Remove vestigial typedefs
    NFSD: Refactor nfsd_dispatch() error paths
    NFSD: Clean up nfsd_dispatch() variables
    NFSD: Clean up stale comments in nfsd_dispatch()
    NFSD: Clean up switch statement in nfsd_dispatch()
    ...

    Linus Torvalds
     
  • Pull exfat updates from Namjae Jeon:

    - Replace memcpy with structure assignment

    - Remove unneeded codes and use helper function i_blocksize()

    - Fix typos found by codespell

    * tag 'exfat-for-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
    exfat: remove useless check in exfat_move_file()
    exfat: remove 'rwoffset' in exfat_inode_info
    exfat: replace memcpy with structure assignment
    exfat: remove useless directory scan in exfat_add_entry()
    exfat: eliminate dead code in exfat_find()
    exfat: use i_blocksize() to get blocksize
    exfat: fix misspellings using codespell tool

    Linus Torvalds
     
  • Pull 9p updates from Dominique Martinet:
    "A couple of small fixes (loff_t overflow on 32bit, syzbot
    uninitialized variable warning) and code cleanup (xen)"

    * tag '9p-for-5.10-rc1' of git://github.com/martinetd/linux:
    net: 9p: initialize sun_server.sun_path to have addr's value only when addr is valid
    9p/xen: Fix format argument warning
    9P: Cast to loff_t before multiplying

    Linus Torvalds
     

22 Oct, 2020

12 commits

  • In exfat_move_file(), the identity of source and target directory has been
    checked by the caller.
    Also, it gets stream.start_clu from file dir-entry, which is an invalid
    determination.

    Signed-off-by: Tetsuhiro Kohada
    Acked-by: Sungjong Seo
    Signed-off-by: Namjae Jeon

    Tetsuhiro Kohada
     
  • Remove 'rwoffset' in exfat_inode_info and replace it with the parameter of
    exfat_readdir().
    Since rwoffset is referenced only by exfat_readdir(), it is not necessary
    a exfat_inode_info's member.
    Also, change cpos to point to the next of entry-set, and return the index
    of dir-entry via dir_entry->entry.

    Signed-off-by: Tetsuhiro Kohada
    Acked-by: Sungjong Seo
    Signed-off-by: Namjae Jeon

    Tetsuhiro Kohada
     
  • Use structure assignment instead of memcpy.

    Signed-off-by: Tetsuhiro Kohada
    Acked-by: Sungjong Seo
    Signed-off-by: Namjae Jeon

    Tetsuhiro Kohada
     
  • There is nothing in directory just created, so there is no need to scan.

    Signed-off-by: Tetsuhiro Kohada
    Acked-by: Sungjong Seo
    Signed-off-by: Namjae Jeon

    Tetsuhiro Kohada
     
  • The exfat_find_dir_entry() called by exfat_find() doesn't return -EEXIST.
    Therefore, the root-dir information setting is never executed.

    Signed-off-by: Tetsuhiro Kohada
    Acked-by: Sungjong Seo
    Signed-off-by: Namjae Jeon

    Tetsuhiro Kohada
     
  • We alreday has the interface i_blocksize() to get blocksize,
    so use it.

    Signed-off-by: Xianting Tian
    Signed-off-by: Namjae Jeon

    Xianting Tian
     
  • Sedat reported typos using codespell tool.

    $ codespell fs/exfat/*.c | grep -v iput
    fs/exfat/namei.c:293: upto ==> up to
    fs/exfat/nls.c:14: tabel ==> table

    $ codespell fs/exfat/*.h
    fs/exfat/exfat_fs.h:133: usally ==> usually

    Fix typos found by codespell.

    Reported-by: Sedat Dilek
    Signed-off-by: Namjae Jeon

    Namjae Jeon
     
  • Pull watchdog updates from Wim Van Sebroeck:

    - Add Toshiba Visconti watchdog driver

    - it87_wdt: add IT8772 + IT8784

    - several fixes and improvements

    * tag 'linux-watchdog-5.10-rc1' of git://www.linux-watchdog.org/linux-watchdog:
    watchdog: Add Toshiba Visconti watchdog driver
    watchdog: bindings: Add binding documentation for Toshiba Visconti watchdog device
    watchdog: it87_wdt: add IT8784 ID
    watchdog: sp5100_tco: Enable watchdog on Family 17h devices if disabled
    watchdog: sp5100: Fix definition of EFCH_PM_DECODEEN3
    watchdog: renesas_wdt: support handover from bootloader
    watchdog: imx7ulp: Watchdog should continue running for wait/stop mode
    watchdog: rti: Simplify with dev_err_probe()
    watchdog: davinci: Simplify with dev_err_probe()
    watchdog: cadence: Simplify with dev_err_probe()
    watchdog: remove unneeded inclusion of
    watchdog: Use put_device on error
    watchdog: Fix memleak in watchdog_cdev_register
    watchdog: imx7ulp: Strictly follow the sequence for wdog operations
    watchdog: it87_wdt: add IT8772 ID
    watchdog: pcwd_usb: Avoid GFP_ATOMIC where it is not needed
    drivers: watchdog: rdc321x_wdt: Fix race condition bugs

    Linus Torvalds
     
  • Pull RTC updates from Alexandre Belloni:
    "A new driver this cycle is making the bulk of the changes and the
    rx8010 driver has been rework to use the modern APIs.

    Summary:

    Subsystem:
    - new generic DT properties: aux-voltage-chargeable,
    trickle-voltage-millivolt

    New driver:
    - Microcrystal RV-3032

    Drivers:
    - ds1307: use aux-voltage-chargeable
    - r9701, rx8010: modernization of the driver
    - rv3028: fix clock output, trickle resistor values, RAM
    configuration registers"

    * tag 'rtc-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (50 commits)
    rtc: r9701: set range
    rtc: r9701: convert to devm_rtc_allocate_device
    rtc: r9701: stop setting RWKCNT
    rtc: r9701: remove useless memset
    rtc: r9701: stop setting a default time
    rtc: r9701: remove leftover comment
    rtc: rv3032: Add a driver for Microcrystal RV-3032
    dt-bindings: rtc: rv3032: add RV-3032 bindings
    dt-bindings: rtc: add trickle-voltage-millivolt
    rtc: rv3028: ensure ram configuration registers are saved
    rtc: rv3028: factorize EERD bit handling
    rtc: rv3028: fix trickle resistor values
    rtc: rv3028: fix clock output support
    rtc: mt6397: Remove unused member dev
    rtc: rv8803: simplify the return expression of rv8803_nvram_write
    rtc: meson: simplify the return expression of meson_vrtc_probe
    rtc: rx8010: rename rx8010_init_client() to rx8010_init()
    rtc: ds1307: enable rx8130's backup battery, make it chargeable optionally
    rtc: ds1307: consider aux-voltage-chargeable
    rtc: ds1307: store previous charge default per chip
    ...

    Linus Torvalds
     
  • Pull dmi update from Jean Delvare.

    * 'dmi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    Replace HTTP links with HTTPS ones: DMI/SMBIOS SUPPORT

    Linus Torvalds
     
  • Pull i2c updates from Wolfram Sang:

    - if a host can be a client, too, the I2C core can now use it to
    emulate SMBus HostNotify support (STM32 and R-Car added this so far)

    - also for client mode, a testunit has been added. It can create rare
    situations on the bus, so host controllers can be tested

    - a binding has been added to mark the bus as "single-master". This
    allows for better timeout detections

    - new driver for Mellanox Bluefield

    - massive refactoring of the Tegra driver

    - EEPROMs recognized by the at24 driver can now have custom names

    - rest is driver updates

    * 'i2c/for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (80 commits)
    Documentation: i2c: add testunit docs to index
    i2c: tegra: Improve driver module description
    i2c: tegra: Clean up whitespaces, newlines and indentation
    i2c: tegra: Clean up and improve comments
    i2c: tegra: Clean up printk messages
    i2c: tegra: Clean up variable names
    i2c: tegra: Improve formatting of variables
    i2c: tegra: Check errors for both positive and negative values
    i2c: tegra: Factor out hardware initialization into separate function
    i2c: tegra: Factor out register polling into separate function
    i2c: tegra: Factor out packet header setup from tegra_i2c_xfer_msg()
    i2c: tegra: Factor out error recovery from tegra_i2c_xfer_msg()
    i2c: tegra: Rename wait/poll functions
    i2c: tegra: Remove "dma" variable from tegra_i2c_xfer_msg()
    i2c: tegra: Remove redundant check in tegra_i2c_issue_bus_clear()
    i2c: tegra: Remove likely/unlikely from the code
    i2c: tegra: Remove outdated barrier()
    i2c: tegra: Clean up variable types
    i2c: tegra: Reorder location of functions in the code
    i2c: tegra: Clean up probe function
    ...

    Linus Torvalds
     
  • Pull ceph updates from Ilya Dryomov:

    - a patch that removes crush_workspace_mutex (myself). CRUSH
    computations are no longer serialized and can run in parallel.

    - a couple new filesystem client metrics for "ceph fs top" command
    (Xiubo Li)

    - a fix for a very old messenger bug that affected the filesystem,
    marked for stable (myself)

    - assorted fixups and cleanups throughout the codebase from Jeff and
    others.

    * tag 'ceph-for-5.10-rc1' of git://github.com/ceph/ceph-client: (27 commits)
    libceph: clear con->out_msg on Policy::stateful_server faults
    libceph: format ceph_entity_addr nonces as unsigned
    libceph: fix ENTITY_NAME format suggestion
    libceph: move a dout in queue_con_delay()
    ceph: comment cleanups and clarifications
    ceph: break up send_cap_msg
    ceph: drop separate mdsc argument from __send_cap
    ceph: promote to unsigned long long before shifting
    ceph: don't SetPageError on readpage errors
    ceph: mark ceph_fmt_xattr() as printf-like for better type checking
    ceph: fold ceph_update_writeable_page into ceph_write_begin
    ceph: fold ceph_sync_writepages into writepage_nounlock
    ceph: fold ceph_sync_readpages into ceph_readpage
    ceph: don't call ceph_update_writeable_page from page_mkwrite
    ceph: break out writeback of incompatible snap context to separate function
    ceph: add a note explaining session reject error string
    libceph: switch to the new "osd blocklist add" command
    libceph, rbd, ceph: "blacklist" -> "blocklist"
    ceph: have ceph_writepages_start call pagevec_lookup_range_tag
    ceph: use kill_anon_super helper
    ...

    Linus Torvalds
     

21 Oct, 2020

12 commits

  • NFS_FS=y as dependency of CONFIG_NFSD_V4_2_INTER_SSC still have
    build errors and some configs with NFSD=m to get NFS4ERR_STALE
    error when doing inter server copy.

    Added ops table in nfs_common for knfsd to access NFS client modules.

    Fixes: 3ac3711adb88 ("NFSD: Fix NFS server build errors")
    Signed-off-by: Dai Ngo
    Signed-off-by: J. Bruce Fields

    Dai Ngo
     
  • Pull XArray updates from Matthew Wilcox:

    - Fix the test suite after introduction of the local_lock

    - Fix a bug in the IDA spotted by Coverity

    - Change the API that allows the workingset code to delete a node

    - Fix xas_reload() when dealing with entries that occupy multiple
    indices

    - Add a few more tests to the test suite

    - Fix an unsigned int being shifted into an unsigned long

    * tag 'xarray-5.9' of git://git.infradead.org/users/willy/xarray:
    XArray: Fix xas_create_range for ranges above 4 billion
    radix-tree: fix the comment of radix_tree_next_slot()
    XArray: Fix xas_reload for multi-index entries
    XArray: Add private interface for workingset node deletion
    XArray: Fix xas_for_each_conflict documentation
    XArray: Test marked multiorder iterations
    XArray: Test two more things about xa_cmpxchg
    ida: Free allocated bitmap in error path
    radix tree test suite: Fix compilation

    Linus Torvalds
     
  • Pull NFS client updates from Anna Schumaker:
    "Stable Fixes:
    - Wait for stateid updates after CLOSE/OPEN_DOWNGRADE # v5.4+
    - Fix nfs_path in case of a rename retry
    - Support EXCHID4_FLAG_SUPP_FENCE_OPS v4.2 EXCHANGE_ID flag

    New features and improvements:
    - Replace dprintk() calls with tracepoints
    - Make cache consistency bitmap dynamic
    - Added support for the NFS v4.2 READ_PLUS operation
    - Improvements to net namespace uniquifier

    Other bugfixes and cleanups:
    - Remove redundant clnt pointer
    - Don't update timeout values on connection resets
    - Remove redundant tracepoints
    - Various cleanups to comments
    - Fix oops when trying to use copy_file_range with v4.0 source server
    - Improvements to flexfiles mirrors
    - Add missing 'local_lock=posix' mount option"

    * tag 'nfs-for-5.10-1' of git://git.linux-nfs.org/projects/anna/linux-nfs: (55 commits)
    NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag
    NFSv4: Fix up RCU annotations for struct nfs_netns_client
    NFS: Only reference user namespace from nfs4idmap struct instead of cred
    nfs: add missing "posix" local_lock constant table definition
    NFSv4: Use the net namespace uniquifier if it is set
    NFSv4: Clean up initialisation of uniquified client id strings
    NFS: Decode a full READ_PLUS reply
    SUNRPC: Add an xdr_align_data() function
    NFS: Add READ_PLUS hole segment decoding
    SUNRPC: Add the ability to expand holes in data pages
    SUNRPC: Split out _shift_data_right_tail()
    SUNRPC: Split out xdr_realign_pages() from xdr_align_pages()
    NFS: Add READ_PLUS data segment support
    NFS: Use xdr_page_pos() in NFSv4 decode_getacl()
    SUNRPC: Implement a xdr_page_pos() function
    SUNRPC: Split out a function for setting current page
    NFS: fix nfs_path in case of a rename retry
    fs: nfs: return per memcg count for xattr shrinkers
    NFSv4: Wait for stateid updates after CLOSE/OPEN_DOWNGRADE
    nfs: remove incorrect fallthrough label
    ...

    Linus Torvalds
     
  • Pull io_uring updates from Jens Axboe:
    "A mix of fixes and a few stragglers. In detail:

    - Revert the bogus __read_mostly that we discussed for the initial
    pull request.

    - Fix a merge window regression with fixed file registration error
    path handling.

    - Fix io-wq numa node affinities.

    - Series abstracting out an io_identity struct, making it both easier
    to see what the personality items are, and also easier to to adopt
    more. Use this to cover audit logging.

    - Fix for read-ahead disabled block condition in async buffered
    reads, and using single page read-ahead to unify what
    generic_file_buffer_read() path is used.

    - Series for REQ_F_COMP_LOCKED fix and removal of it (Pavel)

    - Poll fix (Pavel)"

    * tag 'io_uring-5.10-2020-10-20' of git://git.kernel.dk/linux-block: (21 commits)
    io_uring: use blk_queue_nowait() to check if NOWAIT supported
    mm: use limited read-ahead to satisfy read
    mm: mark async iocb read as NOWAIT once some data has been copied
    io_uring: fix double poll mask init
    io-wq: inherit audit loginuid and sessionid
    io_uring: use percpu counters to track inflight requests
    io_uring: assign new io_identity for task if members have changed
    io_uring: store io_identity in io_uring_task
    io_uring: COW io_identity on mismatch
    io_uring: move io identity items into separate struct
    io_uring: rely solely on work flags to determine personality.
    io_uring: pass required context in as flags
    io-wq: assign NUMA node locality if appropriate
    io_uring: fix error path cleanup in io_sqe_files_register()
    Revert "io_uring: mark io_uring_fops/io_op_defs as __read_mostly"
    io_uring: fix REQ_F_COMP_LOCKED by killing it
    io_uring: dig out COMP_LOCK from deep call chain
    io_uring: don't put a poll req under spinlock
    io_uring: don't unnecessarily clear F_LINK_TIMEOUT
    io_uring: don't set COMP_LOCKED if won't put
    ...

    Linus Torvalds
     
  • Pull power supply and reset updates from Sebastian Reichel:
    "Power-supply core:
    - add wireless type
    - properly document current direction

    Battery/charger driver changes:
    - new fuel-gauge/charger driver for RN5T618/RN5T619
    - new charger driver for BQ25980, BQ25975 and BQ25960
    - bq27xxx-battery: add support for TI bq34z100
    - gpio-charger: convert to GPIO descriptors
    - gpio-charger: add optional support for charge current limiting
    - max17040: add support for max17041, max17043, max17044
    - max17040: add support for max17048, max17049, max17058, max17059
    - smb347-charger: add DT support
    - smb247-charger: add SMB345 and SMB358 support
    - simple-battery: add temperature properties
    - lots of minor fixes, cleanups and DT binding YAML conversions

    Reset drivers:
    - ocelot: Add support for Sparx5"

    * tag 'for-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (81 commits)
    power: reset: POWER_RESET_OCELOT_RESET should depend on Ocelot or Sparx5
    power: supply: bq25980: Fix uninitialized wd_reg_val and overrun
    power: supply: ltc2941: Fix ptr to enum cast
    power: supply: test-power: revise parameter printing to use sprintf
    power: supply: charger-manager: fix incorrect check on charging_duration_ms
    power: supply: max17040: Fix ptr to enum cast
    power: supply: bq25980: Fix uninitialized wd_reg_val
    power: supply: bq25980: remove redundant zero check on ret
    power: reset: ocelot: Add support for Sparx5
    dt-bindings: reset: ocelot: Add Sparx5 support
    power: supply: sbs-battery: keep error code when get_property() fails
    power: supply: bq25980: Add support for the BQ259xx family
    dt-binding: bq25980: Add the bq25980 flash charger
    power: supply: fix spelling mistake "unprecise" -> "imprecise"
    power: supply: test_power: add missing newlines when printing parameters by sysfs
    power: supply: pm2301: drop duplicated i2c_device_id
    power: supply: charger-manager: drop unused charger assignment
    power: supply: rt9455: skip 'struct acpi_device_id' when !CONFIG_ACPI
    power: supply: goldfish: skip 'struct acpi_device_id' when !CONFIG_ACPI
    power: supply: bq25890: skip 'struct acpi_device_id' when !CONFIG_ACPI
    ...

    Linus Torvalds
     
  • When the passed token is longer than 4032 bytes, the remaining part
    of the token must be copied from the rqstp->rq_arg.pages. But the
    copy must make sure it happens in a consecutive way.

    With the existing code, the first memcpy copies 'length' bytes from
    argv->iobase, but since the header is in front, this never fills the
    whole first page of in_token->pages.

    The mecpy in the loop copies the following bytes, but starts writing at
    the next page of in_token->pages. This leaves the last bytes of page 0
    unwritten.

    Symptoms were that users with many groups were not able to access NFS
    exports, when using Active Directory as the KDC.

    Signed-off-by: Martijn de Gouw
    Fixes: 5866efa8cbfb "SUNRPC: Fix svcauth_gss_proxy_init()"
    Signed-off-by: J. Bruce Fields

    Martijn de Gouw
     
  • Its possible that using AUTH_SYS and mountd manage-gids option a
    user may hit the 8k RPC channel buffer limit. This have been observed
    on field, causing unanswered RPCs on clients after mountd fails to
    write on channel :

    rpc.mountd[11231]: auth_unix_gid: error writing reply

    Userland nfs-utils uses a buffer size of 32k (RPC_CHAN_BUF_SIZE), so
    lets match those two.

    Signed-off-by: Roberto Bergantinos Corpas
    Signed-off-by: J. Bruce Fields

    Roberto Bergantinos Corpas
     
  • Pull drm fixes from Dave Airlie:
    "Some fixes queued up already for i915 and amdgpu, I've also included
    the fix for the clang warning you've seen.

    i915:
    - set all unused color plane offsets to ~0xfff again (Ville)
    - fix TGL DKL PHY DP vswing handling (Ville)

    amdgpu:
    - DCN clang warning fix
    - eDP fix
    - BACO fix
    - kernel documentation fixes
    - SMU7 mclk fix
    - VCN1 hw bug workaround

    amdkfd:
    - kvfree vs kfree fix"

    * tag 'drm-next-2020-10-19' of git://anongit.freedesktop.org/drm/drm:
    drm/amd/display: Fix incorrect dsc force enable logic
    drm/amdkfd: Use kvfree in destroy_crat_image
    drm/amdgpu: vcn and jpeg ring synchronization
    drm/amd/pm: increase mclk switch threshold to 200 us
    docs: amdgpu: fix a warning when building the documentation
    drm/amd/display: kernel-doc: document force_timing_sync
    drm/amdgpu/swsmu: init the baco mutex in early_init
    drm/amd/display: Fix module load hangs when connected to an eDP
    drm/i915: Set all unused color plane offsets to ~0xfff again
    drm/i915: Fix TGL DKL PHY DP vswing handling

    Linus Torvalds
     
  • Pull iommu fix from Joerg Roedel:
    "Fix a build regression with !CONFIG_IOMMU_API"

    * tag 'iommu-fix-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    iommu/vt-d: Don't dereference iommu_device if IOMMU_API is not built

    Linus Torvalds
     
  • Pull more xen updates from Juergen Gross:

    - A single patch to fix the Xen security issue XSA-331 (malicious
    guests can DoS dom0 by triggering NULL-pointer dereferences or access
    to stale data).

    - A larger series to fix the Xen security issue XSA-332 (malicious
    guests can DoS dom0 by sending events at high frequency leading to
    dom0's vcpus being busy in IRQ handling for elongated times).

    * tag 'for-linus-5.10b-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen/events: block rogue events for some time
    xen/events: defer eoi in case of excessive number of events
    xen/events: use a common cpu hotplug hook for event channels
    xen/events: switch user event channels to lateeoi model
    xen/pciback: use lateeoi irq binding
    xen/pvcallsback: use lateeoi irq binding
    xen/scsiback: use lateeoi irq binding
    xen/netback: use lateeoi irq binding
    xen/blkback: use lateeoi irq binding
    xen/events: add a new "late EOI" evtchn framework
    xen/events: fix race in evtchn_fifo_unmask()
    xen/events: add a proper barrier to 2-level uevent unmasking
    xen/events: avoid removing an event channel while handling it

    Linus Torvalds
     
  • Pull ARM updates from Russell King:

    - handle inexact watchpoint addresses (Douglas Anderson)

    - decompressor serial debug cleanups (Linus Walleij)

    - update L2 cache prefetch bits (Guillaume Tucker)

    - add text offset and malloc size to the decompressor kexec data

    * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: add malloc size to decompressor kexec size structure
    ARM: add TEXT_OFFSET to decompressor kexec image structure
    ARM: 9007/1: l2c: fix prefetch bits init in L2X0_AUX_CTRL using DT values
    ARM: 9010/1: uncompress: Print the location of appended DTB
    ARM: 9009/1: uncompress: Enable debug in head.S
    ARM: 9008/1: uncompress: Drop excess whitespace print
    ARM: 9006/1: uncompress: Wait for ready and busy in debug prints
    ARM: 9005/1: debug: Select flow control for all debug UARTs
    ARM: 9004/1: debug: Split waituart to CTS and TXRDY
    ARM: 9003/1: uncompress: Delete unused debug macros
    ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses

    Linus Torvalds
     
  • Pull ARC updates from Vineet Gupta:
    "The bulk of ARC pull request is removal of EZChip NPS platform which
    was suffering from constant bitrot. In recent years EZChip has gone
    though multiple successive acquisitions and I guess things and people
    move on. I would like to take this opportunity to recognize and thank
    all those good folks (Gilad, Noam, Ofer...) for contributing major
    bits to ARC port (SMP, Big Endian).

    Summary:

    - drop support for EZChip NPS platform

    - misc other fixes"

    * tag 'arc-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    arc: include/asm: fix typos of "themselves"
    ARC: SMP: fix typo and use "come up" instead of "comeup"
    ARC: [dts] fix the errors detected by dtbs_check
    arc: plat-hsdk: fix kconfig dependency warning when !RESET_CONTROLLER
    ARC: [plat-eznps]: Drop support for EZChip NPS platform

    Linus Torvalds
     

20 Oct, 2020

12 commits

  • In order to avoid high dom0 load due to rogue guests sending events at
    high frequency, block those events in case there was no action needed
    in dom0 to handle the events.

    This is done by adding a per-event counter, which set to zero in case
    an EOI without the XEN_EOI_FLAG_SPURIOUS is received from a backend
    driver, and incremented when this flag has been set. In case the
    counter is 2 or higher delay the EOI by 1 << (cnt - 2) jiffies, but
    not more than 1 second.

    In order not to waste memory shorten the per-event refcnt to two bytes
    (it should normally never exceed a value of 2). Add an overflow check
    to evtchn_get() to make sure the 2 bytes really won't overflow.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • In case rogue guests are sending events at high frequency it might
    happen that xen_evtchn_do_upcall() won't stop processing events in
    dom0. As this is done in irq handling a crash might be the result.

    In order to avoid that, delay further inter-domain events after some
    time in xen_evtchn_do_upcall() by forcing eoi processing into a
    worker on the same cpu, thus inhibiting new events coming in.

    The time after which eoi processing is to be delayed is configurable
    via a new module parameter "event_loop_timeout" which specifies the
    maximum event loop time in jiffies (default: 2, the value was chosen
    after some tests showing that a value of 2 was the lowest with an
    only slight drop of dom0 network throughput while multiple guests
    performed an event storm).

    How long eoi processing will be delayed can be specified via another
    parameter "event_eoi_delay" (again in jiffies, default 10, again the
    value was chosen after testing with different delay values).

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • Today only fifo event channels have a cpu hotplug callback. In order
    to prepare for more percpu (de)init work move that callback into
    events_base.c and add percpu_init() and percpu_deinit() hooks to
    struct evtchn_ops.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • Instead of disabling the irq when an event is received and enabling
    it again when handled by the user process use the lateeoi model.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Tested-by: Stefano Stabellini
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Jan Beulich
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving pcifront use the lateeoi irq
    binding for pciback and unmask the event channel only just before
    leaving the event handling function.

    Restructure the handling to support that scheme. Basically an event can
    come in for two reasons: either a normal request for a pciback action,
    which is handled in a worker, or in case the guest has finished an AER
    request which was requested by pciback.

    When an AER request is issued to the guest and a normal pciback action
    is currently active issue an EOI early in order to be able to receive
    another event when the AER request has been finished by the guest.

    Let the worker processing the normal requests run until no further
    request is pending, instead of starting a new worker ion that case.
    Issue the EOI only just before leaving the worker.

    This scheme allows to drop calling the generic function
    xen_pcibk_test_and_schedule_op() after processing of any request as
    the handling of both request types is now separated more cleanly.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving pvcallsfront use the lateeoi
    irq binding for pvcallsback and unmask the event channel only after
    handling all write requests, which are the ones coming in via an irq.

    This requires modifying the logic a little bit to not require an event
    for each write request, but to keep the ioworker running until no
    further data is found on the ring page to be processed.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving scsifront use the lateeoi
    irq binding for scsiback and unmask the event channel only just before
    leaving the event handling function.

    In case of a ring protocol error don't issue an EOI in order to avoid
    the possibility to use that for producing an event storm. This at once
    will result in no further call of scsiback_irq_fn(), so the ring_error
    struct member can be dropped and scsiback_do_cmd_fn() can signal the
    protocol error via a negative return value.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving netfront use the lateeoi
    irq binding for netback and unmask the event channel only just before
    going to sleep waiting for new events.

    Make sure not to issue an EOI when none is pending by introducing an
    eoi_pending element to struct xenvif_queue.

    When no request has been consumed set the spurious flag when sending
    the EOI for an interrupt.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • In order to reduce the chance for the system becoming unresponsive due
    to event storms triggered by a misbehaving blkfront use the lateeoi
    irq binding for blkback and unmask the event channel only after
    processing all pending requests.

    As the thread processing requests is used to do purging work in regular
    intervals an EOI may be sent only after having received an event. If
    there was no pending I/O request flag the EOI as spurious.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • In order to avoid tight event channel related IRQ loops add a new
    framework of "late EOI" handling: the IRQ the event channel is bound
    to will be masked until the event has been handled and the related
    driver is capable to handle another event. The driver is responsible
    for unmasking the event channel via the new function xen_irq_lateeoi().

    This is similar to binding an event channel to a threaded IRQ, but
    without having to structure the driver accordingly.

    In order to support a future special handling in case a rogue guest
    is sending lots of unsolicited events, add a flag to xen_irq_lateeoi()
    which can be set by the caller to indicate the event was a spurious
    one.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Reported-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Wei Liu

    Juergen Gross
     
  • Unmasking a fifo event channel can result in unmasking it twice, once
    directly in the kernel and once via a hypercall in case the event was
    pending.

    Fix that by doing the local unmask only if the event is not pending.

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross
    Reviewed-by: Jan Beulich

    Juergen Gross
     
  • A follow-up patch will require certain write to happen before an event
    channel is unmasked.

    While the memory barrier is not strictly necessary for all the callers,
    the main one will need it. In order to avoid an extra memory barrier
    when using fifo event channels, mandate evtchn_unmask() to provide
    write ordering.

    The 2-level event handling unmask operation is missing an appropriate
    barrier, so add it. Fifo event channels are fine in this regard due to
    using sync_cmpxchg().

    This is part of XSA-332.

    Cc: stable@vger.kernel.org
    Suggested-by: Julien Grall
    Signed-off-by: Juergen Gross
    Reviewed-by: Julien Grall
    Reviewed-by: Wei Liu

    Juergen Gross