30 Oct, 2020

1 commit


05 Sep, 2020

1 commit

  • The '#ifdef MODULE' check in the original commit does not work as intended.
    The code under the check is not built at all if CONFIG_DEBUG_FS=y. Fix this
    by using a correct check.

    Fixes: 275678e7a9be ("debugfs: Check module state before warning in {full/open}_proxy_open()")
    Signed-off-by: Vladis Dronov
    Cc: stable
    Link: https://lore.kernel.org/r/20200811150129.53343-1-vdronov@redhat.com
    Signed-off-by: Greg Kroah-Hartman

    Vladis Dronov
     

06 Aug, 2020

1 commit

  • Pull networking updates from David Miller:

    1) Support 6Ghz band in ath11k driver, from Rajkumar Manoharan.

    2) Support UDP segmentation in code TSO code, from Eric Dumazet.

    3) Allow flashing different flash images in cxgb4 driver, from Vishal
    Kulkarni.

    4) Add drop frames counter and flow status to tc flower offloading,
    from Po Liu.

    5) Support n-tuple filters in cxgb4, from Vishal Kulkarni.

    6) Various new indirect call avoidance, from Eric Dumazet and Brian
    Vazquez.

    7) Fix BPF verifier failures on 32-bit pointer arithmetic, from
    Yonghong Song.

    8) Support querying and setting hardware address of a port function via
    devlink, use this in mlx5, from Parav Pandit.

    9) Support hw ipsec offload on bonding slaves, from Jarod Wilson.

    10) Switch qca8k driver over to phylink, from Jonathan McDowell.

    11) In bpftool, show list of processes holding BPF FD references to
    maps, programs, links, and btf objects. From Andrii Nakryiko.

    12) Several conversions over to generic power management, from Vaibhav
    Gupta.

    13) Add support for SO_KEEPALIVE et al. to bpf_setsockopt(), from Dmitry
    Yakunin.

    14) Various https url conversions, from Alexander A. Klimov.

    15) Timestamping and PHC support for mscc PHY driver, from Antoine
    Tenart.

    16) Support bpf iterating over tcp and udp sockets, from Yonghong Song.

    17) Support 5GBASE-T i40e NICs, from Aleksandr Loktionov.

    18) Add kTLS RX HW offload support to mlx5e, from Tariq Toukan.

    19) Fix the ->ndo_start_xmit() return type to be netdev_tx_t in several
    drivers. From Luc Van Oostenryck.

    20) XDP support for xen-netfront, from Denis Kirjanov.

    21) Support receive buffer autotuning in MPTCP, from Florian Westphal.

    22) Support EF100 chip in sfc driver, from Edward Cree.

    23) Add XDP support to mvpp2 driver, from Matteo Croce.

    24) Support MPTCP in sock_diag, from Paolo Abeni.

    25) Commonize UDP tunnel offloading code by creating udp_tunnel_nic
    infrastructure, from Jakub Kicinski.

    26) Several pci_ --> dma_ API conversions, from Christophe JAILLET.

    27) Add FLOW_ACTION_POLICE support to mlxsw, from Ido Schimmel.

    28) Add SK_LOOKUP bpf program type, from Jakub Sitnicki.

    29) Refactor a lot of networking socket option handling code in order to
    avoid set_fs() calls, from Christoph Hellwig.

    30) Add rfc4884 support to icmp code, from Willem de Bruijn.

    31) Support TBF offload in dpaa2-eth driver, from Ioana Ciornei.

    32) Support XDP_REDIRECT in qede driver, from Alexander Lobakin.

    33) Support PCI relaxed ordering in mlx5 driver, from Aya Levin.

    34) Support TCP syncookies in MPTCP, from Flowian Westphal.

    35) Fix several tricky cases of PMTU handling wrt. briding, from Stefano
    Brivio.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2056 commits)
    net: thunderx: initialize VF's mailbox mutex before first usage
    usb: hso: remove bogus check for EINPROGRESS
    usb: hso: no complaint about kmalloc failure
    hso: fix bailout in error case of probe
    ip_tunnel_core: Fix build for archs without _HAVE_ARCH_IPV6_CSUM
    selftests/net: relax cpu affinity requirement in msg_zerocopy test
    mptcp: be careful on subflow creation
    selftests: rtnetlink: make kci_test_encap() return sub-test result
    selftests: rtnetlink: correct the final return value for the test
    net: dsa: sja1105: use detected device id instead of DT one on mismatch
    tipc: set ub->ifindex for local ipv6 address
    ipv6: add ipv6_dev_find()
    net: openvswitch: silence suspicious RCU usage warning
    Revert "vxlan: fix tos value before xmit"
    ptp: only allow phase values lower than 1 period
    farsync: switch from 'pci_' to 'dma_' API
    wan: wanxl: switch from 'pci_' to 'dma_' API
    hv_netvsc: do not use VF device if link is down
    dpaa2-eth: Fix passing zero to 'PTR_ERR' warning
    net: macb: Properly handle phylink on at91sam9x
    ...

    Linus Torvalds
     

23 Jul, 2020

1 commit

  • Since debugfs include sensitive information it need to be treated
    carefully. But it also has many very useful debug functions for userspace.
    With this option we can have same configuration for system with
    need of debugfs and a way to turn it off. This gives a extra protection
    for exposure on systems where user-space services with system
    access are attacked.

    It is controlled by a configurable default value that can be override
    with a kernel command line parameter. (debugfs=)

    It can be on or off, but also internally on but not seen from user-space.
    This no-mount mode do not register a debugfs as filesystem, but client can
    register their parts in the internal structures. This data can be readed
    with a debugger or saved with a crashkernel. When it is off clients
    get EPERM error when accessing the functions for registering their
    components.

    Signed-off-by: Peter Enderborg
    Link: https://lore.kernel.org/r/20200716071511.26864-3-peter.enderborg@sony.com
    Signed-off-by: Greg Kroah-Hartman

    Peter Enderborg
     

11 Jul, 2020

1 commit

  • debugfs_create_u32_array() allocates a small structure to wrap
    the data and size information about the array. If users ever
    try to remove the file this leads to a leak since nothing ever
    frees this wrapper.

    That said there are no upstream users of debugfs_create_u32_array()
    that'd remove a u32 array file (we only have one u32 array user in
    CMA), so there is no real bug here.

    Make callers pass a wrapper they allocated. This way the lifetime
    management of the wrapper is on the caller, and we can avoid the
    potential leak in debugfs.

    CC: Chucheng Luo
    Signed-off-by: Jakub Kicinski
    Reviewed-by: Greg Kroah-Hartman
    Signed-off-by: David S. Miller

    Jakub Kicinski
     

10 Jul, 2020

1 commit


27 Apr, 2020

1 commit


23 Apr, 2020

1 commit

  • This patch corrects the SPDX License Identifier style in
    header file related to debugfs File System support.
    For C header files Documentation/process/license-rules.rst
    mandates C-like comments (opposed to C source files where
    C++ style should be used).

    Changes made by using a script provided by Joe Perches here:
    https://lkml.org/lkml/2019/2/7/46.

    Suggested-by: Joe Perches
    Signed-off-by: Nishad Kamdar
    Link: https://lore.kernel.org/r/20200419144852.GA9206@nishad
    Signed-off-by: Greg Kroah-Hartman

    Nishad Kamdar
     

17 Apr, 2020

1 commit


02 Apr, 2020

1 commit

  • Pull crypto updates from Herbert Xu:
    "API:
    - Fix out-of-sync IVs in self-test for IPsec AEAD algorithms

    Algorithms:
    - Use formally verified implementation of x86/curve25519

    Drivers:
    - Enhance hwrng support in caam

    - Use crypto_engine for skcipher/aead/rsa/hash in caam

    - Add Xilinx AES driver

    - Add uacce driver

    - Register zip engine to uacce in hisilicon

    - Add support for OCTEON TX CPT engine in marvell"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (162 commits)
    crypto: af_alg - bool type cosmetics
    crypto: arm[64]/poly1305 - add artifact to .gitignore files
    crypto: caam - limit single JD RNG output to maximum of 16 bytes
    crypto: caam - enable prediction resistance in HRWNG
    bus: fsl-mc: add api to retrieve mc version
    crypto: caam - invalidate entropy register during RNG initialization
    crypto: caam - check if RNG job failed
    crypto: caam - simplify RNG implementation
    crypto: caam - drop global context pointer and init_done
    crypto: caam - use struct hwrng's .init for initialization
    crypto: caam - allocate RNG instantiation descriptor with GFP_DMA
    crypto: ccree - remove duplicated include from cc_aead.c
    crypto: chelsio - remove set but not used variable 'adap'
    crypto: marvell - enable OcteonTX cpt options for build
    crypto: marvell - add the Virtual Function driver for CPT
    crypto: marvell - add support for OCTEON TX CPT engine
    crypto: marvell - create common Kconfig and Makefile for Marvell
    crypto: arm/neon - memzero_explicit aes-cbc key
    crypto: bcm - Use scnprintf() for avoiding potential buffer overflow
    crypto: atmel-i2c - Fix wakeup fail
    ...

    Linus Torvalds
     

18 Mar, 2020

2 commits

  • No one checks the return value of debugfs_create_file_size, as it's not
    needed, so make the return value void, so that no one tries to do so in
    the future.

    Signed-off-by: Greg Kroah-Hartman
    Link: https://lore.kernel.org/r/20200309163640.237984-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • When the module is being removed, the module state is set to
    MODULE_STATE_GOING. At this point, try_module_get() fails.
    And when {full/open}_proxy_open() is being called,
    it calls try_module_get() to try to hold module reference count.
    If it fails, it warns about the possibility of debugfs file leak.

    If {full/open}_proxy_open() is called while the module is being removed,
    it fails to hold the module.
    So, It warns about debugfs file leak. But it is not the debugfs file
    leak case. So, this patch just adds module state checking routine
    in the {full/open}_proxy_open().

    Test commands:
    #SHELL1
    while :
    do
    modprobe netdevsim
    echo 1 > /sys/bus/netdevsim/new_device
    modprobe -rv netdevsim
    done

    #SHELL2
    while :
    do
    cat /sys/kernel/debug/netdevsim/netdevsim1/ports/0/ipsec
    done

    Splat looks like:
    [ 298.766738][T14664] debugfs file owner did not clean up at exit: ipsec
    [ 298.766766][T14664] WARNING: CPU: 2 PID: 14664 at fs/debugfs/file.c:312 full_proxy_open+0x10f/0x650
    [ 298.768595][T14664] Modules linked in: netdevsim(-) openvswitch nsh nf_conncount nf_nat nf_conntrack nf_defrag_ipv6 n][ 298.771343][T14664] CPU: 2 PID: 14664 Comm: cat Tainted: G W 5.5.0+ #1
    [ 298.772373][T14664] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [ 298.773545][T14664] RIP: 0010:full_proxy_open+0x10f/0x650
    [ 298.774247][T14664] Code: 48 c1 ea 03 80 3c 02 00 0f 85 c1 04 00 00 49 8b 3c 24 e8 e4 b5 78 ff 84 c0 75 2d 4c 89 ee 48
    [ 298.776782][T14664] RSP: 0018:ffff88805b7df9b8 EFLAGS: 00010282[ 298.777583][T14664] RAX: dffffc0000000008 RBX: ffff8880511725c0 RCX: 0000000000000000
    [ 298.778610][T14664] RDX: 0000000000000000 RSI: 0000000000000006 RDI: ffff8880540c5c14
    [ 298.779637][T14664] RBP: 0000000000000000 R08: fffffbfff15235ad R09: 0000000000000000
    [ 298.780664][T14664] R10: 0000000000000001 R11: 0000000000000000 R12: ffffffffc06b5000
    [ 298.781702][T14664] R13: ffff88804c234a88 R14: ffff88804c22dd00 R15: ffffffff8a1b5660
    [ 298.782722][T14664] FS: 00007fafa13a8540(0000) GS:ffff88806c800000(0000) knlGS:0000000000000000
    [ 298.783845][T14664] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 298.784672][T14664] CR2: 00007fafa0e9cd10 CR3: 000000004b286005 CR4: 00000000000606e0
    [ 298.785739][T14664] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 298.786769][T14664] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 298.787785][T14664] Call Trace:
    [ 298.788237][T14664] do_dentry_open+0x63c/0xf50
    [ 298.788872][T14664] ? open_proxy_open+0x270/0x270
    [ 298.789524][T14664] ? __x64_sys_fchdir+0x180/0x180
    [ 298.790169][T14664] ? inode_permission+0x65/0x390
    [ 298.790832][T14664] path_openat+0xc45/0x2680
    [ 298.791425][T14664] ? save_stack+0x69/0x80
    [ 298.791988][T14664] ? save_stack+0x19/0x80
    [ 298.792544][T14664] ? path_mountpoint+0x2e0/0x2e0
    [ 298.793233][T14664] ? check_chain_key+0x236/0x5d0
    [ 298.793910][T14664] ? sched_clock_cpu+0x18/0x170
    [ 298.794527][T14664] ? find_held_lock+0x39/0x1d0
    [ 298.795153][T14664] do_filp_open+0x16a/0x260
    [ ... ]

    Fixes: 9fd4dcece43a ("debugfs: prevent access to possibly dead file_operations at file open")
    Reported-by: kbuild test robot
    Signed-off-by: Taehee Yoo
    Link: https://lore.kernel.org/r/20200218043150.29447-1-ap420073@gmail.com
    Signed-off-by: Greg Kroah-Hartman

    Taehee Yoo
     

22 Feb, 2020

1 commit

  • Hardware registers of devices under control of power management cannot
    be accessed at all times. If such a device is suspended, register
    accesses may lead to undefined behavior, like reading bogus values, or
    causing exceptions or system lock-ups.

    Extend struct debugfs_regset32 with an optional field to let device
    drivers specify the device the registers in the set belong to. This
    allows debugfs_show_regset32() to make sure the device is resumed while
    its registers are being read.

    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Niklas Söderlund
    Reviewed-by: Greg Kroah-Hartman
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Herbert Xu

    Geert Uytterhoeven
     

11 Feb, 2020

1 commit


05 Feb, 2020

1 commit

  • Pull vfs recursive removal updates from Al Viro:
    "We have quite a few places where synthetic filesystems do an
    equivalent of 'rm -rf', with varying amounts of code duplication,
    wrong locking, etc. That really ought to be a library helper.

    Only debugfs (and very similar tracefs) are converted here - I have
    more conversions, but they'd never been in -next, so they'll have to
    wait"

    * 'work.recursive_removal' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    simple_recursive_removal(): kernel-side rm -rf for ramfs-style filesystems

    Linus Torvalds
     

14 Jan, 2020

1 commit

  • When lockdown is enabled, debugfs_is_locked_down returns 1. It will then
    trigger the following:

    WARNING: CPU: 48 PID: 3747
    CPU: 48 PID: 3743 Comm: bash Not tainted 5.4.0-1946.x86_64 #1
    Hardware name: Oracle Corporation ORACLE SERVER X7-2/ASM, MB, X7-2, BIOS 41060400 05/20/2019
    RIP: 0010:do_dentry_open+0x343/0x3a0
    Code: 00 40 08 00 45 31 ff 48 c7 43 28 40 5b e7 89 e9 02 ff ff ff 48 8b 53 28 4c 8b 72 70 4d 85 f6 0f 84 10 fe ff ff e9 f5 fd ff ff 0b 41 bf ea ff ff ff e9 3b ff ff ff 41 bf e6 ff ff ff e9 b4 fe
    RSP: 0018:ffffb8740dde7ca0 EFLAGS: 00010202
    RAX: ffffffff89e88a40 RBX: ffff928c8e6b6f00 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffff928dbfd97778 RDI: ffff9285cff685c0
    RBP: ffffb8740dde7cc8 R08: 0000000000000821 R09: 0000000000000030
    R10: 0000000000000057 R11: ffffb8740dde7a98 R12: ffff926ec781c900
    R13: ffff928c8e6b6f10 R14: ffffffff8936e190 R15: 0000000000000001
    FS: 00007f45f6777740(0000) GS:ffff928dbfd80000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fff95e0d5d8 CR3: 0000001ece562006 CR4: 00000000007606e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
    vfs_open+0x2d/0x30
    path_openat+0x2d4/0x1680
    ? tty_mode_ioctl+0x298/0x4c0
    do_filp_open+0x93/0x100
    ? strncpy_from_user+0x57/0x1b0
    ? __alloc_fd+0x46/0x150
    do_sys_open+0x182/0x230
    __x64_sys_openat+0x20/0x30
    do_syscall_64+0x60/0x1b0
    entry_SYSCALL_64_after_hwframe+0x170/0x1d5
    RIP: 0033:0x7f45f5e5ce02
    Code: 25 00 00 41 00 3d 00 00 41 00 74 4c 48 8d 05 25 59 2d 00 8b 00 85 c0 75 6d 89 f2 b8 01 01 00 00 48 89 fe bf 9c ff ff ff 0f 05 3d 00 f0 ff ff 0f 87 a2 00 00 00 48 8b 4c 24 28 64 48 33 0c 25
    RSP: 002b:00007fff95e0d2e0 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
    RAX: ffffffffffffffda RBX: 0000561178c069b0 RCX: 00007f45f5e5ce02
    RDX: 0000000000000241 RSI: 0000561178c08800 RDI: 00000000ffffff9c
    RBP: 00007fff95e0d3e0 R08: 0000000000000020 R09: 0000000000000005
    R10: 00000000000001b6 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000003 R14: 0000000000000001 R15: 0000561178c08800

    Change the return type to int and return -EPERM when lockdown is enabled
    to remove the warning above. Also rename debugfs_is_locked_down to
    debugfs_locked_down to make it sound less like it returns a boolean.

    Fixes: 5496197f9b08 ("debugfs: Restrict debugfs when the kernel is locked down")
    Signed-off-by: Eric Snowberg
    Reviewed-by: Matthew Wilcox (Oracle)
    Cc: stable
    Acked-by: James Morris
    Link: https://lore.kernel.org/r/20191207161603.35907-1-eric.snowberg@oracle.com
    Signed-off-by: Greg Kroah-Hartman

    Eric Snowberg
     

