1. 12 12月, 2020 7 次提交
    • K
      kasan: fix object remaining in offline per-cpu quarantine · 6c82d45c
      Kuan-Ying Lee 提交于
      We hit this issue in our internal test.  When enabling generic kasan, a
      kfree()'d object is put into per-cpu quarantine first.  If the cpu goes
      offline, object still remains in the per-cpu quarantine.  If we call
      kmem_cache_destroy() now, slub will report "Objects remaining" error.
      
        =============================================================================
        BUG test_module_slab (Not tainted): Objects remaining in test_module_slab on __kmem_cache_shutdown()
        -----------------------------------------------------------------------------
      
        Disabling lock debugging due to kernel taint
        INFO: Slab 0x(____ptrval____) objects=34 used=1 fp=0x(____ptrval____) flags=0x2ffff00000010200
        CPU: 3 PID: 176 Comm: cat Tainted: G    B             5.10.0-rc1-00007-g4525c878-dirty #10
        Hardware name: linux,dummy-virt (DT)
        Call trace:
           dump_backtrace+0x0/0x2b0
           show_stack+0x18/0x68
           dump_stack+0xfc/0x168
           slab_err+0xac/0xd4
           __kmem_cache_shutdown+0x1e4/0x3c8
           kmem_cache_destroy+0x68/0x130
           test_version_show+0x84/0xf0
           module_attr_show+0x40/0x60
           sysfs_kf_seq_show+0x128/0x1c0
           kernfs_seq_show+0xa0/0xb8
           seq_read+0x1f0/0x7e8
           kernfs_fop_read+0x70/0x338
           vfs_read+0xe4/0x250
           ksys_read+0xc8/0x180
           __arm64_sys_read+0x44/0x58
           el0_svc_common.constprop.0+0xac/0x228
           do_el0_svc+0x38/0xa0
           el0_sync_handler+0x170/0x178
           el0_sync+0x174/0x180
        INFO: Object 0x(____ptrval____) @offset=15848
        INFO: Allocated in test_version_show+0x98/0xf0 age=8188 cpu=6 pid=172
           stack_trace_save+0x9c/0xd0
           set_track+0x64/0xf0
           alloc_debug_processing+0x104/0x1a0
           ___slab_alloc+0x628/0x648
           __slab_alloc.isra.0+0x2c/0x58
           kmem_cache_alloc+0x560/0x588
           test_version_show+0x98/0xf0
           module_attr_show+0x40/0x60
           sysfs_kf_seq_show+0x128/0x1c0
           kernfs_seq_show+0xa0/0xb8
           seq_read+0x1f0/0x7e8
           kernfs_fop_read+0x70/0x338
           vfs_read+0xe4/0x250
           ksys_read+0xc8/0x180
           __arm64_sys_read+0x44/0x58
           el0_svc_common.constprop.0+0xac/0x228
        kmem_cache_destroy test_module_slab: Slab cache still has objects
      
      Register a cpu hotplug function to remove all objects in the offline
      per-cpu quarantine when cpu is going offline.  Set a per-cpu variable to
      indicate this cpu is offline.
      
      [qiang.zhang@windriver.com: fix slab double free when cpu-hotplug]
        Link: https://lkml.kernel.org/r/20201204102206.20237-1-qiang.zhang@windriver.com
      
      Link: https://lkml.kernel.org/r/1606895585-17382-2-git-send-email-Kuan-Ying.Lee@mediatek.comSigned-off-by: NKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Signed-off-by: NZqiang <qiang.zhang@windriver.com>
      Suggested-by: NDmitry Vyukov <dvyukov@google.com>
      Reported-by: NGuangye Yang <guangye.yang@mediatek.com>
      Reviewed-by: NDmitry Vyukov <dvyukov@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Nicholas Tang <nicholas.tang@mediatek.com>
      Cc: Miles Chen <miles.chen@mediatek.com>
      Cc: Qian Cai <qcai@redhat.com>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6c82d45c
    • A
      elfcore: fix building with clang · 6e7b64b9
      Arnd Bergmann 提交于
      kernel/elfcore.c only contains weak symbols, which triggers a bug with
      clang in combination with recordmcount:
      
        Cannot find symbol for section 2: .text.
        kernel/elfcore.o: failed
      
      Move the empty stubs into linux/elfcore.h as inline functions.  As only
      two architectures use these, just use the architecture specific Kconfig
      symbols to key off the declaration.
      
      Link: https://lkml.kernel.org/r/20201204165742.3815221-2-arnd@kernel.orgSigned-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Nathan Chancellor <natechancellor@gmail.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Barret Rhoden <brho@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6e7b64b9
    • A
      initramfs: fix clang build failure · 55d5b7dd
      Arnd Bergmann 提交于
      There is only one function in init/initramfs.c that is in the .text
      section, and it is marked __weak.  When building with clang-12 and the
      integrated assembler, this leads to a bug with recordmcount:
      
        ./scripts/recordmcount  "init/initramfs.o"
        Cannot find symbol for section 2: .text.
        init/initramfs.o: failed
      
      I'm not quite sure what exactly goes wrong, but I notice that this
      function is only ever called from an __init function, and normally
      inlined.  Marking it __init as well is clearly correct and it leads to
      recordmcount no longer complaining.
      
      Link: https://lkml.kernel.org/r/20201204165742.3815221-1-arnd@kernel.orgSigned-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Nathan Chancellor <natechancellor@gmail.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Barret Rhoden <brho@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      55d5b7dd
    • A
      kbuild: avoid static_assert for genksyms · 14dc3983
      Arnd Bergmann 提交于
      genksyms does not know or care about the _Static_assert() built-in, and
      sometimes falls back to ignoring the later symbols, which causes
      undefined behavior such as
      
        WARNING: modpost: EXPORT symbol "ethtool_set_ethtool_phy_ops" [vmlinux] version generation failed, symbol will not be versioned.
        ld: net/ethtool/common.o: relocation R_AARCH64_ABS32 against `__crc_ethtool_set_ethtool_phy_ops' can not be used when making a shared object
        net/ethtool/common.o:(_ftrace_annotated_branch+0x0): dangerous relocation: unsupported relocation
      
      Redefine static_assert for genksyms to avoid that.
      
      Link: https://lkml.kernel.org/r/20201203230955.1482058-1-arnd@kernel.orgSigned-off-by: NArnd Bergmann <arnd@arndb.de>
      Suggested-by: NArd Biesheuvel <ardb@kernel.org>
      Cc: Masahiro Yamada <masahiroy@kernel.org>
      Cc: Michal Marek <michal.lkml@markovi.net>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Rikard Falkeborn <rikard.falkeborn@gmail.com>
      Cc: Marco Elver <elver@google.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      14dc3983
    • A
      selftest/fpu: avoid clang warning · 84edc2ef
      Arnd Bergmann 提交于
      With extra warnings enabled, clang complains about the redundant
      -mhard-float argument:
      
        clang: error: argument unused during compilation: '-mhard-float' [-Werror,-Wunused-command-line-argument]
      
      Move this into the gcc-only part of the Makefile.
      
      Link: https://lkml.kernel.org/r/20201203223652.1320700-1-arnd@kernel.org
      Fixes: 4185b3b9 ("selftests/fpu: Add an FPU selftest")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Nathan Chancellor <natechancellor@gmail.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Petteri Aimonen <jpa@git.mail.kapsi.fi>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      84edc2ef
    • M
      proc: use untagged_addr() for pagemap_read addresses · 40d6366e
      Miles Chen 提交于
      When we try to visit the pagemap of a tagged userspace pointer, we find
      that the start_vaddr is not correct because of the tag.
      To fix it, we should untag the userspace pointers in pagemap_read().
      
      I tested with 5.10-rc4 and the issue remains.
      
      Explanation from Catalin in [1]:
      
       "Arguably, that's a user-space bug since tagged file offsets were never
        supported. In this case it's not even a tag at bit 56 as per the arm64
        tagged address ABI but rather down to bit 47. You could say that the
        problem is caused by the C library (malloc()) or whoever created the
        tagged vaddr and passed it to this function. It's not a kernel
        regression as we've never supported it.
      
        Now, pagemap is a special case where the offset is usually not
        generated as a classic file offset but rather derived by shifting a
        user virtual address. I guess we can make a concession for pagemap
        (only) and allow such offset with the tag at bit (56 - PAGE_SHIFT + 3)"
      
      My test code is based on [2]:
      
      A userspace pointer which has been tagged by 0xb4: 0xb400007662f541c8
      
      userspace program:
      
        uint64 OsLayer::VirtualToPhysical(void *vaddr) {
      	uint64 frame, paddr, pfnmask, pagemask;
      	int pagesize = sysconf(_SC_PAGESIZE);
      	off64_t off = ((uintptr_t)vaddr) / pagesize * 8; // off = 0xb400007662f541c8 / pagesize * 8 = 0x5a00003b317aa0
      	int fd = open(kPagemapPath, O_RDONLY);
      	...
      
      	if (lseek64(fd, off, SEEK_SET) != off || read(fd, &frame, 8) != 8) {
      		int err = errno;
      		string errtxt = ErrorString(err);
      		if (fd >= 0)
      			close(fd);
      		return 0;
      	}
        ...
        }
      
      kernel fs/proc/task_mmu.c:
      
        static ssize_t pagemap_read(struct file *file, char __user *buf,
      		size_t count, loff_t *ppos)
        {
      	...
      	src = *ppos;
      	svpfn = src / PM_ENTRY_BYTES; // svpfn == 0xb400007662f54
      	start_vaddr = svpfn << PAGE_SHIFT; // start_vaddr == 0xb400007662f54000
      	end_vaddr = mm->task_size;
      
      	/* watch out for wraparound */
      	// svpfn == 0xb400007662f54
      	// (mm->task_size >> PAGE) == 0x8000000
      	if (svpfn > mm->task_size >> PAGE_SHIFT) // the condition is true because of the tag 0xb4
      		start_vaddr = end_vaddr;
      
      	ret = 0;
      	while (count && (start_vaddr < end_vaddr)) { // we cannot visit correct entry because start_vaddr is set to end_vaddr
      		int len;
      		unsigned long end;
      		...
      	}
      	...
        }
      
      [1] https://lore.kernel.org/patchwork/patch/1343258/
      [2] https://github.com/stressapptest/stressapptest/blob/master/src/os.cc#L158
      
      Link: https://lkml.kernel.org/r/20201204024347.8295-1-miles.chen@mediatek.comSigned-off-by: NMiles Chen <miles.chen@mediatek.com>
      Reviewed-by: NVincenzo Frascino <vincenzo.frascino@arm.com>
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Marco Elver <elver@google.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>
      Cc: <stable@vger.kernel.org>	[5.4-]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      40d6366e
    • A
      revert "mm/filemap: add static for function __add_to_page_cache_locked" · 16c0cc0c
      Andrew Morton 提交于
      Revert commit 3351b16a ("mm/filemap: add static for function
      __add_to_page_cache_locked") due to incompatibility with
      ALLOW_ERROR_INJECTION which result in build errors.
      
      Link: https://lkml.kernel.org/r/CAADnVQJ6tmzBXvtroBuEH6QA0H+q7yaSKxrVvVxhqr3KBZdEXg@mail.gmail.comTested-by: NJustin Forbes <jmforbes@linuxtx.org>
      Tested-by: NGreg Thelen <gthelen@google.com>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Cc: Michal Kubecek <mkubecek@suse.cz>
      Cc: Alex Shi <alex.shi@linux.alibaba.com>
      Cc: Souptick Joarder <jrdr.linux@gmail.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Josef Bacik <josef@toxicpanda.com>
      Cc: Tony Luck <tony.luck@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      16c0cc0c
  2. 11 12月, 2020 16 次提交
    • L
      Merge tag 'ktest-v5.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest · 33dc9614
      Linus Torvalds 提交于
      Pull ktest fix from Steven Rostedt:
       "Fix issues with grub2bls in ktest.pl
      
        ktest.pl did not know about grub2bls that was introduced in Fedora 30,
        and now it does"
      
      * tag 'ktest-v5.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest:
        ktest.pl: Fix incorrect reboot for grub2bls
      33dc9614
    • L
      Merge tag 'powerpc-5.10-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 47003b99
      Linus Torvalds 提交于
      Pull powerpc fix from Michael Ellerman:
       "One commit to implement copy_from_kernel_nofault_allowed(), otherwise
        copy_from_kernel_nofault() can trigger warnings when accessing bad
        addresses in some configurations.
      
        Thanks to Christophe Leroy and Qian Cai"
      
      * tag 'powerpc-5.10-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/mm: Fix KUAP warning by providing copy_from_kernel_nofault_allowed()
      47003b99
    • L
      Merge tag 'fixes-v5.10a' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security · 197c61cb
      Linus Torvalds 提交于
      Pull namespaced fscaps fix from James Morris:
       "Fix namespaced fscaps when !CONFIG_SECURITY (Serge Hallyn)"
      
      * tag 'fixes-v5.10a' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
        [SECURITY] fix namespaced fscaps when !CONFIG_SECURITY
      197c61cb
    • L
      Merge tag 'nfs-for-5.10-3' of git://git.linux-nfs.org/projects/anna/linux-nfs · 6840a3dc
      Linus Torvalds 提交于
      Pull NFS client fixes from Anna Schumaker:
       "Here are a handful more bugfixes for 5.10.
      
        Unfortunately, we found some problems with the new READ_PLUS operation
        that aren't easy to fix. We've decided to disable this codepath
        through a Kconfig option for now, but a series of patches going into
        5.11 will clean up the code and fix the issues at the same time. This
        seemed like the best way to go about it.
      
        Summary:
      
         - Fix array overflow when flexfiles mirroring is enabled
      
         - Fix rpcrdma_inline_fixup() crash with new LISTXATTRS
      
         - Fix 5 second delay when doing inter-server copy
      
         - Disable READ_PLUS by default"
      
      * tag 'nfs-for-5.10-3' of git://git.linux-nfs.org/projects/anna/linux-nfs:
        NFS: Disable READ_PLUS by default
        NFSv4.2: Fix 5 seconds delay when doing inter server copy
        NFS: Fix rpcrdma_inline_fixup() crash with new LISTXATTRS operation
        pNFS/flexfiles: Fix array overflow when flexfiles mirroring is enabled
      6840a3dc
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 4d31058b
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) IPsec compat fixes, from Dmitry Safonov.
      
       2) Fix memory leak in xfrm_user_policy(). Fix from Yu Kuai.
      
       3) Fix polling in xsk sockets by using sk_poll_wait() instead of
          datagram_poll() which keys off of sk_wmem_alloc and such which xsk
          sockets do not update. From Xuan Zhuo.
      
       4) Missing init of rekey_data in cfgh80211, from Sara Sharon.
      
       5) Fix destroy of timer before init, from Davide Caratti.
      
       6) Missing CRYPTO_CRC32 selects in ethernet driver Kconfigs, from Arnd
          Bergmann.
      
       7) Missing error return in rtm_to_fib_config() switch case, from Zhang
          Changzhong.
      
       8) Fix some src/dest address handling in vrf and add a testcase. From
          Stephen Suryaputra.
      
       9) Fix multicast handling in Seville switches driven by mscc-ocelot
          driver. From Vladimir Oltean.
      
      10) Fix proto value passed to skb delivery demux in udp, from Xin Long.
      
      11) HW pkt counters not reported correctly in enetc driver, from Claudiu
          Manoil.
      
      12) Fix deadlock in bridge, from Joseph Huang.
      
      13) Missing of_node_pur() in dpaa2 driver, fromn Christophe JAILLET.
      
      14) Fix pid fetching in bpftool when there are a lot of results, from
          Andrii Nakryiko.
      
      15) Fix long timeouts in nft_dynset, from Pablo Neira Ayuso.
      
      16) Various stymmac fixes, from Fugang Duan.
      
      17) Fix null deref in tipc, from Cengiz Can.
      
      18) When mss is biog, coose more resonable rcvq_space in tcp, fromn Eric
          Dumazet.
      
      19) Revert a geneve change that likely isnt necessary, from Jakub
          Kicinski.
      
      20) Avoid premature rx buffer reuse in various Intel driversm from Björn
          Töpel.
      
      21) retain EcT bits during TIS reflection in tcp, from Wei Wang.
      
      22) Fix Tso deferral wrt. cwnd limiting in tcp, from Neal Cardwell.
      
      23) MPLS_OPT_LSE_LABEL attribute is 342 ot 8 bits, from Guillaume Nault
      
      24) Fix propagation of 32-bit signed bounds in bpf verifier and add test
          cases, from Alexei Starovoitov.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (81 commits)
        selftests: fix poll error in udpgro.sh
        selftests/bpf: Fix "dubious pointer arithmetic" test
        selftests/bpf: Fix array access with signed variable test
        selftests/bpf: Add test for signed 32-bit bound check bug
        bpf: Fix propagation of 32-bit signed bounds from 64-bit bounds.
        MAINTAINERS: Add entry for Marvell Prestera Ethernet Switch driver
        net: sched: Fix dump of MPLS_OPT_LSE_LABEL attribute in cls_flower
        net/mlx4_en: Handle TX error CQE
        net/mlx4_en: Avoid scheduling restart task if it is already running
        tcp: fix cwnd-limited bug for TSO deferral where we send nothing
        net: flow_offload: Fix memory leak for indirect flow block
        tcp: Retain ECT bits for tos reflection
        ethtool: fix stack overflow in ethnl_parse_bitset()
        e1000e: fix S0ix flow to allow S0i3.2 subset entry
        ice: avoid premature Rx buffer reuse
        ixgbe: avoid premature Rx buffer reuse
        i40e: avoid premature Rx buffer reuse
        igb: avoid transmit queue timeout in xdp path
        igb: use xdp_do_flush
        igb: skb add metasize for xdp
        ...
      4d31058b
    • D
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf · d9838b1d
      David S. Miller 提交于
      Alexei Starovoitov says:
      
      ====================
      pull-request: bpf 2020-12-10
      
      The following pull-request contains BPF updates for your *net* tree.
      
      We've added 21 non-merge commits during the last 12 day(s) which contain
      a total of 21 files changed, 163 insertions(+), 88 deletions(-).
      
      The main changes are:
      
      1) Fix propagation of 32-bit signed bounds from 64-bit bounds, from Alexei.
      
      2) Fix ring_buffer__poll() return value, from Andrii.
      
      3) Fix race in lwt_bpf, from Cong.
      
      4) Fix test_offload, from Toke.
      
      5) Various xsk fixes.
      
      Please consider pulling these changes from:
      
        git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
      
      Thanks a lot!
      
      Also thanks to reporters, reviewers and testers of commits in this pull-request:
      
      Cong Wang, Hulk Robot, Jakub Kicinski, Jean-Philippe Brucker, John
      Fastabend, Magnus Karlsson, Maxim Mikityanskiy, Yonghong Song
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d9838b1d
    • A
      NFS: Disable READ_PLUS by default · 21e31401
      Anna Schumaker 提交于
      We've been seeing failures with xfstests generic/091 and generic/263
      when using READ_PLUS. I've made some progress on these issues, and the
      tests fail later on but still don't pass. Let's disable READ_PLUS by
      default until we can work out what is going on.
      Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
      21e31401
    • D
      NFSv4.2: Fix 5 seconds delay when doing inter server copy · fe8eb820
      Dai Ngo 提交于
      Since commit b4868b44 ("NFSv4: Wait for stateid updates after
      CLOSE/OPEN_DOWNGRADE"), every inter server copy operation suffers 5
      seconds delay regardless of the size of the copy. The delay is from
      nfs_set_open_stateid_locked when the check by nfs_stateid_is_sequential
      fails because the seqid in both nfs4_state and nfs4_stateid are 0.
      
      Fix __nfs42_ssc_open to delay setting of NFS_OPEN_STATE in nfs4_state,
      until after the call to update_open_stateid, to indicate this is the 1st
      open. This fix is part of a 2 patches, the other patch is the fix in the
      source server to return the stateid for COPY_NOTIFY request with seqid 1
      instead of 0.
      
      Fixes: ce0887ac ("NFSD add nfs4 inter ssc to nfsd4_copy")
      Signed-off-by: NDai Ngo <dai.ngo@oracle.com>
      Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
      fe8eb820
    • C
      NFS: Fix rpcrdma_inline_fixup() crash with new LISTXATTRS operation · 1c87b851
      Chuck Lever 提交于
      By switching to an XFS-backed export, I am able to reproduce the
      ibcomp worker crash on my client with xfstests generic/013.
      
      For the failing LISTXATTRS operation, xdr_inline_pages() is called
      with page_len=12 and buflen=128.
      
      - When ->send_request() is called, rpcrdma_marshal_req() does not
        set up a Reply chunk because buflen is smaller than the inline
        threshold. Thus rpcrdma_convert_iovs() does not get invoked at
        all and the transport's XDRBUF_SPARSE_PAGES logic is not invoked
        on the receive buffer.
      
      - During reply processing, rpcrdma_inline_fixup() tries to copy
        received data into rq_rcv_buf->pages because page_len is positive.
        But there are no receive pages because rpcrdma_marshal_req() never
        allocated them.
      
      The result is that the ibcomp worker faults and dies. Sometimes that
      causes a visible crash, and sometimes it results in a transport hang
      without other symptoms.
      
      RPC/RDMA's XDRBUF_SPARSE_PAGES support is not entirely correct, and
      should eventually be fixed or replaced. However, my preference is
      that upper-layer operations should explicitly allocate their receive
      buffers (using GFP_KERNEL) when possible, rather than relying on
      XDRBUF_SPARSE_PAGES.
      Reported-by: NOlga kornievskaia <kolga@netapp.com>
      Suggested-by: NOlga kornievskaia <kolga@netapp.com>
      Fixes: c10a7514 ("NFSv4.2: add the extended attribute proc functions.")
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Reviewed-by: NOlga kornievskaia <kolga@netapp.com>
      Reviewed-by: NFrank van der Linden <fllinden@amazon.com>
      Tested-by: NOlga kornievskaia <kolga@netapp.com>
      Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
      1c87b851
    • P
      selftests: fix poll error in udpgro.sh · 38bf8cd8
      Paolo Abeni 提交于
      The test program udpgso_bench_rx always invokes the poll()
      syscall with a timeout of 10ms. If a larger timeout is specified
      via the command line, udpgso_bench_rx is supposed to do multiple
      poll() calls till the timeout is expired or an event is received.
      
      Currently the poll() loop errors out after the first invocation with
      no events, and may causes self-tests failure alike:
      
      failed
       GRO with custom segment size            ./udpgso_bench_rx: poll: 0x0 expected 0x1
      
      This change addresses the issue allowing the poll() loop to consume
      all the configured timeout.
      
      Fixes: ada641ff ("selftests: fixes for UDP GRO")
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      38bf8cd8
    • J
      selftests/bpf: Fix "dubious pointer arithmetic" test · 3615bdf6
      Jean-Philippe Brucker 提交于
      The verifier trace changed following a bugfix. After checking the 64-bit
      sign, only the upper bit mask is known, not bit 31. Update the test
      accordingly.
      Signed-off-by: NJean-Philippe Brucker <jean-philippe@linaro.org>
      Acked-by: NJohn Fastabend <john.fastabend@gmail.com>
      Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
      3615bdf6
    • J
      selftests/bpf: Fix array access with signed variable test · 77ce220c
      Jean-Philippe Brucker 提交于
      The test fails because of a recent fix to the verifier, even though this
      program is valid. In details what happens is:
      
          7: (61) r1 = *(u32 *)(r0 +0)
      
      Load a 32-bit value, with signed bounds [S32_MIN, S32_MAX]. The bounds
      of the 64-bit value are [0, U32_MAX]...
      
          8: (65) if r1 s> 0xffffffff goto pc+1
      
      ... therefore this is always true (the operand is sign-extended).
      
          10: (b4) w2 = 11
          11: (6d) if r2 s> r1 goto pc+1
      
      When true, the 64-bit bounds become [0, 10]. The 32-bit bounds are still
      [S32_MIN, 10].
      
          13: (64) w1 <<= 2
      
      Because this is a 32-bit operation, the verifier propagates the new
      32-bit bounds to the 64-bit ones, and the knowledge gained from insn 11
      is lost.
      
          14: (0f) r0 += r1
          15: (7a) *(u64 *)(r0 +0) = 4
      
      Then the verifier considers r0 unbounded here, rejecting the test. To
      make the test work, change insn 8 to check the sign of the 32-bit value.
      Signed-off-by: NJean-Philippe Brucker <jean-philippe@linaro.org>
      Acked-by: NJohn Fastabend <john.fastabend@gmail.com>
      Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
      77ce220c
    • J
      selftests/bpf: Add test for signed 32-bit bound check bug · 511a76bc
      Jean-Philippe Brucker 提交于
      After a 32-bit load followed by a branch, the verifier would reduce the
      maximum bound of the register to 0x7fffffff, allowing a user to bypass
      bound checks. Ensure such a program is rejected.
      
      In the second test, the 64-bit compare should not sufficient to
      determine whether the signed 32-bit lower bound is 0, so the verifier
      should reject the second branch.
      Signed-off-by: NJean-Philippe Brucker <jean-philippe@linaro.org>
      Acked-by: NJohn Fastabend <john.fastabend@gmail.com>
      Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
      511a76bc
    • A
      bpf: Fix propagation of 32-bit signed bounds from 64-bit bounds. · b0270958
      Alexei Starovoitov 提交于
      The 64-bit signed bounds should not affect 32-bit signed bounds unless the
      verifier knows that upper 32-bits are either all 1s or all 0s. For example the
      register with smin_value==1 doesn't mean that s32_min_value is also equal to 1,
      since smax_value could be larger than 32-bit subregister can hold.
      The verifier refines the smax/s32_max return value from certain helpers in
      do_refine_retval_range(). Teach the verifier to recognize that smin/s32_min
      value is also bounded. When both smin and smax bounds fit into 32-bit
      subregister the verifier can propagate those bounds.
      
      Fixes: 3f50f132 ("bpf: Verifier, do explicit ALU32 bounds tracking")
      Reported-by: NJean-Philippe Brucker <jean-philippe@linaro.org>
      Acked-by: NJohn Fastabend <john.fastabend@gmail.com>
      Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
      b0270958
    • L
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · 9fca90cf
      Linus Torvalds 提交于
      Pull rdma fixes from Jason Gunthorpe:
       "Two user triggerable crashers and a some EFA related regressions:
      
         - Syzkaller found a bug in CM
      
         - Restore access to the GID table and fix modify_qp for EFA
      
         - Crasher in qedr"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
        RDMA/cm: Fix an attempt to use non-valid pointer when cleaning timewait
        RDMA/core: Fix empty gid table for non IB/RoCE devices
        RDMA/efa: Use the correct current and new states in modify QP
        RDMA/qedr: iWARP invalid(zero) doorbell address fix
      9fca90cf
    • L
      Merge tag 'media/v5.10-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 40201575
      Linus Torvalds 提交于
      Pull media fixes from Mauro Carvalho Chehab:
       "A couple of fixes:
      
         - videobuf2: fix a DMABUF bug, preventing it to properly handle cache
           sync/flush
      
         - vidtv: an usage after free and a few sparse/smatch warning fixes
      
         - pulse8-cec: a duplicate free and a bug related to new firmware
           usage
      
         - mtk-cir: fix a regression on a clock setting"
      
      * tag 'media/v5.10-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        media: vidtv: fix some warnings
        media: vidtv: fix kernel-doc markups
        media: [next] media: vidtv: fix a read from an object after it has been freed
        media: vb2: set cache sync hints when init buffers
        media: pulse8-cec: add support for FW v10 and up
        media: pulse8-cec: fix duplicate free at disconnect or probe error
        media: mtk-cir: fix calculation of chk period
      40201575
  3. 10 12月, 2020 17 次提交