Miklos Szeredi <miklos@xxxxxxxxxx> writes: > On Fri, Oct 04, 2013 at 03:43:18PM -0700, Eric W. Biederman wrote: >> >> +void detach_mounts(struct dentry *dentry) >> +{ >> + struct mount *mnt, *next; >> + struct mountpoint *mp; >> + >> + namespace_lock(); >> + if (!d_mountpoint(dentry)) { >> + namespace_unlock(); >> + return; >> + } >> + mp = new_mountpoint(dentry); >> + if (IS_ERR(mp)) { >> + return; >> + } >> + br_write_lock(&vfsmount_lock); >> + list_for_each_entry_safe(mnt, next, &mp->m_list, mnt_mp_list) { > > I don't think list_for_each_entry_safe is actually safe enough here. Because > propageted umounts will likely remove other mounts from the same mountpoint as > well. Doing it with "while (!list_empty(&mp->m_list))" should be better, and > AFAICS it will always make progress. Thanks I will take a look. But on the surface that logic sounds correct. Eric -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html