07 Jan, 2020

1 commit

  • Fix the following warnings:

    fs/debugfs/inode.c:423: WARNING: Inline literal start-string without end-string.
    fs/debugfs/inode.c:502: WARNING: Inline literal start-string without end-string.
    fs/debugfs/inode.c:534: WARNING: Inline literal start-string without end-string.
    fs/debugfs/inode.c:627: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:496: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:502: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:581: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:587: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:846: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:852: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:899: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:905: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:1091: WARNING: Inline literal start-string without end-string.
    fs/debugfs/file.c:1097: WARNING: Inline literal start-string without end-string

    By replacing %ERR_PTR with ERR_PTR.

    Signed-off-by: Daniel W. S. Almeida
    Link: https://lore.kernel.org/r/20191227010035.854913-1-dwlsalmeida@gmail.com
    Signed-off-by: Greg Kroah-Hartman

    Daniel W. S. Almeida
     

11 Dec, 2019

1 commit


07 Dec, 2019

1 commit

  • Pull vfs d_inode/d_flags memory ordering fixes from Al Viro:
    "Fallout from tree-wide audit for ->d_inode/->d_flags barriers use.
    Basically, the problem is that negative pinned dentries require
    careful treatment - unless ->d_lock is locked or parent is held at
    least shared, another thread can make them positive right under us.

    Most of the uses turned out to be safe - the main surprises as far as
    filesystems are concerned were

    - race in dget_parent() fastpath, that might end up with the caller
    observing the returned dentry _negative_, due to insufficient
    barriers. It is positive in memory, but we could end up seeing the
    wrong value of ->d_inode in CPU cache. Fixed.

    - manual checks that result of lookup_one_len_unlocked() is positive
    (and rejection of negatives). Again, insufficient barriers (we
    might end up with inconsistent observed values of ->d_inode and
    ->d_flags). Fixed by switching to a new primitive that does the
    checks itself and returns ERR_PTR(-ENOENT) instead of a negative
    dentry. That way we get rid of boilerplate converting negatives
    into ERR_PTR(-ENOENT) in the callers and have a single place to
    deal with the barrier-related mess - inside fs/namei.c rather than
    in every caller out there.

    The guts of pathname resolution *do* need to be careful - the race
    found by Ritesh is real, as well as several similar races.
    Fortunately, it turns out that we can take care of that with fairly
    local changes in there.

    The tree-wide audit had not been fun, and I hate the idea of repeating
    it. I think the right approach would be to annotate the places where
    we are _not_ guaranteed ->d_inode/->d_flags stability and have sparse
    catch regressions. But I'm still not sure what would be the least
    invasive way of doing that and it's clearly the next cycle fodder"

    * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    fs/namei.c: fix missing barriers when checking positivity
    fix dget_parent() fastpath race
    new helper: lookup_positive_unlocked()
    fs/namei.c: pull positivity check into follow_managed()

    Linus Torvalds
     

