15 Sep, 2022

1 commit

  • commit dec9b2f1e0455a151a7293c367da22ab973f713e upstream.

    There is a very common pattern of using
    debugfs_remove(debufs_lookup(..)) which results in a dentry leak of the
    dentry that was looked up. Instead of having to open-code the correct
    pattern of calling dput() on the dentry, create
    debugfs_lookup_and_remove() to handle this pattern automatically and
    properly without any memory leaks.

    Cc: stable
    Reported-by: Kuyo Chang
    Tested-by: Kuyo Chang
    Link: https://lore.kernel.org/r/YxIaQ8cSinDR881k@kroah.com
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

27 Jan, 2022

1 commit

  • [ Upstream commit 358fcf5ddbec4e6706405847d6a666f5933a6c25 ]

    When the kernel is locked down the kernel allows reading only debugfs
    files with mode 444. Mode 400 is also valid but is not allowed.

    Make the 444 into a mask.

    Fixes: 5496197f9b08 ("debugfs: Restrict debugfs when the kernel is locked down")
    Signed-off-by: Michal Suchanek
    Link: https://lore.kernel.org/r/20220104170505.10248-1-msuchanek@suse.de
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Michal Suchanek
     

21 Sep, 2021

1 commit

  • debugfs_create_file() returns encoded error so use IS_ERR for checking
    return value.

    Reviewed-by: Christian König
    Signed-off-by: Nirmoy Das
    Fixes: ff9fb72bc077 ("debugfs: return error values, not NULL")
    Cc: stable
    References: https://gitlab.freedesktop.org/drm/amd/-/issues/1686
    Link: https://lore.kernel.org/r/20210902102917.2233-1-nirmoy.das@amd.com
    Signed-off-by: Greg Kroah-Hartman

    Nirmoy Das
     

05 Aug, 2021

1 commit

  • If a kernel module gets unloaded then it printed report about a leak before
    commit 275678e7a9be ("debugfs: Check module state before warning in
    {full/open}_proxy_open()"). An additional check was added in this commit to
    avoid this printing. But it was forgotten that the function must return an
    error in this case because it was not actually opened.

    As result, the systems started to crash or to hang when a module was
    unloaded while something was trying to open a file.

    Fixes: 275678e7a9be ("debugfs: Check module state before warning in {full/open}_proxy_open()")
    Cc: Taehee Yoo
    Reported-by: Mário Lopes
    Signed-off-by: Sven Eckelmann
    Link: https://lore.kernel.org/r/20210802162444.7848-1-sven@narfation.org
    Signed-off-by: Greg Kroah-Hartman

    Sven Eckelmann
     

14 Jun, 2021

1 commit


04 Jun, 2021

1 commit

  • Read the entire size of the buffer, including the trailing new line
    character.
    Discovered while reading the sched domain names of CPU0:

    before:

    cat /sys/kernel/debug/sched/domains/cpu0/domain*/name
    SMTMCDIE

    after:

    cat /sys/kernel/debug/sched/domains/cpu0/domain*/name
    SMT
    MC
    DIE

    Fixes: 9af0440ec86eb ("debugfs: Implement debugfs_create_str()")
    Reviewed-by: Steven Rostedt (VMware)
    Acked-by: Peter Zijlstra (Intel)
    Signed-off-by: Dietmar Eggemann
    Link: https://lore.kernel.org/r/20210527091105.258457-1-dietmar.eggemann@arm.com
    Signed-off-by: Greg Kroah-Hartman

    Dietmar Eggemann
     

31 May, 2021

1 commit


22 May, 2021

2 commits


19 May, 2021

1 commit

  • When (ia->ia_valid & (ATTR_MODE | ATTR_UID | ATTR_GID)) is zero, then
    the SELinux implementation of the locked_down hook might report a denial
    even though the operation would actually be allowed.

    To fix this, make sure that security_locked_down() is called only when
    the return value will be taken into account (i.e. when changing one of
    the problematic attributes).

    Note: this was introduced by commit 5496197f9b08 ("debugfs: Restrict
    debugfs when the kernel is locked down"), but it didn't matter at that
    time, as the SELinux support came in later.

    Fixes: 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown")
    Cc: stable
    Signed-off-by: Ondrej Mosnacek
    Link: https://lore.kernel.org/r/20210507125304.144394-1-omosnace@redhat.com
    Signed-off-by: Greg Kroah-Hartman

    Ondrej Mosnacek
     

14 May, 2021

1 commit

  • Blobs can only be read. So, keep only 'read' file attributes because the
    others will not work and only confuse users.

    Signed-off-by: Wolfram Sang
    Link: https://lore.kernel.org/r/20210504131350.46586-1-wsa+renesas@sang-engineering.com
    Signed-off-by: Greg Kroah-Hartman

    Wolfram Sang
     

29 Apr, 2021

1 commit

  • Pull scheduler updates from Ingo Molnar:

    - Clean up SCHED_DEBUG: move the decades old mess of sysctl, procfs and
    debugfs interfaces to a unified debugfs interface.

    - Signals: Allow caching one sigqueue object per task, to improve
    performance & latencies.

    - Improve newidle_balance() irq-off latencies on systems with a large
    number of CPU cgroups.

    - Improve energy-aware scheduling

    - Improve the PELT metrics for certain workloads

    - Reintroduce select_idle_smt() to improve load-balancing locality -
    but without the previous regressions

    - Add 'scheduler latency debugging': warn after long periods of pending
    need_resched. This is an opt-in feature that requires the enabling of
    the LATENCY_WARN scheduler feature, or the use of the
    resched_latency_warn_ms=xx boot parameter.

    - CPU hotplug fixes for HP-rollback, and for the 'fail' interface. Fix
    remaining balance_push() vs. hotplug holes/races

    - PSI fixes, plus allow /proc/pressure/ files to be written by
    CAP_SYS_RESOURCE tasks as well

    - Fix/improve various load-balancing corner cases vs. capacity margins

    - Fix sched topology on systems with NUMA diameter of 3 or above

    - Fix PF_KTHREAD vs to_kthread() race

    - Minor rseq optimizations

    - Misc cleanups, optimizations, fixes and smaller updates

    * tag 'sched-core-2021-04-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (61 commits)
    cpumask/hotplug: Fix cpu_dying() state tracking
    kthread: Fix PF_KTHREAD vs to_kthread() race
    sched/debug: Fix cgroup_path[] serialization
    sched,psi: Handle potential task count underflow bugs more gracefully
    sched: Warn on long periods of pending need_resched
    sched/fair: Move update_nohz_stats() to the CONFIG_NO_HZ_COMMON block to simplify the code & fix an unused function warning
    sched/debug: Rename the sched_debug parameter to sched_verbose
    sched,fair: Alternative sched_slice()
    sched: Move /proc/sched_debug to debugfs
    sched,debug: Convert sysctl sched_domains to debugfs
    debugfs: Implement debugfs_create_str()
    sched,preempt: Move preempt_dynamic to debug.c
    sched: Move SCHED_DEBUG sysctl to debugfs
    sched: Don't make LATENCYTOP select SCHED_DEBUG
    sched: Remove sched_schedstats sysctl out from under SCHED_DEBUG
    sched/numa: Allow runtime enabling/disabling of NUMA balance without SCHED_DEBUG
    sched: Use cpu_dying() to fix balance_push vs hotplug-rollback
    cpumask: Introduce DYING mask
    cpumask: Make cpu_{online,possible,present,active}() inline
    rseq: Optimise rseq_get_rseq_cs() and clear_rseq_cs()
    ...

    Linus Torvalds
     

16 Apr, 2021

1 commit


09 Apr, 2021

1 commit

  • Since debugfs_allow is only set at boot time during __init, make it
    read-only after being set.

    Fixes: a24c6f7bc923 ("debugfs: Add access restriction option")
    Cc: Peter Enderborg
    Reviewed-by: Peter Enderborg
    Signed-off-by: Kees Cook
    Link: https://lore.kernel.org/r/20210405213959.3079432-1-keescook@chromium.org
    Signed-off-by: Greg Kroah-Hartman

    Kees Cook
     

05 Apr, 2021

1 commit


25 Feb, 2021

1 commit

  • Pull driver core / debugfs update from Greg KH:
    "Here is the "big" driver core and debugfs update for 5.12-rc1

    This set of driver core patches caused a bunch of problems in
    linux-next for the past few weeks, when Saravana tried to set
    fw_devlink=on as the default functionality. This caused a number of
    systems to stop booting, and lots of bugs were fixed in this area for
    almost all of the reported systems, but this option is not ready to be
    turned on just yet for the default operation based on this testing, so
    I've reverted that change at the very end so we don't have to worry
    about regressions in 5.12

    We will try to turn this on for 5.13 if testing goes better over the
    next few months.

    Other than the fixes caused by the fw_devlink testing in here, there's
    not much more:

    - debugfs fixes for invalid input into debugfs_lookup()

    - kerneldoc cleanups

    - warn message if platform drivers return an error on their remove
    callback (a futile effort, but good to catch).

    All of these have been in linux-next for a while now, and the
    regressions have gone away with the revert of the fw_devlink change"

    * tag 'driver-core-5.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (35 commits)
    Revert "driver core: Set fw_devlink=on by default"
    of: property: fw_devlink: Ignore interrupts property for some configs
    debugfs: do not attempt to create a new file before the filesystem is initalized
    debugfs: be more robust at handling improper input in debugfs_lookup()
    driver core: auxiliary bus: Fix calling stage for auxiliary bus init
    of: irq: Fix the return value for of_irq_parse_one() stub
    of: irq: make a stub for of_irq_parse_one()
    clk: Mark fwnodes when their clock provider is added/removed
    PM: domains: Mark fwnodes when their powerdomain is added/removed
    irqdomain: Mark fwnodes when their irqdomain is added/removed
    driver core: fw_devlink: Handle suppliers that don't use driver core
    of: property: Add fw_devlink support for optional properties
    driver core: Add fw_devlink.strict kernel param
    of: property: Don't add links to absent suppliers
    driver core: fw_devlink: Detect supplier devices that will never be added
    driver core: platform: Emit a warning if a remove callback returned non-zero
    of: property: Fix fw_devlink handling of interrupts/interrupts-extended
    gpiolib: Don't probe gpio_device if it's not the primary device
    device.h: Remove bogus "the" in kerneldoc
    gpiolib: Bind gpio_device to a driver to enable fw_devlink=on by default
    ...

    Linus Torvalds
     

18 Feb, 2021

2 commits

  • Some subsystems want to add debugfs files at early boot, way before
    debugfs is initialized. This seems to work somehow as the vfs layer
    will not allow it to happen, but let's be explicit and test to ensure we
    are properly up and running before allowing files to be created.

    Cc: "Rafael J. Wysocki"
    Cc: stable
    Reported-by: Michael Walle
    Reported-by: Marc Zyngier
    Link: https://lore.kernel.org/r/20210218100818.3622317-2-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • debugfs_lookup() doesn't like it if it is passed an illegal name
    pointer, or if the filesystem isn't even initialized yet. If either of
    these happen, it will crash the system, so fix it up by properly testing
    for valid input and that we are up and running before trying to find a
    file in the filesystem.

    Cc: "Rafael J. Wysocki"
    Cc: stable
    Reported-by: Michael Walle
    Tested-by: Michael Walle
    Tested-by: Marc Zyngier
    Link: https://lore.kernel.org/r/20210218100818.3622317-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

24 Jan, 2021

1 commit

  • Extend some inode methods with an additional user namespace argument. A
    filesystem that is aware of idmapped mounts will receive the user
    namespace the mount has been marked with. This can be used for
    additional permission checking and also to enable filesystems to
    translate between uids and gids if they need to. We have implemented all
    relevant helpers in earlier patches.

    As requested we simply extend the exisiting inode method instead of
    introducing new ones. This is a little more code churn but it's mostly
    mechanical and doesnt't leave us with additional inode methods.

    Link: https://lore.kernel.org/r/20210121131959.646623-25-christian.brauner@ubuntu.com
    Cc: Christoph Hellwig
    Cc: David Howells
    Cc: Al Viro
    Cc: linux-fsdevel@vger.kernel.org
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Christian Brauner

    Christian Brauner
     

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

1 commit