<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in readdir_hold.h</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>8e8cd9a4c6dc006e9bd51b8ad0079fb4576b48d3 - Merge tag &apos;asoc-fix-v7.3-rc7&apos; of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus</title>
        <link>http://kernelsources.org:8080/source/history/linux/tools/testing/selftests/filesystems/readdir_hold.h#8e8cd9a4c6dc006e9bd51b8ad0079fb4576b48d3</link>
        <description>Merge tag &apos;asoc-fix-v7.3-rc7&apos; of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linusASoC: Fixes for v7.3There&apos;s a relatively large block of fixes for errors in register fielddefinitions here, resulting from an audit done after review of a priorseries.  The fixes themselves are very small and can be directly checkedagainst the datasheets.  Other than that we&apos;ve got some driver specificfixes, the AMD fix is a little large but fixes a clear issue and won&apos;taffect other systems.

            List of files:
            /linux/tools/testing/selftests/filesystems/readdir_hold.h</description>
        <pubDate>Thu, 15 Oct 2026 16:57:14 +0200</pubDate>
        <dc:creator>Takashi Iwai &lt;tiwai@suse.de&gt;</dc:creator>
    </item>
<item>
        <title>d5a821f66047c2effd06147b84775f9b2ce0f4aa - regmap: Fix cache lifecycle locking and teardown</title>
        <link>http://kernelsources.org:8080/source/history/linux/tools/testing/selftests/filesystems/readdir_hold.h#d5a821f66047c2effd06147b84775f9b2ce0f4aa</link>
        <description>regmap: Fix cache lifecycle locking and teardownMichael Reeves &lt;michael.reeves077@gmail.com&gt; says:Fix an &quot;Invalid wait context&quot; lockdep warning during Apple GPIO probe andcorrect debugfs ordering during cache teardown.Tested on Apple M3 MacBook Air (T8122):- All 4 GPIO controllers probe successfully with lockdep enabled.- The &quot;Invalid wait context&quot; warning no longer occurs.- The regmap KUnit suite passes and lockdep remains enabled.Link: https://patch.msgid.link/20261006-regcache-lifecycle-submit-v3-0-37bdd82fd47c@gmail.com

            List of files:
            /linux/tools/testing/selftests/filesystems/readdir_hold.h</description>
        <pubDate>Tue, 13 Oct 2026 01:11:44 +0200</pubDate>
        <dc:creator>Mark Brown &lt;broonie@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>8ac49fbf00e580e8ee1a66b120f8b33d9ab81901 - ASoC: Fix controls that write another control&apos;s bits</title>
        <link>http://kernelsources.org:8080/source/history/linux/tools/testing/selftests/filesystems/readdir_hold.h#8ac49fbf00e580e8ee1a66b120f8b33d9ab81901</link>
        <description>ASoC: Fix controls that write another control&apos;s bitsHyeongJun An &lt;sammiee5311@gmail.com&gt; says:In the es8316 thread Mark suggested checking at registration time forcontrols whose register fields overlap [1]. Before adding such a check,I wanted to see what it would find in the tree today.A script expanded the control tables of every ASoC driver built byallmodconfig and looked for two controls in one table whose registerfields overlap. It found 80 pairs in 33 drivers. Most are real bugs.The rest are deliberate, where two names drive the same field, such asthe AC and DRC mode thresholds in sta32x.This series fixes six that I could confirm against the vendordatasheet. In each one, writing a control changes a different control,and the bits it should own cannot be reached. Most date back to thefirst version of the driver.One more is left out on purpose. The cs42l56 ADC Mute Switch writes theADC invert bits. The real mute bits are also written by thecs42l56_mute() callback on every stream start and stop, so moving thecontrol there would let the stream mute override it. I am not surewhether you would rather move it or drop it.I have none of this hardware, so these are checked against thedatasheets only. More fixes, checked against the register headers,and the registration time check would follow.[1] https://lore.kernel.org/all/0fefbfe1-021b-46b2-8945-15956e75e37f@sirena.org.uk/Link: https://patch.msgid.link/20261008130953.2446692-1-sammiee5311@gmail.com

            List of files:
            /linux/tools/testing/selftests/filesystems/readdir_hold.h</description>
        <pubDate>Mon, 12 Oct 2026 20:52:02 +0200</pubDate>
        <dc:creator>Mark Brown &lt;broonie@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>f99005fbed4e8071110faa350cc5fa453afa1455 - Merge tag &apos;vfs-7.3-rc7.fixes&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs</title>
        <link>http://kernelsources.org:8080/source/history/linux/tools/testing/selftests/filesystems/readdir_hold.h#f99005fbed4e8071110faa350cc5fa453afa1455</link>
        <description>Merge tag &apos;vfs-7.3-rc7.fixes&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfsPull vfs fixes from Christian Brauner: &quot;This contains fixes for the current development cycle.  All of them came out of a review of the mount code that started with a  bug report. The review modeled the corner cases of mount propagation,  unmounting and mount reference counting and turned up a lot of bugs.  Most of them years old. Most fixes come with a selftest.   - Rework connected mounts.     A mount that is unmounted together with its parent can stay     attached to the parent to keep its mountpoint covered. That happens     when the mountpoint is removed with rmdir(), unlink() or rename(),     when a detached tree is dissolved, and for locked mounts in any     umount that isn&apos;t synchronous, including the teardown of their     mount namespace. The parent then owns the child and drops it on its     own final mntput(). So any reference from the child&apos;s superblock     back to one of its ancestors becomes a cycle that is never freed.     A loop device backed by an image on a tmpfs and mounted on that     same tmpfs is enough. Remove the directory the tmpfs is mounted on     from the host, let the container&apos;s mount namespace exit, and the     loop device, the tmpfs and the filesystem on the loop device are     leaked for good. The same works with autofs, zram, ecryptfs,     binfmt_misc, fuse passthrough, zloop, a mass storage gadget and md,     and the selftests have reproducers for them. This has been possible     since v4.1. It is also why &quot;put_mnt_ns(): leave mounts connected&quot;     was reverted in -rc5. Keeping every mount of a dying mount     namespace connected made these cycles trivial to create.     Every unmounted mount is now detached from its parent. Where the     mountpoint has to stay covered the mount leaves a cover on the     parent instead, allocated together with the mount. A lookup on the     unmounted parent that hits a cover finds an empty immutable     directory or file on the private nullfs instance. Nothing leads     from a cover to another mount, so no unmounted mount owns another     one and no cycle can form.     This is visible to userspace. A formerly connected mount can no     longer be reached through its unmounted parent and &quot;..&quot; inside it     leads nowhere, as for every other lazily unmounted mount.     With that the private nullfs instance becomes reachable from     userspace, so it now refuses mounts on top, is mounted read-only,     and refuses fsnotify marks and file locks. Its inodes are shared by     every holder and a watch or a lock would otherwise reach across     users. may_decode_fh() now also decides its subtree check under a     single mount_lock hold, as a racing umount could otherwise let it     decode into what a locked child covered.   - umount:     * Don&apos;t silently unmount busy mounts.       Since v4.13 propagate_umount() takes down propagated copies of       the victim with children as long as each child is an overmount or       another copy of the victim, but propagate_mount_busy() only ever       checked copies without children or with just an overmount. A       container that moved a tree beneath its copy of a host mount lost       that tree from under its open file descriptor to a plain umount()       on the host. propagate_mount_busy() now applies the same rules,       walking each chain of copies once.     * Don&apos;t let a migrating task hide its reference from umount().       mnt_get_count() sums the per-cpu counters under mount_lock but       the mntget() and mntput() fast paths don&apos;t take it. A task that       takes a reference on a cpu the sum has already passed and drops       it after migrating to one the sum hasn&apos;t reached yet hides the       reference it held to begin with, and umount() succeeds with the       file still open. Gets and puts now live in separate per-cpu       counters and all puts are summed before all gets with a full       barrier in between, the way srcu_readers_active_idx_check() does       it. mntget() is unchanged and mntput() gains an smp_wmb().     * Check each submount for references right before unmounting it.       shrink_submounts() and mark_mounts_for_expiry() checked all their       victims up front. Unmounting the first could move a busy       overmount to where the next victim&apos;s propagated copy is looked up       and it was then unmounted without a check.     * Never expire a locked mount.       A shrinkable mount moved beneath a locked mount with       MOVE_MOUNT_BENEATH takes over the lock, and umount() of an       unlocked ancestor expired it and revealed what it covered. That       umount() now fails with EBUSY as it does for any other locked       child. A lazy umount still takes the whole tree.   - Overmounts and locked mounts:     * Unhash a dentry before detaching the mounts on it.       unlink(), rmdir() and rename() detach the mounts on the victim       but only d_delete() it once its inode is unlocked, a window that       includes an expedited RCU grace period. In between, a lookup from       a mount namespace in which the dentry is a mountpoint found it       hashed, positive and uncovered. Drop the dentry first, as       d_invalidate() already does.     * Don&apos;t reveal overmounted entries in refwalk.       A refwalk that had grabbed the dentry before the unlink never       rechecked it the way rcuwalk does with d_seq and mount_lock.       Without any artificial widening three walkers read the covered       file 27 times in a minute. step_into() now fails an unhashed       dentry marked DCACHE_CANT_MOUNT with -ESTALE and the walk is       retried.     * Keep covered mounts covered in OPEN_TREE_NAMESPACE.       Creating such a mount namespace only takes a user namespace and       the copy followed bind mount rules: no children without       AT_RECURSIVE and no unbindable mounts with it. An unprivileged       user could see what mounts covered in the source, such as the       parts of /proc and /sys that container runtimes mask. If the       caller doesn&apos;t own the source mount namespace a non-recursive       copy of a mount with something mounted below the requested       directory is now refused and a recursive copy includes unbindable       mounts, the way unshare() copies.     * Keep the lock on a mount that a propagated copy is moved beneath.       MNT_LOCKED moved to any mount that ended up beneath a locked       mount, propagated copies included. A host mount and umount on a       directory covered by a locked mount in a less privileged mount       namespace left that cover unlocked for the namespace&apos;s owner to       remove. Only mounts the caller places beneath take over the lock       now.     * Handle mount locking for automounts correctly. Which copies to       lock was decided by the mount namespace of the task that       triggered the automount. A task in a user namespace that       triggered one on a host mount through a file descriptor got the       host&apos;s own automount locked while its own copy stayed unlocked       and could have nosuid, nodev and noexec cleared. Use the owner of       the mount namespace the mount lands in.   - Use-after-free and crashes:     * Refuse an automount below a mount that is in no namespace.       The private clones overlayfs uses for its layers have the       MNT_NS_INTERNAL error pointer as their namespace, which       finish_automount() let through and count_mounts() dereferenced. A       fanotify filesystem mark on an overlayfs lower layer hands out       file descriptors on such a clone. With debugfs as the lower layer       opening &quot;tracing&quot; oopses with namespace_sem held for writing and       every mount operation on the system blocks from then on.     * Reset the old parent&apos;s -&gt;overmount in mnt_change_mountpoint().       When propagate_umount() moved an overmount off a mount that a       file descriptor kept alive, MOVE_MOUNT_BENEATH through that       descriptor later followed the stale pointer into the freed       overmount.     * statmount() with STATMOUNT_BY_FD and pivot_root() read the parent       of a mount that may be unmounted and only held by a file       descriptor, while the parent&apos;s final mntput() can free it.       statmount() now reads it under mount_lock and pivot_root() first       checks that both mounts are in the caller&apos;s mount namespace.     * Queue a mount only once for mount notifications. A mount       reparented by one umount_tree() and taken down by the next under       the same namespace_sem hold, as in shrink_submounts(), was queued       twice. That cut the mounts queued in between out of notify_list       while it still pointed at them, and once they were freed every       later mount operation walked freed memory.     * Don&apos;t let a pseudo dentry become the root of a mount. A bind       mount of a bpf token file did that with a DCACHE_NORCU dentry,       which is freed without an RCU grace period while lockless path       walks may still look at it. Refuse to clone such a mount.     * Don&apos;t inherit MNT_UMOUNT in clone_mnt(). A bind mount of a lazily       unmounted nsfs or pidfs mount through its file descriptor started       out flagged as unmounted. Among other things __detach_mounts()       then dropped the namespace&apos;s reference on it, the mount outlived       its namespace and mount_setattr() through the descriptor read the       freed namespace. A recursive bind mount of such a mount also       copied the unmounted stack still attached to it. That now fails       with EINVAL, copying the mount itself still works.     * Remove the fsnotify marks of a mount namespace in free_mnt_ns()       instead of the RCU callback that frees the namespace, where       taking the group mutexes meant sleeping in softirq context.   - Propagation and copies:     * Keep a copied mount unbindable. Since v6.17 clone_mnt() didn&apos;t       copy the unbindable flag, so every mount namespace created with       CLONE_NEWNS had bindable copies of all unbindable mounts. This       had been fixed once before.     * Refuse MOVE_MOUNT_SET_GROUP on an unbindable mount. It made the       mount an unbindable slave, a state nothing else can produce, or       silently dropped the unbindable flag. CRIU applies MS_UNBINDABLE       after restoring sharing and isn&apos;t affected.     * Check a recursive bind mount for mount namespace loops.       Recursively bind mounting a tree from another mount namespace       could put a mount of a namespace&apos;s file inside that same       namespace, which then pins itself and all its mounts. Repeating       it leaks without limit, the reproducer took Shmem from 380 kB to       65916 kB. The copy is now checked with check_for_nsfs_mounts()       before it is grafted, as move_mount() does.     * Look at the topmost mount for a mount namespace file.       attach_recursive_mnt() never looked at the topmost mount of the       source&apos;s chain of overmounts. If that was the chain&apos;s only mount       namespace file an existing mount at a propagated destination got       buried below the root of the nsfs file where no path walk reaches       it.     * Don&apos;t put a mountpoint on a dentry that&apos;s being removed.       attach_recursive_mnt() makes a mountpoint of the source&apos;s root       without its inode lock, so a racing rmdir() of that directory       could leave a mount on it that nothing ever detaches.       d_set_mounted() now checks cant_mount() as well.   - nullfs:     * Take no inode lock for readdir of an immutable directory.       The root of every empty mount namespace is the same nullfs       directory and iterate_dir() held its i_rwsem across       -&gt;iterate_shared(). A reader whose buffer faults on a FUSE mount       of its own holds it for as long as its server wants, and with an       exclusive locker queued behind it every lookup that misses the       dcache, every create and every mount in that directory waits. One       user of an empty mount namespace stalls all others. Directories       with the new FOP_IMMUTABLE flag skip the lock.     * Refuse to reconfigure internal superblocks through fspick(),       MS_REMOUNT or the read-only remount that a synchronous umount()       of the root does. For nullfs only root in the initial user       namespace could do it, but the superblock is shared by every       mount namespace and the flags showed up in statfs() for all of       them.     * Don&apos;t update the access time on nullfs and refuse F_SET_RW_HINT       on an immutable inode.   - unshare: Free an nsproxy that was never installed with     nsproxy_free() when set_cred_ucounts() fails. put_nsproxy() dropped     active references that were never taken, which triggered a warning     and hid the caller&apos;s own namespaces from listns().   - Smaller changes: mount_setattr() checks the target before it walks     the tree to allocate peer group ids, unshare() puts the old     fs_struct before the old namespaces, dissolve_on_fput() drops the     file&apos;s reference to the tree itself, disconnect_mount() is     simplified and the documentation of the propagated unmount rule is     brought up to date&quot;* tag &apos;vfs-7.3-rc7.fixes&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (58 commits)  namespace: simplify disconnect_mount()  selftests/filesystems: test covered mounts  namespace: rework connected mounts  nullfs: add an empty immutable regular file  selftests/filesystems: check that reading the root of an empty mount namespace stalls nobody  selftests/filesystems: add a helper that holds a readdir in a page fault  readdir: take no inode lock on an immutable directory  nullfs: refuse file locks  fsnotify: let a filesystem refuse marks on its objects  namespace: nothing is mounted on or written through knullfs  namespace: keep the private nullfs instance in knullfs  fhandle: decide the subtree check under mount_lock  selftests/filesystems: check that an automount below an overlay layer is refused  selftests/filesystems: check the atime of the empty mount namespace root  selftests/filesystems: check that a lock lands on the right mount and stays  namespace: keep the lock on a mount that a propagated copy is moved beneath  namespace: never expire a locked mount  nullfs: don&apos;t update the access time  namespace: handle mount locking for automounts correctly  namespace: refuse an automount below a mount that is in no namespace  ...

            List of files:
            /linux/tools/testing/selftests/filesystems/readdir_hold.h</description>
        <pubDate>Fri, 09 Oct 2026 23:37:44 +0200</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>1514faf41f7ccd64c987e1006ddebbe825a1664c - Merge patch series &quot;mount: more bugfixes, trapped in the Black Lodge edition&quot;</title>
        <link>http://kernelsources.org:8080/source/history/linux/tools/testing/selftests/filesystems/readdir_hold.h#1514faf41f7ccd64c987e1006ddebbe825a1664c</link>
        <description>Merge patch series &quot;mount: more bugfixes, trapped in the Black Lodge edition&quot;Christian Brauner &lt;brauner@kernel.org&gt; says:More bugfixes from work in this area:- unhash a dentry before detaching the mounts on it to avoid leaking  sensitive data- don&apos;t reveal overmounted entries in refwalk- refuse F_SET_RW_HINT on an immutable inode- refuse an automount below a mount that is in no namespace- handle mount locking for automounts correctly- don&apos;t update the access time on nullfs- never expire a locked mount- keep the lock on a mount that a propagated copy is moved beneath- decide the subtree check under mount_lock- keep the private nullfs instance in knullfs- nothing is mounted on or written through knullfs- let a filesystem refuse fsnotify marks on its objects- refuse file locks on nullfs- refuse leases and delegations on nullfs- take no inode lock on an immutable directory* patches from https://patch.msgid.link/20261002-work-mount-fixes-4-v1-0-dd44b89d44ce@kernel.org:  selftests/filesystems: check that reading the root of an empty mount namespace stalls nobody  selftests/filesystems: add a helper that holds a readdir in a page fault  readdir: take no inode lock on an immutable directory  nullfs: refuse file locks  fsnotify: let a filesystem refuse marks on its objects  namespace: nothing is mounted on or written through knullfs  namespace: keep the private nullfs instance in knullfs  fhandle: decide the subtree check under mount_lock  selftests/filesystems: check that an automount below an overlay layer is refused  selftests/filesystems: check the atime of the empty mount namespace root  selftests/filesystems: check that a lock lands on the right mount and stays  namespace: keep the lock on a mount that a propagated copy is moved beneath  namespace: never expire a locked mount  nullfs: don&apos;t update the access time  namespace: handle mount locking for automounts correctly  namespace: refuse an automount below a mount that is in no namespace  selftests/filesystems: check that an immutable inode takes no write hint  fcntl: refuse F_SET_RW_HINT on an immutable inode  namei: don&apos;t reveal overmounted entries in refwalk  namespace: unhash a dentry before detaching the mounts on itLink: https://patch.msgid.link/20261002-work-mount-fixes-4-v1-0-dd44b89d44ce@kernel.orgSigned-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;

            List of files:
            /linux/tools/testing/selftests/filesystems/readdir_hold.h</description>
        <pubDate>Sun, 04 Oct 2026 21:46:09 +0200</pubDate>
        <dc:creator>Christian Brauner &lt;brauner@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>fa15a241f0a862904d673d2514baf9a26c0893e8 - selftests/filesystems: add a helper that holds a readdir in a page fault</title>
        <link>http://kernelsources.org:8080/source/history/linux/tools/testing/selftests/filesystems/readdir_hold.h#fa15a241f0a862904d673d2514baf9a26c0893e8</link>
        <description>selftests/filesystems: add a helper that holds a readdir in a page faultA getdents64() whose buffer is a page registered with userfaultfd sitsin handle_userfault() with whatever iterate_dir() took before it copiedthe entries. Add readdir_hold.h for tests that want to know what thatblocks: it opens the userfaultfd before the test enters a usernamespace, the fault happens in the kernel and needs CAP_SYS_PTRACE inthe initial one, starts the readdir in a thread, waits until thatthread is stuck, queues a create behind it and waits for it to settle,then probes a lookup with a watchdog and says whether it came back.The page is released afterwards so that everything drains on a kernelthat still holds the lock across the copy.The two users follow.Link: https://patch.msgid.link/20261002-work-mount-fixes-4-v1-20-dd44b89d44ce@kernel.orgSigned-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;

            List of files:
            /linux/tools/testing/selftests/filesystems/readdir_hold.h</description>
        <pubDate>Fri, 02 Oct 2026 15:52:51 +0200</pubDate>
        <dc:creator>Christian Brauner &lt;brauner@kernel.org&gt;</dc:creator>
    </item>
</channel>
</rss>
