1. 17 May, 2019 9 commits
    • Keith Busch's avatar
      nvme-pci: Fix controller freeze wait disabling · e43269e6
      Keith Busch authored
      If a controller disabling didn't start a freeze, don't wait for the
      operation to complete.
      Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarKeith Busch <keith.busch@intel.com>
      e43269e6
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20190516' of git://git.kernel.dk/linux-block · a6a4b66b
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "A small set of fixes for io_uring.
      
        This contains:
      
         - smp_rmb() cleanup for io_cqring_events() (Jackie)
      
         - io_cqring_wait() simplification (Jackie)
      
         - removal of dead 'ev_flags' passing (me)
      
         - SQ poll CPU affinity verification fix (me)
      
         - SQ poll wait fix (Roman)
      
         - SQE command prep cleanup and fix (Stefan)"
      
      * tag 'for-linus-20190516' of git://git.kernel.dk/linux-block:
        io_uring: use wait_event_interruptible for cq_wait conditional wait
        io_uring: adjust smp_rmb inside io_cqring_events
        io_uring: fix infinite wait in khread_park() on io_finish_async()
        io_uring: remove 'ev_flags' argument
        io_uring: fix failure to verify SQ_AFF cpu
        io_uring: fix race condition reading SQE data
      a6a4b66b
    • Linus Torvalds's avatar
      Merge tag 'for-5.2/block-post-20190516' of git://git.kernel.dk/linux-block · 1718de78
      Linus Torvalds authored
      Pull more block updates from Jens Axboe:
       "This is mainly some late lightnvm changes that came in just before the
        merge window, as well as fixes that have been queued up since the
        initial pull request was frozen.
      
        This contains:
      
         - lightnvm changes, fixing race conditions, improving memory
           utilization, and improving pblk compatability (Chansol, Igor,
           Marcin)
      
         - NVMe pull request with minor fixes all over the map (via Christoph)
      
         - remove redundant error print in sata_rcar (Geert)
      
         - struct_size() cleanup (Jackie)
      
         - dasd CONFIG_LBADF warning fix (Ming)
      
         - brd cond_resched() improvement (Mikulas)"
      
      * tag 'for-5.2/block-post-20190516' of git://git.kernel.dk/linux-block: (41 commits)
        block/bio-integrity: use struct_size() in kmalloc()
        nvme: validate cntlid during controller initialisation
        nvme: change locking for the per-subsystem controller list
        nvme: trace all async notice events
        nvme: fix typos in nvme status code values
        nvme-fabrics: remove unused argument
        nvme-multipath: avoid crash on invalid subsystem cntlid enumeration
        nvme-fc: use separate work queue to avoid warning
        nvme-rdma: remove redundant reference between ib_device and tagset
        nvme-pci: mark expected switch fall-through
        nvme-pci: add known admin effects to augument admin effects log page
        nvme-pci: init shadow doorbell after each reset
        brd: add cond_resched to brd_free_pages
        sata_rcar: Remove ata_host_alloc() error printing
        s390/dasd: fix build warning in dasd_eckd_build_cp_raw
        lightnvm: pblk: use nvm_rq_to_ppa_list()
        lightnvm: pblk: simplify partial read path
        lightnvm: do not remove instance under global lock
        lightnvm: track inflight target creations
        lightnvm: pblk: recover only written metadata
        ...
      1718de78
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 815d469d
      Linus Torvalds authored
      Pull more clk framework updates from Stephen Boyd:
       "One more patch to remove io.h from clk-provider.h.
      
        We used to need this include when we had clk_readl() and clk_writel(),
        but those are gone now so this patch pushes the dependency out to the
        users of clk-provider.h"
      
      * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
        clk: Remove io.h from clk-provider.h
      815d469d
    • Linus Torvalds's avatar
      Merge branch 'for-5.2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 5f3ab27b
      Linus Torvalds authored
      Pull cgroup fix from Tejun Heo:
       "The cgroup2 freezer pulled in this cycle broke strace. This pull
        request includes a workaround for the problem.
      
        It's not a complete fix in that it may cause spurious frozen state
        flip-flops which is fairly minor. Will push a full fix once it's
        ready"
      
      * 'for-5.2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        signal: unconditionally leave the frozen state in ptrace_stop()
      5f3ab27b
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-5.2-rc1-2' of... · 4c7b63a3
      Linus Torvalds authored
      Merge tag 'linux-kselftest-5.2-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull more kselftest updates from Shuah Khan:
      
       - kselftest framework bpf build/test workflow regression fix
      
       - Fix to kselftest install to use default install path
      
       - Fix to kselftest KBUILD_OUTPUT builds to not clutter main
         KBUILD_OUTPUT directory with selftest objects
      
       - .gitignore fixes (Kelsey Skunberg)
      
       - rseq selftests updates (Mathieu Desnoyers and Martin Schwidefsky)
      
         They change the per-architecture pre-abort signatures to ensure those
         are valid trap instructions.
      
         The way exit points are presented to debuggers is enhanced, ensuring
         all exit points are present, so debuggers don't have to disassemble
         rseq critical section to properly skip over them.
      
         Discussions with the glibc community is reaching a consensus of
         exposing a __rseq_handled symbol from glibc to coexist with rseq
         early adopters. Update the rseq selftest code to expose and use this
         symbol.
      
         Support for compiling asm goto with clang is added with the
         "-no-integrated-as" compiler switch, similarly to the top level
         kernel Makefile.
      
       - kselftest Makefile test run output refactoring and making test output
         TAP13 compliant from Kees Cook:
      
         This re-factors the selftest Makefiles to extract the test running
         logic to be reused between "run_tests" and "emit_tests", while also
         fixing up the test output to be TAP version 13 compliant:
      	- added "plan" line
      	- fixed result line syntax
      	- moved all test output to be "# "-prefixed as TAP "diagnostic"
      	  lines
      
         The prefixing code includes a fallback mode for limited execution
         environments.
      
         Additionally, the plan lines are fixed for all callers of
         kselftest.h.
      
      * tag 'linux-kselftest-5.2-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (25 commits)
        selftests: avoid KBUILD_OUTPUT dir cluttering with selftest objects
        selftests: drivers: Create .gitignore to include /dma-buf/udmabuf
        selftests: pidfd: Create .gitignore to include pidfd_test
        selftests: fix bpf build/test workflow regression when KBUILD_OUTPUT is set
        selftests: fix install target to use default install path
        rseq/selftests: add -no-integrated-as for clang
        rseq/selftests: mips: use break instruction for RSEQ_SIG
        rseq/selftests: powerpc code signature: generate valid instructions
        rseq/selftests: aarch64 code signature: handle big-endian environment
        rseq/selftests: arm: use udf instruction for RSEQ_SIG
        rseq/selftests: s390: use trap4 for RSEQ_SIG
        rseq/selftests: x86: use ud1 instruction as RSEQ_SIG opcode
        rseq/selftests: s390: use jg instruction for jumps outside of the asm
        rseq/selftests: Use __rseq_handled symbol to coexist with glibc
        rseq/selftests: Introduce __rseq_cs_ptr_array, rename __rseq_table to __rseq_cs
        rseq/selftests: Add __rseq_exit_point_array section for debuggers
        rseq/selftests: x86: Work-around bogus gcc-8 optimisation
        selftests: Add test plan API to kselftest.h and adjust callers
        selftests: Remove KSFT_TAP_LEVEL
        selftests: Move test output to diagnostic lines
        ...
      4c7b63a3
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-5.2-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 9cbda1bd
      Linus Torvalds authored
      Pull Devicetree vendor prefix conversion from Rob Herring:
       "Conversion of vendor-prefixes.txt to json-schema"
      
      * tag 'devicetree-for-5.2-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        dt-bindings: Convert vendor prefixes to json-schema
      9cbda1bd
    • Linus Torvalds's avatar
      Merge tag 'afs-fixes-b-20190516' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs · 0d744719
      Linus Torvalds authored
      Pull AFS callback promise fixes from David Howells:
       "This series fixes a bunch of problems in callback promise handling,
        where a callback promise indicates a promise on the part of the server
        to notify the client in the event of some sort of change to a file or
        volume. In the event of a break, the client has to go and refetch the
        client status from the server and discard any cached permission
        information as the ACL might have changed.
      
        The problem in the current code is that changes made by other clients
        aren't always noticed, primarily because the file status information
        and the callback information aren't updated in the same critical
        section, even if these are carried in the same reply from an RPC
        operation, and so the AFS_VNODE_CB_PROMISED flag is unreliable.
      
        Arranging for them to be done in the same critical section during
        reply decoding is tricky because of the FS.InlineBulkStatus op - which
        has all the statuses in the reply arriving and then all the callbacks,
        so they have to be buffered. It simplifies things a lot to move the
        critical section out of the decode phase and do it after the RPC
        function returns.
      
        Also new inodes (either newly fetched or newly created) aren't
        properly managed against a callback break happening before we get the
        local inode up and running.
      
        Fix this by:
      
         - There's now a combined file status and callback record (struct
           afs_status_cb) to carry both plus some flags.
      
         - Each operation wrapper function allocates sufficient afs_status_cb
           records for all the vnodes it is interested in and passes them into
           RPC operations to be filled in from the reply.
      
         - The FileStatus and CallBack record decoders no longer apply the
           new/revised status and callback information to the inode/vnode at
           the point of decoding and instead store the information into the
           record from (2).
      
         - afs_vnode_commit_status() then revises the file status, detects
           deletion and notes callback information inside of a single critical
           section. It also checks the callback break counters and cancels the
           callback promise if they changed during the operation.
      
           [*] Note that "callback break counters" are counters of server
           events that cancel one or more callback promises that the client
           thinks it has. The client counts the events and compares the
           counters before and after an operation to see if the callback
           promise it thinks it just got evaporated before it got recorded
           under lock.
      
         - Volume and server callback break counters are passed into
           afs_iget() allowing callback breaks concurrent with inode set up to
           be detected and the callback promise thence to be cancelled.
      
         - AFS validation checks are now done under RCU conditions using a
           read lock on cb_lock. This requires vnode->cb_interest to be made
           RCU safe.
      
         - If the checks in (6) fail, the callback breaker is then called
           under write lock on the cb_lock - but only if the callback break
           counter didn't change from the value read before the checks were
           made.
      
         - Results from FS.InlineBulkStatus that correspond to inodes we
           currently have in memory are now used to update those inodes'
           status and callback information rather than being discarded. This
           requires those inodes to be looked up before the RPC op is made and
           all their callback break values saved.
      
        To aid in this, the following changes have also been made:
      
         - Don't pass the vnode into the reply delivery functions or the
           decoders. The vnode shouldn't be altered anywhere in those paths.
           The only exception, for the moment, is for the call done hook for
           file lock ops that wants access to both the vnode and the call -
           this can be fixed at a later time.
      
         - Get rid of the call->reply[] void* array and replace it with named
           and typed members. This avoids confusion since different ops were
           mapping different reply[] members to different things.
      
         - Fix an order-1 kmalloc allocation in afs_do_lookup() and replace it
           with kvcalloc().
      
         - Always get the reply time. Since callback, lock and fileserver
           record expiry times are calculated for several RPCs, make this
           mandatory.
      
         - Call afs_pages_written_back() from the operation wrapper rather
           than from the delivery function.
      
         - Don't store the version and type from a callback promise in a reply
           as the information in them is of very limited use"
      
      * tag 'afs-fixes-b-20190516' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
        afs: Fix application of the results of a inline bulk status fetch
        afs: Pass pre-fetch server and volume break counts into afs_iget5_set()
        afs: Fix unlink to handle YFS.RemoveFile2 better
        afs: Clear AFS_VNODE_CB_PROMISED if we detect callback expiry
        afs: Make vnode->cb_interest RCU safe
        afs: Split afs_validate() so first part can be used under LOOKUP_RCU
        afs: Don't save callback version and type fields
        afs: Fix application of status and callback to be under same lock
        afs: Always get the reply time
        afs: Fix order-1 allocation in afs_do_lookup()
        afs: Get rid of afs_call::reply[]
        afs: Don't pass the vnode pointer through into the inline bulk status op
      0d744719
    • Linus Torvalds's avatar
      Merge tag 'afs-fixes-20190516' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs · 227747fb
      Linus Torvalds authored
      Pull misc AFS fixes from David Howells:
       "This fixes a set of miscellaneous issues in the afs filesystem,
        including:
      
         - leak of keys on file close.
      
         - broken error handling in xattr functions.
      
         - missing locking when updating VL server list.
      
         - volume location server DNS lookup whereby preloaded cells may not
           ever get a lookup and regular DNS lookups to maintain server lists
           consume power unnecessarily.
      
         - incorrect error propagation and handling in the fileserver
           iteration code causes operations to sometimes apparently succeed.
      
         - interruption of server record check/update side op during
           fileserver iteration causes uninterruptible main operations to fail
           unexpectedly.
      
         - callback promise expiry time miscalculation.
      
         - over invalidation of the callback promise on directories.
      
         - double locking on callback break waking up file locking waiters.
      
         - double increment of the vnode callback break counter.
      
        Note that it makes some changes outside of the afs code, including:
      
         - an extra parameter to dns_query() to allow the dns_resolver key
           just accessed to be immediately invalidated. AFS is caching the
           results itself, so the key can be discarded.
      
         - an interruptible version of wait_var_event().
      
         - an rxrpc function to allow the maximum lifespan to be set on a
           call.
      
         - a way for an rxrpc call to be marked as non-interruptible"
      
      * tag 'afs-fixes-20190516' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
        afs: Fix double inc of vnode->cb_break
        afs: Fix lock-wait/callback-break double locking
        afs: Don't invalidate callback if AFS_VNODE_DIR_VALID not set
        afs: Fix calculation of callback expiry time
        afs: Make dynamic root population wait uninterruptibly for proc_cells_lock
        afs: Make some RPC operations non-interruptible
        rxrpc: Allow the kernel to mark a call as being non-interruptible
        afs: Fix error propagation from server record check/update
        afs: Fix the maximum lifespan of VL and probe calls
        rxrpc: Provide kernel interface to set max lifespan on a call
        afs: Fix "kAFS: AFS vnode with undefined type 0"
        afs: Fix cell DNS lookup
        Add wait_var_event_interruptible()
        dns_resolver: Allow used keys to be invalidated
        afs: Fix afs_cell records to always have a VL server list record
        afs: Fix missing lock when replacing VL server list
        afs: Fix afs_xattr_get_yfs() to not try freeing an error value
        afs: Fix incorrect error handling in afs_xattr_get_acl()
        afs: Fix key leak in afs_release() and afs_evict_inode()
      227747fb
  2. 16 May, 2019 31 commits
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-5.2-rc1' of git://github.com/ceph/ceph-client · 1d9d7cbf
      Linus Torvalds authored
      Pull ceph updates from Ilya Dryomov:
       "On the filesystem side we have:
      
         - a fix to enforce quotas set above the mount point (Luis Henriques)
      
         - support for exporting snapshots through NFS (Zheng Yan)
      
         - proper statx implementation (Jeff Layton). statx flags are mapped
           to MDS caps, with AT_STATX_{DONT,FORCE}_SYNC taken into account.
      
         - some follow-up dentry name handling fixes, in particular
           elimination of our hand-rolled helper and the switch to __getname()
           as suggested by Al (Jeff Layton)
      
         - a set of MDS client cleanups in preparation for async MDS requests
           in the future (Jeff Layton)
      
         - a fix to sync the filesystem before remounting (Jeff Layton)
      
        On the rbd side, work is on-going on object-map and fast-diff image
        features"
      
      * tag 'ceph-for-5.2-rc1' of git://github.com/ceph/ceph-client: (29 commits)
        ceph: flush dirty inodes before proceeding with remount
        ceph: fix unaligned access in ceph_send_cap_releases
        libceph: make ceph_pr_addr take an struct ceph_entity_addr pointer
        libceph: fix unaligned accesses in ceph_entity_addr handling
        rbd: don't assert on writes to snapshots
        rbd: client_mutex is never nested
        ceph: print inode number in __caps_issued_mask debugging messages
        ceph: just call get_session in __ceph_lookup_mds_session
        ceph: simplify arguments and return semantics of try_get_cap_refs
        ceph: fix comment over ceph_drop_caps_for_unlink
        ceph: move wait for mds request into helper function
        ceph: have ceph_mdsc_do_request call ceph_mdsc_submit_request
        ceph: after an MDS request, do callback and completions
        ceph: use pathlen values returned by set_request_path_attr
        ceph: use __getname/__putname in ceph_mdsc_build_path
        ceph: use ceph_mdsc_build_path instead of clone_dentry_name
        ceph: fix potential use-after-free in ceph_mdsc_build_path
        ceph: dump granular cap info in "caps" debugfs file
        ceph: make iterate_session_caps a public symbol
        ceph: fix NULL pointer deref when debugging is enabled
        ...
      1d9d7cbf
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux · 2c45e7fb
      Linus Torvalds authored
      Pull thermal management updates from Zhang Rui:
      
       - Remove the 'module' Kconfig option for thermal subsystem framework
         because the thermal framework are required to be ready as early as
         possible to avoid overheat at boot time (Daniel Lezcano)
      
       - Fix a bug that thermal framework pokes disabled thermal zones upon
         resume (Wei Wang)
      
        - A couple of cleanups and trivial fixes on int340x thermal drivers
          (Srinivas Pandruvada, Zhang Rui, Sumeet Pawnikar)
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
        drivers: thermal: processor_thermal: Downgrade error message
        mlxsw: Remove obsolete dependency on THERMAL=m
        hwmon/drivers/core: Simplify complex dependency
        thermal/drivers/core: Fix typo in the option name
        thermal/drivers/core: Remove depends on THERMAL in Kconfig
        thermal/drivers/core: Remove module unload code
        thermal/drivers/core: Remove the module Kconfig's option
        thermal: core: skip update disabled thermal zones after suspend
        thermal: make device_register's type argument const
        thermal: intel: int340x: processor_thermal_device: simplify to get driver data
        thermal/int3403_thermal: favor _TMP instead of PTYP
      2c45e7fb
    • Linus Torvalds's avatar
      Merge tag 'for-5.2/dm-changes-v2' of... · 311f7128
      Linus Torvalds authored
      Merge tag 'for-5.2/dm-changes-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper updates from Mike Snitzer:
      
       - Improve DM snapshot target's scalability by using finer grained
         locking. Requires some list_bl interface improvements.
      
       - Add ability for DM integrity to use a bitmap mode, that tracks
         regions where data and metadata are out of sync, instead of using a
         journal.
      
       - Improve DM thin provisioning target to not write metadata changes to
         disk if the thin-pool and associated thin devices are merely
         activated but not used. This avoids metadata corruption due to
         concurrent activation of thin devices across different OS instances
         (e.g. split brain scenarios, which ultimately would be avoided if
         proper device filters were used -- but not having proper filtering
         has proven a very common configuration mistake)
      
       - Fix missing call to path selector type->end_io in DM multipath. This
         fixes reported performance problems due to inaccurate path selector
         IO accounting causing an imbalance of IO (e.g. avoiding issuing IO to
         particular path due to it seemingly being heavily used).
      
       - Fix bug in DM cache metadata's loading of its discard bitset that
         could lead to all cache blocks being discarded if the very first
         cache block was discarded (thankfully in practice the first cache
         block is generally in use; be it FS superblock, partition table, disk
         label, etc).
      
       - Add testing-only DM dust target which simulates a device that has
         failing sectors and/or read failures.
      
       - Fix a DM init error path reference count hang that caused boot hangs
         if user supplied malformed input on kernel commandline.
      
       - Fix a couple issues with DM crypt target's logging being overly
         verbose or lacking context.
      
       - Various other small fixes to DM init, DM multipath, DM zoned, and DM
         crypt.
      
      * tag 'for-5.2/dm-changes-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (42 commits)
        dm: fix a couple brace coding style issues
        dm crypt: print device name in integrity error message
        dm crypt: move detailed message into debug level
        dm ioctl: fix hang in early create error condition
        dm integrity: whitespace, coding style and dead code cleanup
        dm integrity: implement synchronous mode for reboot handling
        dm integrity: handle machine reboot in bitmap mode
        dm integrity: add a bitmap mode
        dm integrity: introduce a function add_new_range_and_wait()
        dm integrity: allow large ranges to be described
        dm ingerity: pass size to dm_integrity_alloc_page_list()
        dm integrity: introduce rw_journal_sectors()
        dm integrity: update documentation
        dm integrity: don't report unused options
        dm integrity: don't check null pointer before kvfree and vfree
        dm integrity: correctly calculate the size of metadata area
        dm dust: Make dm_dust_init and dm_dust_exit static
        dm dust: remove redundant unsigned comparison to less than zero
        dm mpath: always free attached_handler_name in parse_path()
        dm init: fix max devices/targets checks
        ...
      311f7128
    • Qian Cai's avatar
      slab: remove /proc/slab_allocators · 7878c231
      Qian Cai authored
      It turned out that DEBUG_SLAB_LEAK is still broken even after recent
      recue efforts that when there is a large number of objects like
      kmemleak_object which is normal on a debug kernel,
      
        # grep kmemleak /proc/slabinfo
        kmemleak_object   2243606 3436210 ...
      
      reading /proc/slab_allocators could easily loop forever while processing
      the kmemleak_object cache and any additional freeing or allocating
      objects will trigger a reprocessing. To make a situation worse,
      soft-lockups could easily happen in this sitatuion which will call
      printk() to allocate more kmemleak objects to guarantee an infinite
      loop.
      
      Also, since it seems no one had noticed when it was totally broken
      more than 2-year ago - see the commit fcf88917 ("slab: fix a crash
      by reading /proc/slab_allocators"), probably nobody cares about it
      anymore due to the decline of the SLAB. Just remove it entirely.
      Suggested-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarQian Cai <cai@lca.pw>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7878c231
    • David Howells's avatar
      afs: Fix application of the results of a inline bulk status fetch · 39db9815
      David Howells authored
      Fix afs_do_lookup() such that when it does an inline bulk status fetch op,
      it will update inodes that are already extant (something that afs_iget()
      doesn't do) and to cache permits for each inode created (thereby avoiding a
      follow up FS.FetchStatus call to determine this).
      
      Extant inodes need looking up in advance so that their cb_break counters
      before and after the operation can be compared.  To this end, the inode
      pointers are cached so that they don't need looking up again after the op.
      
      Fixes: 5cf9dd55 ("afs: Prospectively look up extra files when doing a single lookup")
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      39db9815
    • David Howells's avatar
      afs: Pass pre-fetch server and volume break counts into afs_iget5_set() · b8359153
      David Howells authored
      Pass the server and volume break counts from before the status fetch
      operation that queried the attributes of a file into afs_iget5_set() so
      that the new vnode's break counters can be initialised appropriately.
      
      This allows detection of a volume or server break that happened whilst we
      were fetching the status or setting up the vnode.
      
      Fixes: c435ee34 ("afs: Overhaul the callback handling")
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      b8359153
    • David Howells's avatar
      afs: Fix unlink to handle YFS.RemoveFile2 better · a38a7558
      David Howells authored
      Make use of the status update for the target file that the YFS.RemoveFile2
      RPC op returns to correctly update the vnode as to whether the file was
      actually deleted or just had nlink reduced.
      
      Fixes: 30062bd1 ("afs: Implement YFS support in the fs client")
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      a38a7558
    • David Howells's avatar
      afs: Clear AFS_VNODE_CB_PROMISED if we detect callback expiry · 61c347ba
      David Howells authored
      Fix afs_validate() to clear AFS_VNODE_CB_PROMISED on a vnode if we detect
      any condition that causes the callback promise to be broken implicitly,
      including server break (cb_s_break), volume break (cb_v_break) or callback
      expiry.
      
      Fixes: ae3b7361 ("afs: Fix validation/callback interaction")
      Reported-by: default avatarMarc Dionne <marc.dionne@auristor.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      61c347ba
    • David Howells's avatar
      afs: Make vnode->cb_interest RCU safe · f642404a
      David Howells authored
      Use RCU-based freeing for afs_cb_interest struct objects and use RCU on
      vnode->cb_interest.  Use that change to allow afs_check_validity() to use
      read_seqbegin_or_lock() instead of read_seqlock_excl().
      
      This also requires the caller of afs_check_validity() to hold the RCU read
      lock across the call.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      f642404a
    • David Howells's avatar
      afs: Split afs_validate() so first part can be used under LOOKUP_RCU · c925bd0a
      David Howells authored
      Split afs_validate() so that the part that decides if the vnode is still
      valid can be used under LOOKUP_RCU conditions from afs_d_revalidate().
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      c925bd0a
    • David Howells's avatar
      afs: Don't save callback version and type fields · 7c712458
      David Howells authored
      Don't save callback version and type fields as the version is about the
      format of the callback information and the type is relative to the
      particular RPC call.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      7c712458
    • Rob Herring's avatar
      dt-bindings: Convert vendor prefixes to json-schema · 8122de54
      Rob Herring authored
      Convert the vendor prefix registry to a schema. This will enable checking
      that new vendor prefixes are added (in addition to the less than perfect
      checkpatch.pl check) and will also check against adding other prefixes
      which are not vendors.
      
      Converted vendor-prefixes.txt using the following sed script:
      
      sed -e 's/\([a-zA-Z0-9\-]*\)[[:space:]]*\([a-zA-Z0-9].*\)/  "^\1,\.\*\":\n    description: \2/'
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      8122de54
    • Linus Torvalds's avatar
      Merge tag 'media/v5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 01be377c
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
       "Some fixes for some platform drivers (rockchip, atmel, omap, daVinci,
        tegra-cec, coda and rcar).
      
        Also includes a fix on one of the V4L2 uAPI doc, explaining a border
        case"
      
      * tag 'media/v5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        media: rockchip/vpu: Fix/re-order probe-error/remove path
        media: rockchip/vpu: Initialize mdev->bus_info
        media: rockchip/vpu: Get vdev from the file arg in vidioc_querycap()
        media: rockchip/vpu: Add missing dont_use_autosuspend() calls
        media: rockchip/vpu: Do not request id 0 for our video device
        media: tegra-cec: fix cec_notifier_parse_hdmi_phandle return check
        media: davinci/vpbe: array underflow in vpbe_enum_outputs()
        media: field-order.rst: clarify FIELD_ANY and FIELD_NONE
        media: staging/imx: add media device to capture register
        media: rcar-csi2: Propagate the FLD signal for NTSC and PAL
        media: rcar-csi2: restart CSI-2 link if error is detected
        media: omap_vout: potential buffer overflow in vidioc_dqbuf()
        media: coda: fix unset field and fail on invalid field in buf_prepare
        media: atmel: atmel-isc: fix asd memory allocation
        media: atmel: atmel-isc: fix INIT_WORK misplacement
        media: atmel: atmel-isc: limit incoming pixels per frame
      01be377c
    • Linus Torvalds's avatar
      Merge tag 'edac_fixes_for_5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · 11b11773
      Linus Torvalds authored
      Pull EDAC fixes from Borislav Petkov:
      
       - Do not build mpc85_edac as a module (Michael Ellerman)
      
       - Correct edac_mc_find()'s return value on error (Robert Richter)
      
      * tag 'edac_fixes_for_5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        EDAC/mc: Fix edac_mc_find() in case no device is found
        EDAC/mpc85xx: Prevent building as a module
      11b11773
    • Linus Torvalds's avatar
      Merge tag 'configfs-for-5.2' of git://git.infradead.org/users/hch/configfs · 4e785e8d
      Linus Torvalds authored
      Pull configfs update from Christoph Hellwig:
      
       - a fix for an error path use after free (YueHaibing)
      
      * tag 'configfs-for-5.2' of git://git.infradead.org/users/hch/configfs:
        configfs: fix possible use-after-free in configfs_register_group
      4e785e8d
    • Linus Torvalds's avatar
      Merge tag 'asm-generic-nommu' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic · 27ebbf9d
      Linus Torvalds authored
      Pull nommu generic uaccess updates from Arnd Bergmann:
       "asm-generic: kill <asm/segment.h> and improve nommu generic uaccess helpers
      
        Christoph Hellwig writes:
      
           This is a series doing two somewhat interwinded things. It improves
           the asm-generic nommu uaccess helper to optionally be entirely
           generic and not require any arch helpers for the actual uaccess.
           For the generic uaccess.h to actually be generically useful I also
           had to kill off the mess we made of <asm/segment.h>, which really
           shouldn't exist on most architectures"
      
      * tag 'asm-generic-nommu' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
        asm-generic: optimize generic uaccess for 8-byte loads and stores
        asm-generic: provide entirely generic nommu uaccess
        arch: mostly remove <asm/segment.h>
        asm-generic: don't include <asm/segment.h> from <asm/uaccess.h>
      27ebbf9d
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d396360a
      Linus Torvalds authored
      Pull x86 fixes from Ingo Molnar:
       "Misc fixes and updates:
      
         - a handful of MDS documentation/comment updates
      
         - a cleanup related to hweight interfaces
      
         - a SEV guest fix for large pages
      
         - a kprobes LTO fix
      
         - and a final cleanup commit for vDSO HPET support removal"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/speculation/mds: Improve CPU buffer clear documentation
        x86/speculation/mds: Revert CPU buffer clear on double fault exit
        x86/kconfig: Disable CONFIG_GENERIC_HWEIGHT and remove __HAVE_ARCH_SW_HWEIGHT
        x86/mm: Do not use set_{pud, pmd}_safe() when splitting a large page
        x86/kprobes: Make trampoline_handler() global and visible
        x86/vdso: Remove hpet_page from vDSO
      d396360a
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b2c3dda6
      Linus Torvalds authored
      Pull time fixes from Ingo Molnar:
       "A TIA adjtimex interface extension, and a POSIX compliance ABI fix for
        timespec64 users"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        ntp: Allow TAI-UTC offset to be set to zero
        y2038: Make CONFIG_64BIT_TIME unconditional
      b2c3dda6
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c77ee64f
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
       "An x86 PMU constraint fix, an interface fix, and a Sparse fix"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86/intel: Allow PEBS multi-entry in watermark mode
        perf/x86/intel: Fix INTEL_FLAGS_EVENT_CONSTRAINT* masking
        perf/x86/amd/iommu: Make the 'amd_iommu_attr_groups' symbol static
      c77ee64f
    • Linus Torvalds's avatar
      Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f57d7715
      Linus Torvalds authored
      Pull locking fix from Ingo Molnar:
       "A single rwsem fix"
      
      * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        locking/rwsem: Prevent decrement of reader count before increment
      f57d7715
    • Roman Gushchin's avatar
      signal: unconditionally leave the frozen state in ptrace_stop() · 05b28926
      Roman Gushchin authored
      Alex Xu reported a regression in strace, caused by the introduction of
      the cgroup v2 freezer. The regression can be reproduced by stracing
      the following simple program:
      
        #include <unistd.h>
      
        int main() {
            write(1, "a", 1);
            return 0;
        }
      
      An attempt to run strace ./a.out leads to the infinite loop:
        [ pre-main omitted ]
        write(1, "a", 1)                        = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
        write(1, "a", 1)                        = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
        write(1, "a", 1)                        = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
        write(1, "a", 1)                        = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
        write(1, "a", 1)                        = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
        write(1, "a", 1)                        = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
        [ repeats forever ]
      
      The problem occurs because the traced task leaves ptrace_stop()
      (and the signal handling loop) with the frozen bit set. So let's
      call cgroup_leave_frozen(true) unconditionally after sleeping
      in ptrace_stop().
      
      With this patch applied, strace works as expected:
        [ pre-main omitted ]
        write(1, "a", 1)                        = 1
        exit_group(0)                           = ?
        +++ exited with 0 +++
      Reported-by: default avatarAlex Xu <alex_y_xu@yahoo.ca>
      Fixes: 76f969e8 ("cgroup: cgroup v2 freezer")
      Signed-off-by: default avatarRoman Gushchin <guro@fb.com>
      Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      05b28926
    • Linus Torvalds's avatar
      Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b2ca74d3
      Linus Torvalds authored
      Pull core fixes from Ingo Molnar:
       "A handful of objtool updates, plus a documentation addition for
        __ab_c_size()"
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        objtool: Fix whitelist documentation typo
        objtool: Fix function fallthrough detection
        objtool: Don't use ignore flag for fake jumps
        overflow.h: Add comment documenting __ab_c_size()
      b2ca74d3
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm · 8c05f3b9
      Linus Torvalds authored
      Pull ARM updates from Russell King:
       "ARM development updates:
      
         - more unified assembly conversions for clang
      
         - drop obsolete -mauto-it assembler option
      
         - remove arm_memory_present in preference to the generic version
      
         - remove unused asm/limits.h header
      
         - vdso linker update
      
        We tried to make the assembler warn if unified syntax was not used,
        but unfortunately older versions of GCC warn, so the commit had to be
        reverted"
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
        Revert "ARM: 8846/1: warn if divided syntax assembler is used"
        ARM: 8858/1: vdso: use $(LD) instead of $(CC) to link VDSO
        ARM: 8855/1: remove unused <asm/limits.h>
        ARM: 8850/1: use memblocks_present
        ARM: 8854/1: drop -mauto-it
        ARM: 8846/1: warn if divided syntax assembler is used
        ARM: 8853/1: drop WASM to work around LLVM issue
        ARM: 8852/1: uaccess: use unified assembler language syntax
        ARM: 8851/1: add TUSERCOND() macro for conditional postfix
      8c05f3b9
    • Linus Torvalds's avatar
      Merge tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · ab02888e
      Linus Torvalds authored
      Pull ARM SoC defconfig updates from Olof Johansson:
       "Mostly the usual churn due to options being reordered or not added in
        the right locations.
      
        Some various enabling of new drivers, etc.
      
        ... i.e. the usual updates, nothing particularly sticks out"
      
      * tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (23 commits)
        arm64: defconfig: Update UFSHCD for Hi3660 soc
        ARM: multi_v7_defconfig: Enable support for STPMIC1
        ARM: multi_v7_defconfig: Enable missing drivers for supported Chromebooks
        arm64: defconfig: enable mv-xor driver
        ARM: Enable Trusted Foundations for multiplatform ARM v7
        ARM: tegra: Enable Trusted Foundations by default
        ARM: tegra: Update default configuration for v5.1-rc1
        ARM: multi_v7_defconfig: Update for moved options
        ARM: multi_v7_defconfig: Update for dropped options
        ARM: shmobile: Enable USB [EO]HCI HCD PLATFORM support in shmobile_defconfig
        ARM: shmobile: Enable PHY_RCAR_GEN3_USB2 in shmobile_defconfig
        ARM: qcom_defconfig: add options for LG Nexus 5 phone
        arm64: defconfig: include the Agilex platform to the arm64 defconfig
        arm64: defconfig: Add PWM Fan support
        arm64: defconfig: Enable Tegra HDA support
        ARM: multi_v7_defconfig: Enable support for CFI NOR FLASH
        ARM: shmobile: defconfig: Enable support for CFI NOR FLASH
        ARM: shmobile: defconfig: Refresh for v5.1-rc1
        ARM: multi_v7_defconfig: enable the Amlogic Meson ADC and eFuse drivers
        arm64: defconfig: enable fpga and service layer
        ...
      ab02888e
    • Linus Torvalds's avatar
      Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · dc413a90
      Linus Torvalds authored
      Pull ARM SoC-related driver updates from Olof Johansson:
       "Various driver updates for platforms and a couple of the small driver
        subsystems we merge through our tree:
      
        Among the larger pieces:
      
         - Power management improvements for TI am335x and am437x (RTC
           suspend/wake)
      
         - Misc new additions for Amlogic (socinfo updates)
      
         - ZynqMP FPGA manager
      
         - Nvidia improvements for reset/powergate handling
      
         - PMIC wrapper for Mediatek MT8516
      
         - Misc fixes/improvements for ARM SCMI, TEE, NXP i.MX SCU drivers"
      
      * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (57 commits)
        soc: aspeed: fix Kconfig
        soc: add aspeed folder and misc drivers
        spi: zynqmp: Fix build break
        soc: imx: Add generic i.MX8 SoC driver
        MAINTAINERS: Update email for Qualcomm SoC maintainer
        memory: tegra: Fix a typos for "fdcdwr2" mc client
        Revert "ARM: tegra: Restore memory arbitration on resume from LP1 on Tegra30+"
        memory: tegra: Replace readl-writel with mc_readl-mc_writel
        memory: tegra: Fix integer overflow on tick value calculation
        memory: tegra: Fix missed registers values latching
        ARM: tegra: cpuidle: Handle tick broadcasting within cpuidle core on Tegra20/30
        optee: allow to work without static shared memory
        soc/tegra: pmc: Move powergate initialisation to probe
        soc/tegra: pmc: Remove reset sysfs entries on error
        soc/tegra: pmc: Fix reset sources and levels
        soc: amlogic: meson-gx-pwrc-vpu: Add support for G12A
        soc: amlogic: meson-gx-pwrc-vpu: Fix power on/off register bitmask
        fpga manager: Adding FPGA Manager support for Xilinx zynqmp
        dt-bindings: fpga: Add bindings for ZynqMP fpga driver
        firmware: xilinx: Add fpga API's
        ...
      dc413a90
    • Linus Torvalds's avatar
      Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · e8a1d701
      Linus Torvalds authored
      Pull ARM Device-tree updates from Olof Johansson:
       "Besides new bindings and additional descriptions of hardware blocks
        for various SoCs and boards, the main new contents here is:
      
        SoCs:
         - Intel Agilex (SoCFPGA)
         - NXP i.MX8MM (Quad Cortex-A53 with media/graphics focus)
      
        New boards:
         - Allwinner:
            + RerVision H3-DVK (H3)
            + Oceanic 5205 5inMFD (H6)
            + Beelink GS2 (H6)
            + Orange Pi 3 (H6)
         - Rockchip:
            + Orange Pi RK3399
            + Nanopi NEO4
            + Veyron-Mighty Chromebook variant
         - Amlogic:
            + SEI Robotics SEI510
         - ST Micro:
            + stm32mp157a discovery1
            + stm32mp157c discovery2
         - NXP:
            + Eckelmann ci4x10 (i.MX6DL)
            + i.MX8MM EVK (i.MX8MM)
            + ZII i.MX7 RPU2 (i.MX7)
            + ZII SPB4 (VF610)
            + Zii Ultra (i.MX8M)
            + TQ TQMa7S (i.MX7Solo)
            + TQ TQMa7D (i.MX7Dual)
            + Kobo Aura (i.MX50)
            + Menlosystems M53 (i.MX53)j
         - Nvidia:
            + Jetson Nano (Tegra T210)"
      
      * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (593 commits)
        arm64: dts: bitmain: Add UART pinctrl support for Sophon Edge
        arm64: dts: bitmain: Add pinctrl support for BM1880 SoC
        arm64: dts: bitmain: Add GPIO Line names for Sophon Edge board
        arm64: dts: bitmain: Add GPIO support for BM1880 SoC
        ARM: dts: gemini: Indent DIR-685 partition table
        dt-bindings: hwmon (pwm-fan) Remove dead "cooling-*-state" properties
        ARM: dts: qcom-apq8064: Set 'cxo_board' as ref clock of the DSI PHY
        arm64: dts: msm8998: thermal: Restrict thermal zone name length to under 20
        arm64: dts: msm8998: thermal: Fix number of supported sensors
        arm64: dts: msm8998-mtp: thermal: Remove skin and battery thermal zones
        arm64: dts: exynos: Move fixed-clocks out of soc
        arm64: dts: exynos: Move pmu and timer nodes out of soc
        ARM: dts: s5pv210: Fix camera clock provider on Goni board
        ARM: dts: exynos: Properly override node to use MDMA0 on Universal C210
        ARM: dts: exynos: Move fixed-clocks out of soc on Exynos3250
        ARM: dts: exynos: Remove unneeded address/size cells from fixed-clock on Exynos3250
        ARM: dts: exynos: Move pmu and timer nodes out of soc
        arm64: dts: rockchip: fix IO domain voltage setting of APIO5 on rockpro64
        arm64: dts: db820c: Add sound card support
        arm64: dts: apq8096-db820c: Add HDMI display support
        ...
      e8a1d701
    • Linus Torvalds's avatar
      Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 22c58fd7
      Linus Torvalds authored
      Pull ARM SoC platform updates from Olof Johansson:
       "SoC updates, mostly refactorings and cleanups of old legacy platforms.
      
        Major themes this release:
      
         - Conversion of ixp4xx to a modern platform (drivers, DT, bindings)
      
         - Moving some of the ep93xx headers around to get it closer to
           multiplatform enabled.
      
         - Cleanups of Davinci
      
        This also contains a few patches that were queued up as fixes before
        5.1 but I didn't get sent in before release"
      
      * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (123 commits)
        ARM: debug-ll: add default address for digicolor
        ARM: u300: regulator: add MODULE_LICENSE()
        ARM: ep93xx: move private headers out of mach/*
        ARM: ep93xx: move pinctrl interfaces into include/linux/soc
        ARM: ep93xx: keypad: stop using mach/platform.h
        ARM: ep93xx: move network platform data to separate header
        ARM: stm32: add AMBA support for stm32 family
        MAINTAINERS: update arch/arm/mach-davinci
        ARM: rockchip: add missing of_node_put in rockchip_smp_prepare_pmu
        ARM: dts: Add queue manager and NPE to the IXP4xx DTSI
        soc: ixp4xx: qmgr: Add DT probe code
        soc: ixp4xx: qmgr: Add DT bindings for IXP4xx qmgr
        soc: ixp4xx: npe: Add DT probe code
        soc: ixp4xx: Add DT bindings for IXP4xx NPE
        soc: ixp4xx: qmgr: Pass resources
        soc: ixp4xx: Remove unused functions
        soc: ixp4xx: Uninline several functions
        soc: ixp4xx: npe: Pass addresses as resources
        ARM: ixp4xx: Turn the QMGR into a platform device
        ARM: ixp4xx: Turn the NPE into a platform device
        ...
      22c58fd7
    • David Howells's avatar
      afs: Fix double inc of vnode->cb_break · fd711586
      David Howells authored
      When __afs_break_callback() clears the CB_PROMISED flag, it increments
      vnode->cb_break to trigger a future refetch of the status and callback -
      however it also calls afs_clear_permits(), which also increments
      vnode->cb_break.
      
      Fix this by removing the increment from afs_clear_permits().
      
      Whilst we're at it, fix the conditional call to afs_put_permits() as the
      function checks to see if the argument is NULL, so the check is redundant.
      
      Fixes: be080a6f ("afs: Overhaul permit caching");
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      fd711586
    • David Howells's avatar
      afs: Fix application of status and callback to be under same lock · a58823ac
      David Howells authored
      When applying the status and callback in the response of an operation,
      apply them in the same critical section so that there's no race between
      checking the callback state and checking status-dependent state (such as
      the data version).
      
      Fix this by:
      
       (1) Allocating a joint {status,callback} record (afs_status_cb) before
           calling the RPC function for each vnode for which the RPC reply
           contains a status or a status plus a callback.  A flag is set in the
           record to indicate if a callback was actually received.
      
       (2) These records are passed into the RPC functions to be filled in.  The
           afs_decode_status() and yfs_decode_status() functions are removed and
           the cb_lock is no longer taken.
      
       (3) xdr_decode_AFSFetchStatus() and xdr_decode_YFSFetchStatus() no longer
           update the vnode.
      
       (4) xdr_decode_AFSCallBack() and xdr_decode_YFSCallBack() no longer update
           the vnode.
      
       (5) vnodes, expected data-version numbers and callback break counters
           (cb_break) no longer need to be passed to the reply delivery
           functions.
      
           Note that, for the moment, the file locking functions still need
           access to both the call and the vnode at the same time.
      
       (6) afs_vnode_commit_status() is now given the cb_break value and the
           expected data_version and the task of applying the status and the
           callback to the vnode are now done here.
      
           This is done under a single taking of vnode->cb_lock.
      
       (7) afs_pages_written_back() is now called by afs_store_data() rather than
           by the reply delivery function.
      
           afs_pages_written_back() has been moved to before the call point and
           is now given the first and last page numbers rather than a pointer to
           the call.
      
       (8) The indicator from YFS.RemoveFile2 as to whether the target file
           actually got removed (status.abort_code == VNOVNODE) rather than
           merely dropping a link is now checked in afs_unlink rather than in
           xdr_decode_YFSFetchStatus().
      
      Supplementary fixes:
      
       (*) afs_cache_permit() now gets the caller_access mask from the
           afs_status_cb object rather than picking it out of the vnode's status
           record.  afs_fetch_status() returns caller_access through its argument
           list for this purpose also.
      
       (*) afs_inode_init_from_status() now uses a write lock on cb_lock rather
           than a read lock and now sets the callback inside the same critical
           section.
      
      Fixes: c435ee34 ("afs: Overhaul the callback handling")
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      a58823ac
    • David Howells's avatar
      afs: Fix lock-wait/callback-break double locking · c7226e40
      David Howells authored
      __afs_break_callback() holds vnode->lock around its call of
      afs_lock_may_be_available() - which also takes that lock.
      
      Fix this by not taking the lock in __afs_break_callback().
      
      Also, there's no point checking the granted_locks and pending_locks queues;
      it's sufficient to check lock_state, so move that check out of
      afs_lock_may_be_available() into __afs_break_callback() to replace the
      queue checks.
      
      Fixes: e8d6c554 ("AFS: implement file locking")
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      c7226e40
    • David Howells's avatar
      afs: Always get the reply time · 4571577f
      David Howells authored
      Always ask for the reply time from AF_RXRPC as it's used to calculate the
      callback expiry time and lock expiry times, so it's needed by most FS
      operations.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      4571577f