16 Nov, 2019

1 commit

  • Most of the callers of lookup_one_len_unlocked() treat negatives are
    ERR_PTR(-ENOENT). Provide a helper that would do just that. Note
    that a pinned positive dentry remains positive - it's ->d_inode is
    stable, etc.; a pinned _negative_ dentry can become positive at any
    point as long as you are not holding its parent at least shared.
    So using lookup_one_len_unlocked() needs to be careful;
    lookup_positive_unlocked() is safer and that's what the callers
    end up open-coding anyway.

    Signed-off-by: Al Viro

    Al Viro
     

03 Nov, 2019

2 commits


16 Oct, 2019

3 commits


14 Oct, 2019

4 commits


28 Sep, 2019

1 commit

  • Pull kernel lockdown mode from James Morris:
    "This is the latest iteration of the kernel lockdown patchset, from
    Matthew Garrett, David Howells and others.

    From the original description:

    This patchset introduces an optional kernel lockdown feature,
    intended to strengthen the boundary between UID 0 and the kernel.
    When enabled, various pieces of kernel functionality are restricted.
    Applications that rely on low-level access to either hardware or the
    kernel may cease working as a result - therefore this should not be
    enabled without appropriate evaluation beforehand.

    The majority of mainstream distributions have been carrying variants
    of this patchset for many years now, so there's value in providing a
    doesn't meet every distribution requirement, but gets us much closer
    to not requiring external patches.

    There are two major changes since this was last proposed for mainline:

    - Separating lockdown from EFI secure boot. Background discussion is
    covered here: https://lwn.net/Articles/751061/

    - Implementation as an LSM, with a default stackable lockdown LSM
    module. This allows the lockdown feature to be policy-driven,
    rather than encoding an implicit policy within the mechanism.

    The new locked_down LSM hook is provided to allow LSMs to make a
    policy decision around whether kernel functionality that would allow
    tampering with or examining the runtime state of the kernel should be
    permitted.

    The included lockdown LSM provides an implementation with a simple
    policy intended for general purpose use. This policy provides a coarse
    level of granularity, controllable via the kernel command line:

    lockdown={integrity|confidentiality}

    Enable the kernel lockdown feature. If set to integrity, kernel features
    that allow userland to modify the running kernel are disabled. If set to
    confidentiality, kernel features that allow userland to extract
    confidential information from the kernel are also disabled.

    This may also be controlled via /sys/kernel/security/lockdown and
    overriden by kernel configuration.

    New or existing LSMs may implement finer-grained controls of the
    lockdown features. Refer to the lockdown_reason documentation in
    include/linux/security.h for details.

    The lockdown feature has had signficant design feedback and review
    across many subsystems. This code has been in linux-next for some
    weeks, with a few fixes applied along the way.

    Stephen Rothwell noted that commit 9d1f8be5cf42 ("bpf: Restrict bpf
    when kernel lockdown is in confidentiality mode") is missing a
    Signed-off-by from its author. Matthew responded that he is providing
    this under category (c) of the DCO"

    * 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (31 commits)
    kexec: Fix file verification on S390
    security: constify some arrays in lockdown LSM
    lockdown: Print current->comm in restriction messages
    efi: Restrict efivar_ssdt_load when the kernel is locked down
    tracefs: Restrict tracefs when the kernel is locked down
    debugfs: Restrict debugfs when the kernel is locked down
    kexec: Allow kexec_file() with appropriate IMA policy when locked down
    lockdown: Lock down perf when in confidentiality mode
    bpf: Restrict bpf when kernel lockdown is in confidentiality mode
    lockdown: Lock down tracing and perf kprobes when in confidentiality mode
    lockdown: Lock down /proc/kcore
    x86/mmiotrace: Lock down the testmmiotrace module
    lockdown: Lock down module params that specify hardware parameters (eg. ioport)
    lockdown: Lock down TIOCSSERIAL
    lockdown: Prohibit PCMCIA CIS storage when the kernel is locked down
    acpi: Disable ACPI table override if the kernel is locked down
    acpi: Ignore acpi_rsdp kernel param when the kernel has been locked down
    ACPI: Limit access to custom_method when the kernel is locked down
    x86/msr: Restrict MSR access when the kernel is locked down
    x86: Lock down IO port access when the kernel is locked down
    ...

    Linus Torvalds
     

20 Aug, 2019

1 commit

  • Disallow opening of debugfs files that might be used to muck around when
    the kernel is locked down as various drivers give raw access to hardware
    through debugfs. Given the effort of auditing all 2000 or so files and
    manually fixing each one as necessary, I've chosen to apply a heuristic
    instead. The following changes are made:

    (1) chmod and chown are disallowed on debugfs objects (though the root dir
    can be modified by mount and remount, but I'm not worried about that).

    (2) When the kernel is locked down, only files with the following criteria
    are permitted to be opened:

    - The file must have mode 00444
    - The file must not have ioctl methods
    - The file must not have mmap

    (3) When the kernel is locked down, files may only be opened for reading.

    Normal device interaction should be done through configfs, sysfs or a
    miscdev, not debugfs.

    Note that this makes it unnecessary to specifically lock down show_dsts(),
    show_devs() and show_call() in the asus-wmi driver.

    I would actually prefer to lock down all files by default and have the
    the files unlocked by the creator. This is tricky to manage correctly,
    though, as there are 19 creation functions and ~1600 call sites (some of
    them in loops scanning tables).

    Signed-off-by: David Howells
    cc: Andy Shevchenko
    cc: acpi4asus-user@lists.sourceforge.net
    cc: platform-driver-x86@vger.kernel.org
    cc: Matthew Garrett
    cc: Thomas Gleixner
    Cc: Greg KH
    Cc: Rafael J. Wysocki
    Signed-off-by: Matthew Garrett
    Signed-off-by: James Morris

    David Howells
     

13 Jul, 2019

1 commit

  • Pull driver core and debugfs updates from Greg KH:
    "Here is the "big" driver core and debugfs changes for 5.3-rc1

    It's a lot of different patches, all across the tree due to some api
    changes and lots of debugfs cleanups.

    Other than the debugfs cleanups, in this set of changes we have:

    - bus iteration function cleanups

    - scripts/get_abi.pl tool to display and parse Documentation/ABI
    entries in a simple way

    - cleanups to Documenatation/ABI/ entries to make them parse easier
    due to typos and other minor things

    - default_attrs use for some ktype users

    - driver model documentation file conversions to .rst

    - compressed firmware file loading

    - deferred probe fixes

    All of these have been in linux-next for a while, with a bunch of
    merge issues that Stephen has been patient with me for"

    * tag 'driver-core-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (102 commits)
    debugfs: make error message a bit more verbose
    orangefs: fix build warning from debugfs cleanup patch
    ubifs: fix build warning after debugfs cleanup patch
    driver: core: Allow subsystems to continue deferring probe
    drivers: base: cacheinfo: Ensure cpu hotplug work is done before Intel RDT
    arch_topology: Remove error messages on out-of-memory conditions
    lib: notifier-error-inject: no need to check return value of debugfs_create functions
    swiotlb: no need to check return value of debugfs_create functions
    ceph: no need to check return value of debugfs_create functions
    sunrpc: no need to check return value of debugfs_create functions
    ubifs: no need to check return value of debugfs_create functions
    orangefs: no need to check return value of debugfs_create functions
    nfsd: no need to check return value of debugfs_create functions
    lib: 842: no need to check return value of debugfs_create functions
    debugfs: provide pr_fmt() macro
    debugfs: log errors when something goes wrong
    drivers: s390/cio: Fix compilation warning about const qualifiers
    drivers: Add generic helper to match by of_node
    driver_find_device: Unify the match function with class_find_device()
    bus_find_device: Unify the match callback with class_find_device
    ...

    Linus Torvalds
     

08 Jul, 2019

1 commit

  • When a file/directory is already present in debugfs, and it is attempted
    to be created again, be more specific about what file/directory is being
    created and where it is trying to be created to give a bit more help to
    developers to figure out the problem.

    Cc: Stephen Rothwell
    Cc: Rafael J. Wysocki
    Cc: Mark Brown
    Cc: Takashi Iwai
    Reviewed-by: Mark Brown
    Link: https://lore.kernel.org/r/20190706154256.GA2683@kroah.com
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

03 Jul, 2019

2 commits

  • Use a common "debugfs: " prefix for all pr_* calls in a single place.

    Cc: Mark Brown
    Reviewed-by: Takashi Iwai
    Reviewed-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman
    Link: https://lore.kernel.org/r/20190703071653.2799-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • As it is not recommended that debugfs calls be checked, it was pointed
    out that major errors should still be logged somewhere so that
    developers and users have a chance to figure out what went wrong. To
    help with this, error logging has been added to the debugfs core so that
    it is not needed to be present in every individual file that calls
    debugfs.

    Reported-by: Mark Brown
    Reported-by: Takashi Iwai
    Reviewed-by: Mark Brown
    Reviewed-by: Takashi Iwai
    Reviewed-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman
    Link: https://lore.kernel.org/r/20190703071653.2799-2-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

20 Jun, 2019

2 commits

  • This will allow generating fsnotify delete events after the
    fsnotify_nameremove() hook is removed from d_delete().

    Cc: Greg Kroah-Hartman
    Reviewed-by: Greg Kroah-Hartman
    Signed-off-by: Amir Goldstein
    Signed-off-by: Jan Kara

    Amir Goldstein
     
  • Move simple_unlink()+d_delete() from __debugfs_remove_file() into
    caller __debugfs_remove() and rename helper for post remove file to
    __debugfs_file_removed().

    This will simplify adding fsnotify_unlink() hook.

    Cc: Greg Kroah-Hartman
    Reviewed-by: Greg Kroah-Hartman
    Signed-off-by: Amir Goldstein
    Signed-off-by: Jan Kara

    Amir Goldstein
     

03 Jun, 2019

1 commit


21 May, 2019

1 commit


08 May, 2019

1 commit

  • Pull misc dcache updates from Al Viro:
    "Most of this pile is putting name length into struct name_snapshot and
    making use of it.

    The beginning of this series ("ovl_lookup_real_one(): don't bother
    with strlen()") ought to have been split in two (separate switch of
    name_snapshot to struct qstr from overlayfs reaping the trivial
    benefits of that), but I wanted to avoid a rebase - by the time I'd
    spotted that it was (a) in -next and (b) close to 5.1-final ;-/"

    * 'work.dcache' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    audit_compare_dname_path(): switch to const struct qstr *
    audit_update_watch(): switch to const struct qstr *
    inotify_handle_event(): don't bother with strlen()
    fsnotify: switch send_to_group() and ->handle_event to const struct qstr *
    fsnotify(): switch to passing const struct qstr * for file_name
    switch fsnotify_move() to passing const struct qstr * for old_name
    ovl_lookup_real_one(): don't bother with strlen()
    sysv: bury the broken "quietly truncate the long filenames" logics
    nsfs: unobfuscate
    unexport d_alloc_pseudo()

    Linus Torvalds