1. Nov 02, 2021
  2. Oct 19, 2021
  3. Oct 16, 2021
  4. Oct 13, 2021
  5. Oct 12, 2021
  6. Oct 05, 2021
  7. Oct 03, 2021
    • Chuck Lever's avatar
      NFSD: Have legacy NFSD WRITE decoders use xdr_stream_subsegment() · dae9a6ca
      Chuck Lever authored
      
      
      Refactor.
      
      Now that the NFSv2 and NFSv3 XDR decoders have been converted to
      use xdr_streams, the WRITE decoder functions can use
      xdr_stream_subsegment() to extract the WRITE payload into its own
      xdr_buf, just as the NFSv4 WRITE XDR decoder currently does.
      
      That makes it possible to pass the first kvec, pages array + length,
      page_base, and total payload length via a single function parameter.
      
      The payload's page_base is not yet assigned or used, but will be in
      subsequent patches.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      dae9a6ca
    • Chuck Lever's avatar
      SUNRPC: xdr_stream_subsegment() must handle non-zero page_bases · f49b68dd
      Chuck Lever authored
      xdr_stream_subsegment() was introduced in commit c1346a12
      
      
      ("NFSD: Replace the internals of the READ_BUF() macro").
      
      There are two call sites for xdr_stream_subsegment(). One is
      nfsd4_decode_write(), and the other is nfsd4_decode_setxattr().
      Currently neither of these call sites calls this API when
      xdr_buf::page_base is a non-zero value.
      
      However, I'm about to add a case where page_base will sometimes not
      be zero when nfsd4_decode_write() invokes this API. Replace the
      logic in xdr_stream_subsegment() that advances to the next data item
      in the xdr_stream with something more generic in order to handle
      this new use case.
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      f49b68dd
    • Colin Ian King's avatar
      NFSD: Initialize pointer ni with NULL and not plain integer 0 · 8e70bf27
      Colin Ian King authored
      
      
      Pointer ni is being initialized with plain integer zero. Fix
      this by initializing with NULL.
      
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      8e70bf27
    • NeilBrown's avatar
      NFSD: simplify struct nfsfh · d8b26071
      NeilBrown authored
      
      
      Most of the fields in 'struct knfsd_fh' are 2 levels deep (a union and a
      struct) and are accessed using macros like:
      
       #define fh_FOO fh_base.fh_new.fb_FOO
      
      This patch makes the union and struct anonymous, so that "fh_FOO" can be
      a name directly within 'struct knfsd_fh' and the #defines aren't needed.
      
      The file handle as a whole is sometimes accessed as "fh_base" or
      "fh_base.fh_pad", neither of which are particularly helpful names.
      As the struct holding the filehandle is now anonymous, we
      cannot use the name of that, so we union it with 'fh_raw' and use that
      where the raw filehandle is needed.  fh_raw also ensure the structure is
      large enough for the largest possible filehandle.
      
      fh_raw is a 'char' array, removing any need to cast it for memcpy etc.
      
      SVCFH_fmt() is simplified using the "%ph" printk format.  This
      changes the appearance of filehandles in dprintk() debugging, making
      them a little more precise.
      
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      d8b26071
    • NeilBrown's avatar
      NFSD: drop support for ancient filehandles · c645a883
      NeilBrown authored
      
      
      Filehandles not in the "new" or "version 1" format have not been handed
      out for new mounts since Linux 2.4 which was released 20 years ago.
      I think it is safe to say that no such file handles are still in use,
      and that we can drop support for them.
      
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      c645a883
    • NeilBrown's avatar
      NFSD: move filehandle format declarations out of "uapi". · ef5825e3
      NeilBrown authored
      
      
      A small part of the declaration concerning filehandle format are
      currently in the "uapi" include directory:
         include/uapi/linux/nfsd/nfsfh.h
      
      There is a lot more to the filehandle format, including "enum fid_type"
      and "enum nfsd_fsid" which are not exported via "uapi".
      
      This small part of the filehandle definition is of minimal use outside
      of the kernel, and I can find no evidence that an other code is using
      it. Certainly nfs-utils and wireshark (The most likely candidates) do not
      use these declarations.
      
      So move it out of "uapi" by copying the content from
        include/uapi/linux/nfsd/nfsfh.h
      into
        fs/nfsd/nfsfh.h
      
      A few unnecessary "#include" directives are not copied, and neither is
      the #define of fh_auth, which is annotated as being for userspace only.
      
      The copyright claims in the uapi file are identical to those in the nfsd
      file, so there is no need to copy those.
      
      The "__u32" style integer types are only needed in "uapi".  In
      kernel-only code we can use the more familiar "u32" style.
      
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      ef5825e3
  8. Sep 24, 2021
  9. Sep 22, 2021
    • Chuck Lever's avatar
      NFSD: Optimize DRC bucket pruning · 8847ecc9
      Chuck Lever authored
      
      
      DRC bucket pruning is done by nfsd_cache_lookup(), which is part of
      every NFSv2 and NFSv3 dispatch (ie, it's done while the client is
      waiting).
      
      I added a trace_printk() in prune_bucket() to see just how long
      it takes to prune. Here are two ends of the spectrum:
      
       prune_bucket: Scanned 1 and freed 0 in 90 ns, 62 entries remaining
       prune_bucket: Scanned 2 and freed 1 in 716 ns, 63 entries remaining
      ...
       prune_bucket: Scanned 75 and freed 74 in 34149 ns, 1 entries remaining
      
      Pruning latency is noticeable on fast transports with fast storage.
      By noticeable, I mean that the latency measured here in the worst
      case is the same order of magnitude as the round trip time for
      cached server operations.
      
      We could do something like moving expired entries to an expired list
      and then free them later instead of freeing them right in
      prune_bucket(). But simply limiting the number of entries that can
      be pruned by a lookup is simple and retains more entries in the
      cache, making the DRC somewhat more effective.
      
      Comparison with a 70/30 fio 8KB 12 thread direct I/O test:
      
      Before:
      
        write: IOPS=61.6k, BW=481MiB/s (505MB/s)(14.1GiB/30001msec); 0 zone resets
      
      WRITE:
      	1848726 ops (30%)
      	avg bytes sent per op: 8340 avg bytes received per op: 136
      	backlog wait: 0.635158 	RTT: 0.128525 	total execute time: 0.827242 (milliseconds)
      
      After:
      
        write: IOPS=63.0k, BW=492MiB/s (516MB/s)(14.4GiB/30001msec); 0 zone resets
      
      WRITE:
      	1891144 ops (30%)
      	avg bytes sent per op: 8340 avg bytes received per op: 136
      	backlog wait: 0.616114 	RTT: 0.126842 	total execute time: 0.805348 (milliseconds)
      
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      8847ecc9
    • J. Bruce Fields's avatar
      nfs: reexport documentation · dc451bbc
      J. Bruce Fields authored
      We've supported reexport for a while but documentation is limited.  This
      is mainly a simplified version of the text I wrote for the linux-nfs
      wiki at https://wiki.linux-nfs.org/wiki/index.php/NFS_re-export
      
      .
      
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      dc451bbc
    • J. Bruce Fields's avatar
      nfsd: don't alloc under spinlock in rpc_parse_scope_id · 9b6e27d0
      J. Bruce Fields authored
      Dan Carpenter says:
      
        The patch d20c11d8
      
      : "nfsd: Protect session creation and client
        confirm using client_lock" from Jul 30, 2014, leads to the following
        Smatch static checker warning:
      
              net/sunrpc/addr.c:178 rpc_parse_scope_id()
              warn: sleeping in atomic context
      
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Fixes: d20c11d8
      
       ("nfsd: Protect session creation and client...")
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      9b6e27d0
  10. Sep 20, 2021
    • Linus Torvalds's avatar
      Linux 5.15-rc2 · e4e737bb
      Linus Torvalds authored
      e4e737bb
    • Linus Torvalds's avatar
      pci_iounmap'2: Electric Boogaloo: try to make sense of it all · 316e8d79
      Linus Torvalds authored
      Nathan Chancellor reports that the recent change to pci_iounmap in
      commit 9caea000 ("parisc: Declare pci_iounmap() parisc version only
      when CONFIG_PCI enabled") causes build errors on arm64.
      
      It took me about two hours to convince myself that I think I know what
      the logic of that mess of #ifdef's in the <asm-generic/io.h> header file
      really aim to do, and rewrite it to be easier to follow.
      
      Famous last words.
      
      Anyway, the code has now been lifted from that grotty header file into
      lib/pci_iomap.c, and has fairly extensive comments about what the logic
      is.  It also avoids indirecting through another confusing (and badly
      named) helper function that has other preprocessor config conditionals.
      
      Let's see what odd architecture did something else strange in this area
      to break things.  But my arm64 cross build is clean.
      
      Fixes: 9caea000
      
       ("parisc: Declare pci_iounmap() parisc version only when CONFIG_PCI enabled")
      Reported-by: default avatarNathan Chancellor <nathan@kernel.org>
      Cc: Helge Deller <deller@gmx.de>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Ulrich Teichert <krypton@ulrich-teichert.org>
      Cc: James Bottomley <James.Bottomley@hansenpartnership.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      316e8d79
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v5.15_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 20621d2f
      Linus Torvalds authored
      Pull x86 fixes from Borislav Petkov:
      
       - Prevent a infinite loop in the MCE recovery on return to user space,
         which was caused by a second MCE queueing work for the same page and
         thereby creating a circular work list.
      
       - Make kern_addr_valid() handle existing PMD entries, which are marked
         not present in the higher level page table, correctly instead of
         blindly dereferencing them.
      
       - Pass a valid address to sanitize_phys(). This was caused by the
         mixture of inclusive and exclusive ranges. memtype_reserve() expect
         'end' being exclusive, but sanitize_phys() wants it inclusive. This
         worked so far, but with end being the end of the physical address
         space the fail is exposed.
      
       - Increase the maximum supported GPIO numbers for 64bit. Newer SoCs
         exceed the previous maximum.
      
      * tag 'x86_urgent_for_v5.15_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mce: Avoid infinite loop for copy from user recovery
        x86/mm: Fix kern_addr_valid() to cope with existing but not present entries
        x86/platform: Increase maximum GPIO number for X86_64
        x86/pat: Pass valid address to sanitize_phys()
      20621d2f
    • Linus Torvalds's avatar
      Merge tag 'perf-urgent-2021-09-19' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fec30362
      Linus Torvalds authored
      Pull perf event fix from Thomas Gleixner:
       "A single fix for the perf core where a value read with READ_ONCE() was
        checked and then reread which makes all the checks invalid. Reuse the
        already read value instead"
      
      * tag 'perf-urgent-2021-09-19' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        events: Reuse value read using READ_ONCE instead of re-reading it
      fec30362
    • Linus Torvalds's avatar
      Merge tag 'locking-urgent-2021-09-19' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f5e29a26
      Linus Torvalds authored
      Pull locking fixes from Thomas Gleixner:
       "A set of updates for the RT specific reader/writer locking base code:
      
         - Make the fast path reader ordering guarantees correct.
      
         - Code reshuffling to make the fix simpler"
      
      [ This plays ugly games with atomic_add_return_release() because we
        don't have a plain atomic_add_release(), and should really be cleaned
        up, I think    - Linus ]
      
      * tag 'locking-urgent-2021-09-19' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        locking/rwbase: Take care of ordering guarantee for fastpath reader
        locking/rwbase: Extract __rwbase_write_trylock()
        locking/rwbase: Properly match set_and_save_state() to restore_state()
      f5e29a26
    • Linus Torvalds's avatar
      Merge tag 'powerpc-5.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 62453a46
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Fix crashes when scv (System Call Vectored) is used to make a syscall
         when a transaction is active, on Power9 or later.
      
       - Fix bad interactions between rfscv (Return-from scv) and Power9
         fake-suspend mode.
      
       - Fix crashes when handling machine checks in LPARs using the Hash MMU.
      
       - Partly revert a recent change to our XICS interrupt controller code,
         which broke the recently added Microwatt support.
      
      Thanks to Cédric Le Goater, Eirik Fuller, Ganesh Goudar, Gustavo Romero,
      Joel Stanley, Nicholas Piggin.
      
      * tag 'powerpc-5.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/xics: Set the IRQ chip data for the ICS native backend
        powerpc/mce: Fix access error in mce handler
        KVM: PPC: Book3S HV: Tolerate treclaim. in fake-suspend mode changing registers
        powerpc/64s: system call rfscv workaround for TM bugs
        selftests/powerpc: Add scv versions of the basic TM syscall tests
        powerpc/64s: system call scv tabort fix for corrupt irq soft-mask state
      62453a46
    • Linus Torvalds's avatar
      Merge tag 'kbuild-fixes-v5.15' of... · 2f629969
      Linus Torvalds authored
      Merge tag 'kbuild-fixes-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
      
      Pull Kbuild fixes from Masahiro Yamada:
      
       - Fix bugs in checkkconfigsymbols.py
      
       - Fix missing sys import in gen_compile_commands.py
      
       - Fix missing FORCE warning for ARCH=sh builds
      
       - Fix -Wignored-optimization-argument warnings for Clang builds
      
       - Turn -Wignored-optimization-argument into an error in order to stop
         building instead of sprinkling warnings
      
      * tag 'kbuild-fixes-v5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        kbuild: Add -Werror=ignored-optimization-argument to CLANG_FLAGS
        x86/build: Do not add -falign flags unconditionally for clang
        kbuild: Fix comment typo in scripts/Makefile.modpost
        sh: Add missing FORCE prerequisites in Makefile
        gen_compile_commands: fix missing 'sys' package
        checkkconfigsymbols.py: Remove skipping of help lines in parse_kconfig_file
        checkkconfigsymbols.py: Forbid passing 'HEAD' to --commit
      2f629969
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-for-v5.15-2021-09-18' of... · d94f3957
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-for-v5.15-2021-09-18' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull perf tools fixes from Arnaldo Carvalho de Melo:
      
       - Fix ip display in 'perf script' when output type != attr->type.
      
       - Ignore deprecation warning when using libbpf'sg btf__get_from_id(),
         fixing the build with libbpf v0.6+.
      
       - Make use of FD() robust in libperf, fixing a segfault with 'perf stat
         --iostat list'.
      
       - Initialize addr_location:srcline pointer to NULL when resolving
         callchain addresses.
      
       - Fix fused instruction logic for assembly functions in 'perf
         annotate'.
      
      * tag 'perf-tools-fixes-for-v5.15-2021-09-18' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
        perf bpf: Ignore deprecation warning when using libbpf's btf__get_from_id()
        libperf evsel: Make use of FD robust.
        perf machine: Initialize srcline string member in add_location struct
        perf script: Fix ip display when type != attr->type
        perf annotate: Fix fused instr logic for assembly functions
      d94f3957
    • Linus Torvalds's avatar
      dmascc: use proper 'virt_to_bus()' rather than casting to 'int' · bc1abb9e
      Linus Torvalds authored
      
      
      The old dmascc driver depends on the legacy ISA_DMA_API, and blindly
      just casts the kernel virtual address to 'int' for set_dma_addr().
      
      That works only incidentally, and because the high bits of the address
      will be ignored anyway. And on 64-bit architectures it causes warnings.
      
      Admittedly, 64-bit architectures with ISA are basically dead - I think
      the only example of this is alpha, and nobody would ever use the dmascc
      driver there.  But hey, the fix is easy enough, the end result is
      cleaner, and it's yet another configuration that now builds without
      warnings.
      
      If somebody actually uses this driver on an alpha and this fixes it for
      you, please email me.  Because that is just incredibly bizarre.
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bc1abb9e
    • Linus Torvalds's avatar
      alpha: enable GENERIC_PCI_IOMAP unconditionally · 4fef6115
      Linus Torvalds authored
      With the previous commit (9caea000
      
      : "parisc: Declare pci_iounmap()
      parisc version only when CONFIG_PCI enabled") we can now enable
      GENERIC_PCI_IOMAP unconditionally on alpha, and if PCI is not enabled we
      will just get the nice empty helper functions that allow mixed-bus
      drivers to build.
      
      Example driver: the old 3com/3c59x.c driver works with either the PCI or
      the EISA version of the 3x59x card, but wouldn't build in an EISA-only
      configuration because of missing pci_iomap() and pci_iounmap() dummy
      wrappers.
      
      Most of the other PCI infrastructure just becomes empty wrappers even
      without GENERIC_PCI_IOMAP, and it's not obvious that the pci_iomap
      functionality shouldn't do the same, but this works.
      
      Cc: Ulrich Teichert <krypton@ulrich-teichert.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4fef6115
    • Helge Deller's avatar
      parisc: Declare pci_iounmap() parisc version only when CONFIG_PCI enabled · 9caea000
      Helge Deller authored
      Linus noticed odd declaration rules for pci_iounmap() in iomap.h and
      pci_iomap.h, where it dependend on either NO_GENERIC_PCI_IOPORT_MAP or
      GENERIC_IOMAP when CONFIG_PCI was disabled.
      
      Testing on parisc seems to indicate that we need pci_iounmap() only when
      CONFIG_PCI is enabled, so the declaration of pci_iounmap() can be moved
      cleanly into pci_iomap.h in sync with the declarations of pci_iomap().
      
      Link: https://lore.kernel.org/all/CAHk-=wjRrh98pZoQ+AzfWmsTZacWxTJKXZ9eKU2X_0+jM=O8nw@mail.gmail.com/
      
      
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Fixes: 97a29d59
      
       ("[PARISC] fix compile break caused by iomap: make IOPORT/PCI mapping functions conditional")
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Ulrich Teichert <krypton@ulrich-teichert.org>
      Cc: James Bottomley <James.Bottomley@hansenpartnership.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9caea000
    • Linus Torvalds's avatar
      Revert "drm/vc4: hdmi: Remove drm_encoder->crtc usage" · 31ad37bd
      Linus Torvalds authored
      This reverts commit 27da370e.
      
      Sudip Mukherjee reports that this broke pulseaudio with a NULL pointer
      dereference in vc4_hdmi_audio_prepare(), bisected it to this commit, and
      confirmed that a revert fixed the problem.
      
      Revert the problematic commit until fixed.
      
      Link: https://lore.kernel.org/all/CADVatmPB9-oKd=ypvj25UYysVo6EZhQ6bCM7EvztQBMyiZfAyw@mail.gmail.com/
      Link: https://lore.kernel.org/all/CADVatmN5EpRshGEPS_JozbFQRXg5w_8LFB3OMP1Ai-ghxd3w4g@mail.gmail.com/
      
      
      Reported-and-tested-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Cc: Maxime Ripard <maxime@cerno.tech>
      Cc: Emma Anholt <emma@anholt.net>
      Cc: Dave Airlie <airlied@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      31ad37bd
    • Linus Torvalds's avatar
      Revert drm/vc4 hdmi runtime PM changes · b1044a9b
      Linus Torvalds authored
      This reverts commits
      
        9984d666 ("drm/vc4: hdmi: Make sure the controller is powered in detect")
        411efa18 ("drm/vc4: hdmi: Move the HSM clock enable to runtime_pm")
      
      as Michael Stapelberg reports that the new runtime PM changes cause his
      Raspberry Pi 3 to hang on boot, probably due to interactions with other
      changes in the DRM tree (because a bisect points to the merge in commit
      e058a84b: "Merge tag 'drm-next-2021-07-01' of git://.../drm").
      
      Revert these two commits until it's been resolved.
      
      Link: https://lore.kernel.org/all/871r5mp7h2.fsf@midna.i-did-not-set--mail-host-address--so-tickle-me/
      
      
      Reported-and-tested-by: default avatarMichael Stapelberg <michael@stapelberg.ch>
      Cc: Maxime Ripard <maxime@cerno.tech>
      Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>
      Cc: Dave Airlie <airlied@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b1044a9b
  11. Sep 19, 2021