1. 26 10月, 2021 1 次提交
    • T
      signal: Add an optional check for altstack size · 1bdda24c
      Thomas Gleixner 提交于
      New x86 FPU features will be very large, requiring ~10k of stack in
      signal handlers.  These new features require a new approach called
      "dynamic features".
      
      The kernel currently tries to ensure that altstacks are reasonably
      sized. Right now, on x86, sys_sigaltstack() requires a size of >=2k.
      However, that 2k is a constant. Simply raising that 2k requirement
      to >10k for the new features would break existing apps which have a
      compiled-in size of 2k.
      
      Instead of universally enforcing a larger stack, prohibit a process from
      using dynamic features without properly-sized altstacks. This must be
      enforced in two places:
      
       * A dynamic feature can not be enabled without an large-enough altstack
         for each process thread.
       * Once a dynamic feature is enabled, any request to install a too-small
         altstack will be rejected
      
      The dynamic feature enabling code must examine each thread in a
      process to ensure that the altstacks are large enough. Add a new lock
      (sigaltstack_lock()) to ensure that threads can not race and change
      their altstack after being examined.
      
      Add the infrastructure in form of a config option and provide empty
      stubs for architectures which do not need dynamic altstack size checks.
      
      This implementation will be fleshed out for x86 in a future patch called
      
        x86/arch_prctl: Add controls for dynamic XSTATE components
      
        [dhansen: commit message. ]
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NChang S. Bae <chang.seok.bae@intel.com>
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Link: https://lkml.kernel.org/r/20211021225527.10184-2-chang.seok.bae@intel.com
      1bdda24c
  2. 07 10月, 2021 1 次提交
    • A
      qcom_scm: hide Kconfig symbol · 424953cf
      Arnd Bergmann 提交于
      Now that SCM can be a loadable module, we have to add another
      dependency to avoid link failures when ipa or adreno-gpu are
      built-in:
      
      aarch64-linux-ld: drivers/net/ipa/ipa_main.o: in function `ipa_probe':
      ipa_main.c:(.text+0xfc4): undefined reference to `qcom_scm_is_available'
      
      ld.lld: error: undefined symbol: qcom_scm_is_available
      >>> referenced by adreno_gpu.c
      >>>               gpu/drm/msm/adreno/adreno_gpu.o:(adreno_zap_shader_load) in archive drivers/built-in.a
      
      This can happen when CONFIG_ARCH_QCOM is disabled and we don't select
      QCOM_MDT_LOADER, but some other module selects QCOM_SCM. Ideally we'd
      use a similar dependency here to what we have for QCOM_RPROC_COMMON,
      but that causes dependency loops from other things selecting QCOM_SCM.
      
      This appears to be an endless problem, so try something different this
      time:
      
       - CONFIG_QCOM_SCM becomes a hidden symbol that nothing 'depends on'
         but that is simply selected by all of its users
      
       - All the stubs in include/linux/qcom_scm.h can go away
      
       - arm-smccc.h needs to provide a stub for __arm_smccc_smc() to
         allow compile-testing QCOM_SCM on all architectures.
      
       - To avoid a circular dependency chain involving RESET_CONTROLLER
         and PINCTRL_SUNXI, drop the 'select RESET_CONTROLLER' statement.
         According to my testing this still builds fine, and the QCOM
         platform selects this symbol already.
      Acked-by: NKalle Valo <kvalo@codeaurora.org>
      Acked-by: NAlex Elder <elder@linaro.org>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      424953cf
  3. 05 10月, 2021 2 次提交
  4. 01 10月, 2021 2 次提交
  5. 25 9月, 2021 2 次提交
  6. 24 9月, 2021 1 次提交
  7. 23 9月, 2021 1 次提交
  8. 22 9月, 2021 3 次提交
  9. 21 9月, 2021 2 次提交
  10. 20 9月, 2021 1 次提交
  11. 19 9月, 2021 1 次提交
  12. 17 9月, 2021 1 次提交
    • V
      net: update NXP copyright text · 3c9cfb52
      Vladimir Oltean 提交于
      NXP Legal insists that the following are not fine:
      
      - Saying "NXP Semiconductors" instead of "NXP", since the company's
        registered name is "NXP"
      
      - Putting a "(c)" sign in the copyright string
      
      - Putting a comma in the copyright string
      
      The only accepted copyright string format is "Copyright <year-range> NXP".
      
      This patch changes the copyright headers in the networking files that
      were sent by me, or derived from code sent by me.
      Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3c9cfb52
  13. 16 9月, 2021 1 次提交
  14. 15 9月, 2021 3 次提交
  15. 14 9月, 2021 9 次提交
  16. 11 9月, 2021 3 次提交
    • T
      Documentation: core-api/cpuhotplug: Rewrite the API section · c9871c80
      Thomas Gleixner 提交于
      Dave stumbled over the incomplete and confusing documentation of the CPU
      hotplug API.
      
      Rewrite it, add the missing function documentations and correct the
      existing ones.
      Reported-by: NDave Chinner <david@fromorbit.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Link: https://lore.kernel.org/r/20210909123212.489059409@linutronix.de
      c9871c80
    • S
      cpu/hotplug: Remove deprecated CPU-hotplug functions. · 8c854303
      Sebastian Andrzej Siewior 提交于
      No users in tree use the deprecated CPU-hotplug functions anymore.
      
      Remove them.
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Link: https://lore.kernel.org/r/20210803141621.780504-39-bigeasy@linutronix.de
      8c854303
    • Y
      bpf, mm: Fix lockdep warning triggered by stack_map_get_build_id_offset() · 2f1aaf3e
      Yonghong Song 提交于
      Currently the bpf selftest "get_stack_raw_tp" triggered the warning:
      
        [ 1411.304463] WARNING: CPU: 3 PID: 140 at include/linux/mmap_lock.h:164 find_vma+0x47/0xa0
        [ 1411.304469] Modules linked in: bpf_testmod(O) [last unloaded: bpf_testmod]
        [ 1411.304476] CPU: 3 PID: 140 Comm: systemd-journal Tainted: G        W  O      5.14.0+ #53
        [ 1411.304479] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
        [ 1411.304481] RIP: 0010:find_vma+0x47/0xa0
        [ 1411.304484] Code: de 48 89 ef e8 ba f5 fe ff 48 85 c0 74 2e 48 83 c4 08 5b 5d c3 48 8d bf 28 01 00 00 be ff ff ff ff e8 2d 9f d8 00 85 c0 75 d4 <0f> 0b 48 89 de 48 8
        [ 1411.304487] RSP: 0018:ffffabd440403db8 EFLAGS: 00010246
        [ 1411.304490] RAX: 0000000000000000 RBX: 00007f00ad80a0e0 RCX: 0000000000000000
        [ 1411.304492] RDX: 0000000000000001 RSI: ffffffff9776b144 RDI: ffffffff977e1b0e
        [ 1411.304494] RBP: ffff9cf5c2f50000 R08: ffff9cf5c3eb25d8 R09: 00000000fffffffe
        [ 1411.304496] R10: 0000000000000001 R11: 00000000ef974e19 R12: ffff9cf5c39ae0e0
        [ 1411.304498] R13: 0000000000000000 R14: 0000000000000000 R15: ffff9cf5c39ae0e0
        [ 1411.304501] FS:  00007f00ae754780(0000) GS:ffff9cf5fba00000(0000) knlGS:0000000000000000
        [ 1411.304504] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        [ 1411.304506] CR2: 000000003e34343c CR3: 0000000103a98005 CR4: 0000000000370ee0
        [ 1411.304508] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        [ 1411.304510] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        [ 1411.304512] Call Trace:
        [ 1411.304517]  stack_map_get_build_id_offset+0x17c/0x260
        [ 1411.304528]  __bpf_get_stack+0x18f/0x230
        [ 1411.304541]  bpf_get_stack_raw_tp+0x5a/0x70
        [ 1411.305752] RAX: 0000000000000000 RBX: 5541f689495641d7 RCX: 0000000000000000
        [ 1411.305756] RDX: 0000000000000001 RSI: ffffffff9776b144 RDI: ffffffff977e1b0e
        [ 1411.305758] RBP: ffff9cf5c02b2f40 R08: ffff9cf5ca7606c0 R09: ffffcbd43ee02c04
        [ 1411.306978]  bpf_prog_32007c34f7726d29_bpf_prog1+0xaf/0xd9c
        [ 1411.307861] R10: 0000000000000001 R11: 0000000000000044 R12: ffff9cf5c2ef60e0
        [ 1411.307865] R13: 0000000000000005 R14: 0000000000000000 R15: ffff9cf5c2ef6108
        [ 1411.309074]  bpf_trace_run2+0x8f/0x1a0
        [ 1411.309891] FS:  00007ff485141700(0000) GS:ffff9cf5fae00000(0000) knlGS:0000000000000000
        [ 1411.309896] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        [ 1411.311221]  syscall_trace_enter.isra.20+0x161/0x1f0
        [ 1411.311600] CR2: 00007ff48514d90e CR3: 0000000107114001 CR4: 0000000000370ef0
        [ 1411.312291]  do_syscall_64+0x15/0x80
        [ 1411.312941] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        [ 1411.313803]  entry_SYSCALL_64_after_hwframe+0x44/0xae
        [ 1411.314223] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        [ 1411.315082] RIP: 0033:0x7f00ad80a0e0
        [ 1411.315626] Call Trace:
        [ 1411.315632]  stack_map_get_build_id_offset+0x17c/0x260
      
      To reproduce, first build `test_progs` binary:
      
        make -C tools/testing/selftests/bpf -j60
      
      and then run the binary at tools/testing/selftests/bpf directory:
      
        ./test_progs -t get_stack_raw_tp
      
      The warning is due to commit 5b78ed24 ("mm/pagemap: add mmap_assert_locked()
      annotations to find_vma*()") which added mmap_assert_locked() in find_vma()
      function. The mmap_assert_locked() function asserts that mm->mmap_lock needs
      to be held. But this is not the case for bpf_get_stack() or bpf_get_stackid()
      helper (kernel/bpf/stackmap.c), which uses mmap_read_trylock_non_owner()
      instead. Since mm->mmap_lock is not held in bpf_get_stack[id]() use case,
      the above warning is emitted during test run.
      
      This patch fixed the issue by (1). using mmap_read_trylock() instead of
      mmap_read_trylock_non_owner() to satisfy lockdep checking in find_vma(), and
      (2). droping lockdep for mmap_lock right before the irq_work_queue(). The
      function mmap_read_trylock_non_owner() is also removed since after this
      patch nobody calls it any more.
      
      Fixes: 5b78ed24 ("mm/pagemap: add mmap_assert_locked() annotations to find_vma*()")
      Suggested-by: NJason Gunthorpe <jgg@ziepe.ca>
      Signed-off-by: NYonghong Song <yhs@fb.com>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Reviewed-by: NLiam R. Howlett <Liam.Howlett@oracle.com>
      Cc: Luigi Rizzo <lrizzo@google.com>
      Cc: Jason Gunthorpe <jgg@ziepe.ca>
      Cc: linux-mm@kvack.org
      Link: https://lore.kernel.org/bpf/20210909155000.1610299-1-yhs@fb.com
      2f1aaf3e
  17. 10 9月, 2021 1 次提交
  18. 09 9月, 2021 5 次提交