[2.51.4] stale device cgroups were not removed when a snap got installed in devmode
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
snapd |
New
|
Undecided
|
Unassigned |
Bug Description
I am getting EPERM from the kernel when I try to open a character file when a snap runs in devmode. I would expect devmode to work differently and avoid those rules from being enforced.
$ snap list | grep snapd
snapd 2.51.4 12883 latest/stable canonical* snapd
$ snap list | grep microstack
microstack ussuri 233 latest/beta canonical* devmode
$ sudo snap run --shell microstack.virsh
root@node-
cat: /dev/kvm: Operation not permitted
# The rule for /dev/kvm is not in the devices.list
$ sudo grep 232 /sys/fs/
1
$ stat /dev/kvm
File: /dev/kvm
Size: 0 Blocks: 0 IO Block: 4096 character special file
Device: 5h/5d Inode: 585 Links: 1 Device type: a,e8
Access: (0660/crw-rw----) Uid: ( 0/ root) Gid: ( 115/ kvm)
Access: 2021-09-01 14:21:06.835559208 +0000
Modify: 2021-09-01 14:21:06.835559208 +0000
Change: 2021-09-01 14:21:06.835559208 +0000
Birth: -
See the bpftrace below:
root@node-
kfunc:do_
@pid[tid] = pid;
}
kretfunc:
printf("cgroup permission check (devcgroup_
printf(
printf(
printf("retval %d\n", retval);
}
root@node-
Attaching 2 probes...
cgroup permission check (devcgroup_
kstack:
do_open+132
ustack:
retval -1
I was testing confined MicroStack (without devmode) on this machine previously.
Looking at this again, I can see that cgroup entries got left untouched even after the snap (in devmode) was purged.
$ sudo snap remove microstack --purge
microstack removed
$ find /sys/fs/ cgroup/ devices/ -name 'snap.microstack.*' cgroup/ devices/ snap.microstack .keystone- uwsgi cgroup/ devices/ snap.microstack .rabbitmq- server cgroup/ devices/ snap.microstack .openstack cgroup/ devices/ snap.microstack .cinder- scheduler cgroup/ devices/ snap.microstack .cinder- volume cgroup/ devices/ snap.microstack .mysqld cgroup/ devices/ snap.microstack .nova-api- metadata cgroup/ devices/ snap.microstack .ovn-controller cgroup/ devices/ snap.microstack .nova-spicehtml 5proxy cgroup/ devices/ snap.microstack .microstack cgroup/ devices/ snap.microstack .libvirtd cgroup/ devices/ snap.microstack .init cgroup/ devices/ snap.microstack .neutron- api cgroup/ devices/ snap.microstack .neutron- ovn-metadata- agent cgroup/ devices/ snap.microstack .ovn-ovsdb- server- nb cgroup/ devices/ snap.microstack .ovsdb- server cgroup/ devices/ snap.microstack .iscsid cgroup/ devices/ snap.microstack .target cgroup/ devices/ snap.microstack .glance- api cgroup/ devices/ snap.microstack .nova-conductor cgroup/ devices/ snap.microstack .virtlogd cgroup/ devices/ snap.microstack .cinder- uwsgi cgroup/ devices/ snap.microstack .cluster- uwsgi cgroup/ devices/ snap.microstack .nginx cgroup/ devices/ snap.microstack .external- bridge cgroup/ devices/ snap.microstack .launch cgroup/ devices/ snap.microstack .ovn-ovsdb- server- sb cgroup/ devices/ snap.microstack .nova-compute cgroup/ devices/ snap.microstack .placement- uwsgi cgroup/ devices/ snap.microstack .virsh cgroup/ devices/ snap.microstack .nova-scheduler cgroup/ devices/ snap.microstack .horizon- uwsgi cgroup/ devices/ snap.microstack .ovs-vswitchd cgroup/ devices/ snap.microstack .ovn-northd cgroup/ devices/ snap.microstack .memcached cgroup/ devices/ snap.microstack .hook.remove cgroup/ devices/ snap.microstack .nova-api
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/
/sys/fs/