• Pavel Emelyanov's avatar
    filemap: Get vma mnt_id early · e651a6eb
    Pavel Emelyanov authored
    We have a, well, issue with how we calculate the vma's mnt_id.
    
    Right now get one via criu side file descriptor that it got by
    opening the /proc/pid/map_files/ link. The problem is that these
    descriptors are 'merged' or 'borrowed' by adjacent vmas from
    previous ones. Thus, getting the mnt_id value for each of them
    makes no sense -- these files are the same.
    
    So move this mnt_id getting earlier into vma parsing code. This
    brings a potential problem -- if we have two adjacent vmas
    mapping the same inode (dev:ino pair) but living in different
    mount namespaces -- this check would produce wrong result.
    "Wrong" from the perspective that on restore correct file would
    be opened from wrong namespace.
    
    I propose to live with it, since this is not worse than the
    --evasive-devices option, it's _very_ unlikely, but saves a lot
    of openeings.
    
    Note, that in case app switched mount namespace and then mapped
    some new library (with dlopen) things would work correctly -- new
    vmas will likely be not adjacent and for different dev:ino.
    Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    e651a6eb
Name
Last commit
Last update
..
asm-generic Loading commit data...
action-scripts.h Loading commit data...
bfd.h Loading commit data...
bug.h Loading commit data...
cgroup.h Loading commit data...
compiler.h Loading commit data...
config-base.h Loading commit data...
cpu.h Loading commit data...
cr-service-const.h Loading commit data...
cr-service.h Loading commit data...
cr-show.h Loading commit data...
cr_options.h Loading commit data...
criu-log.h Loading commit data...
criu-plugin.h Loading commit data...
crtools.h Loading commit data...
err.h Loading commit data...
errno.h Loading commit data...
eventfd.h Loading commit data...
eventpoll.h Loading commit data...
fcntl.h Loading commit data...
fdset.h Loading commit data...
fifo.h Loading commit data...
file-ids.h Loading commit data...
file-lock.h Loading commit data...
files-reg.h Loading commit data...
files.h Loading commit data...
fs-magic.h Loading commit data...
fsnotify.h Loading commit data...
image-desc.h Loading commit data...
image.h Loading commit data...
inet_diag.h Loading commit data...
ipc_ns.h Loading commit data...
irmap.h Loading commit data...
kcmp-ids.h Loading commit data...
kcmp.h Loading commit data...
kerndat.h Loading commit data...
libnetlink.h Loading commit data...
list.h Loading commit data...
lock.h Loading commit data...
log.h Loading commit data...
magic.h Loading commit data...
mem.h Loading commit data...
mman.h Loading commit data...
mount.h Loading commit data...
namespaces.h Loading commit data...
net.h Loading commit data...
netfilter.h Loading commit data...
netlink_diag.h Loading commit data...
packet_diag.h Loading commit data...
page-pipe.h Loading commit data...
page-read.h Loading commit data...
page-xfer.h Loading commit data...
pagemap-cache.h Loading commit data...
parasite-syscall.h Loading commit data...
parasite.h Loading commit data...
pid.h Loading commit data...
pipes.h Loading commit data...
plugin.h Loading commit data...
posix-timer.h Loading commit data...
prctl.h Loading commit data...
proc_parse.h Loading commit data...
protobuf-desc.h Loading commit data...
protobuf.h Loading commit data...
pstree.h Loading commit data...
ptrace.h Loading commit data...
rbtree.h Loading commit data...
restorer.h Loading commit data...
rst-malloc.h Loading commit data...
rst_info.h Loading commit data...
servicefd.h Loading commit data...
setproctitle.h Loading commit data...
shmem.h Loading commit data...
sigframe.h Loading commit data...
signalfd.h Loading commit data...
sk-inet.h Loading commit data...
sk-packet.h Loading commit data...
sk-queue.h Loading commit data...
sockets.h Loading commit data...
stats.h Loading commit data...
string.h Loading commit data...
syscall-types.h Loading commit data...
sysctl.h Loading commit data...
sysfs_parse.h Loading commit data...
timerfd.h Loading commit data...
tty.h Loading commit data...
tun.h Loading commit data...
unix_diag.h Loading commit data...
util-pie.h Loading commit data...
util.h Loading commit data...
uts_ns.h Loading commit data...
vdso.h Loading commit data...
vma.h Loading commit data...
xmalloc.h Loading commit data...