Re: 4.9.0 regression in pipe-backed iov_iter with systemd-nspawn

From: Alan J. Wylie
Date: Fri Jan 13 2017 - 02:34:51 EST


at 15:28 on Thu 12-Jan-2017 Linus Torvalds (torvalds@xxxxxxxxxxxxxxxxxxxx) wrote:

> So assuming Al hasn't figured it out by the time you get back, can
> you try to send us the same strace for the working case?

Full output at https://wylie.me.uk/tmp/strace1.txt

# uname -a
Linux frodo 4.8.17 #1 SMP PREEMPT Fri Jan 13 06:54:26 GMT 2017 x86_64 AMD FX(tm)-8350 Eight-Core Processor AuthenticAMD GNU/Linux

1738 close(2) = 0
1738 exit_group(0) = ?
1738 +++ exited with 0 +++
1735 <... epoll_wait resumed> [{EPOLLIN, {u32=1570273664, u64=94155843336576}}], 7, -1) = 1
1735 clock_gettime(CLOCK_BOOTTIME, {292, 912429255}) = 0
1735 read(13, "\21\0\0\0\0\0\0\0\1\0\0\0\312\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 128) = 128
1735 epoll_ctl(11, EPOLL_CTL_DEL, 1, NULL) = 0
1735 epoll_ctl(11, EPOLL_CTL_DEL, 5, NULL) = 0
1735 signalfd4(13, [INT TERM CHLD], 8, SFD_CLOEXEC|SFD_NONBLOCK) = 13
1735 fcntl(0, F_GETFL) = 0 (flags O_RDONLY)
1735 fcntl(1, F_GETFL) = 0x1 (flags O_WRONLY)
1735 kill(1738, SIGKILL) = 0
1735 waitid(P_PID, 1738, {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1738, si_uid=0, si_status=0, si_utime=0, si_stime=0}, WEXITED, NULL) = 0
1735 close(6) = 0
1735 close(7) = 0
1735 close(8) = 0
1735 close(9) = 0
1735 close(18) = 0
1735 close(16) = 0
1735 close(14) = 0
1735 close(10) = 0
1735 copy_file_range(5, NULL, 1, NULL, 9223372036854775807, 0) = -1 EXDEV (Invalid cross-device link)
1735 sendfile(1, 5, NULL, 9223372036854775807) = -1 EINVAL (Invalid argument)
1735 splice(5, NULL, 1, NULL, 9223372036854775807, 0) = -1 EAGAIN (Resource temporarily unavailable)
1735 open("/run/systemd/nspawn/propagate/chroot.32", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW|O_NOATIME|O_CLOEXEC) = 6
1735 fstatfs(6, {f_type=TMPFS_MAGIC, f_bsize=4096, f_blocks=1020314, f_bfree=1015930, f_bavail=1015930, f_files=1020314, f_ffree=1019308, f_fsid={0, 0}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOSUID|ST_NODEV}) = 0
1735 fstat(6, {st_mode=S_IFDIR|0600, st_size=40, ...}) = 0
1735 fcntl(6, F_GETFL) = 0x78800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW|O_NOATIME)
1735 fcntl(6, F_SETFD, FD_CLOEXEC) = 0
1735 getdents(6, /* 2 entries */, 32768) = 48
1735 getdents(6, /* 0 entries */, 32768) = 0
1735 close(6) = 0
1735 rmdir("/run/systemd/nspawn/propagate/chroot.32") = 0
1735 unlink("/work/.#chroot.32.lck") = 0
1735 close(3) = 0
1735 unlink("/run/systemd/nspawn/locks/inode-65035:24641537") = 0
1735 close(4) = 0
1735 close(5) = 0
1735 exit_group(0) = ?
1735 +++ exited with 0 +++


>From within the systemd-nspawn (no KVM or similar virtualisation involved):

Fri Jan 13 07:08:01 GMT 2017
+ date
Fri Jan 13 07:08:01 GMT 2017
+ cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,nosuid,size=4039360k,nr_inodes=1009840,mode=755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup
+rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
/dev/mapper/vg0-root / ext4 rw,relatime,data=ordered 0 0
/dev/mapper/vg0-usr /usr ext4 rw,relatime,data=ordered 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=31,pgrp=1,timeout=0,minproto=5,maxproto=5,direct 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev 0 0
/dev/mapper/vg1-work /work ext4 rw,relatime,data=ordered 0 0
/dev/mapper/vg1-home /home ext4 rw,relatime,data=ordered 0 0
/dev/sda1 /boot ext4 rw,relatime,data=ordered 0 0
/dev/mapper/vg0-var /var ext4 rw,relatime,data=ordered 0 0
/dev/mapper/vg0-srv /srv ext4 rw,relatime,data=ordered 0 0
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=816248k,mode=700,uid=1000,gid=100 0 0
+ strace -f -o /var/tmp/strace.txt systemd-nspawn -q -D /work/chroot.32 --register=no date
Fri Jan 13 07:08:01 GMT 2017
+ date
Fri Jan 13 07:08:01 GMT 2017
Fri Jan 13 07:08:01 GMT 2017


--
Alan J. Wylie http://www.wylie.me.uk/

Dance like no-one's watching. / Encrypt like everyone is.
Security is inversely proportional to convenience