** Description changed: SRU Justification: Impact: Stateful lxd container snapshotting fails due to a failure to mount the container's sysfs in the host's user namespace. This is a regression. Fix: Force kernfs to use a new super block for mounts in different user namespaces. Test Case: "lxc snapshot --stateful <container>" fails in the current xenial kernel without the fix. It succeeds with the fix applied. --- During a stateful lxd snapshot criu tries to mount sysfs for the container's network namespace from a different user namespace. This fails in xenial because sget() won't allow mounting the same super block in different user namespaces. With sysfs there's no reason that this needs to use the same super block, so kernfs can be updated so that a super block with the same ns tag but in a different userns is not matched. The only other kernfs- based filesystem mountable from non-init user namespaces is cgroupfs, and it's already forcing kernfs to return different super blocks to - avoid similar problems. In fact we can revert part of the cgroupfs - changes to make this happen if we push this behavior into kernfs. + avoid similar problems.
-- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1570906 Title: sysfs mount failure during stateful lxd snapshots Status in linux package in Ubuntu: In Progress Status in linux source package in Xenial: In Progress Bug description: SRU Justification: Impact: Stateful lxd container snapshotting fails due to a failure to mount the container's sysfs in the host's user namespace. This is a regression. Fix: Force kernfs to use a new super block for mounts in different user namespaces. Test Case: "lxc snapshot --stateful <container>" fails in the current xenial kernel without the fix. It succeeds with the fix applied. --- During a stateful lxd snapshot criu tries to mount sysfs for the container's network namespace from a different user namespace. This fails in xenial because sget() won't allow mounting the same super block in different user namespaces. With sysfs there's no reason that this needs to use the same super block, so kernfs can be updated so that a super block with the same ns tag but in a different userns is not matched. The only other kernfs- based filesystem mountable from non-init user namespaces is cgroupfs, and it's already forcing kernfs to return different super blocks to avoid similar problems. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1570906/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp