• Kir Kolyshkin's avatar
    zdtm/grow_map: fix test failure for clang · 391bdbe4
    Kir Kolyshkin authored
    When this code is compiled by clang, it optimizes two byte writes into
    one word write, like this:
    
    >        fake_grow_down[0] = 'c';
    >        *(fake_grow_down - 1) = 'b';
    > 401b60:       66 41 c7 46 ff 62 63    movw   $0x6362,-0x1(%r14)
    
    This is incorrect, as the stack is supposed to grow page by page,
    so we need to touch one page then another, i.e. the order is important.
    
    To fix, let's use volatile pointer. After this change, the following
    (correct) code is generated:
    
    >        *p-- = 'c';
    >   401b60:       41 c6 06 63             movb   $0x63,(%r14)
    >        *p = 'b';
    >   401b64:       41 c6 46 ff 62          movb   $0x62,-0x1(%r14)
    
    [v2: same fix for another similar place]
    
    Cc: Andrei Vagin <avagin@virtuozzo.com>
    Signed-off-by: 's avatarKir Kolyshkin <kir@openvz.org>
    Acked-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    391bdbe4
Name
Last commit
Last update
..
lib Loading commit data...
Makefile Loading commit data...
aio00.c Loading commit data...
aio00.desc Loading commit data...
aio01.c Loading commit data...
aio01.desc Loading commit data...
apparmor.c Loading commit data...
apparmor.checkskip Loading commit data...
apparmor.desc Loading commit data...
apparmor.profile Loading commit data...
arm-neon00.c Loading commit data...
arm-neon00.desc Loading commit data...
auto_dev-ioctl.h Loading commit data...
autofs.c Loading commit data...
autofs.desc Loading commit data...
bind-mount.c Loading commit data...
bind-mount.desc Loading commit data...
binfmt_misc.c Loading commit data...
binfmt_misc.desc Loading commit data...
bridge.c Loading commit data...
bridge.desc Loading commit data...
busyloop00.c Loading commit data...
caps00.c Loading commit data...
caps00.desc Loading commit data...
cgroup00.c Loading commit data...
cgroup00.desc Loading commit data...
cgroup00.hook Loading commit data...
cgroup01.c Loading commit data...
cgroup01.desc Loading commit data...
cgroup01.hook Loading commit data...
cgroup02.c Loading commit data...
cgroup02.desc Loading commit data...
cgroup02.hook Loading commit data...
cgroup03.c Loading commit data...
cgroup03.desc Loading commit data...
cgroup03.hook Loading commit data...
cgroup04.c Loading commit data...
cgroup04.desc Loading commit data...
cgroup04.hook Loading commit data...
cgroup_stray.c Loading commit data...
cgroup_stray.desc Loading commit data...
cgroupns.c Loading commit data...
cgroupns.desc Loading commit data...
child_opened_proc.c Loading commit data...
chroot-file.c Loading commit data...
chroot-file.desc Loading commit data...
chroot.c Loading commit data...
chroot.desc Loading commit data...
clean_mntns.c Loading commit data...
clean_mntns.desc Loading commit data...
clone_fs.c Loading commit data...
cmdlinenv00.c Loading commit data...
cmdlinenv00.desc Loading commit data...
conntracks Loading commit data...
conntracks.desc Loading commit data...
console.c Loading commit data...
console.desc Loading commit data...
cow00.c Loading commit data...
cow00.desc Loading commit data...
cow01.c Loading commit data...
cow01.desc Loading commit data...
criu-rtc.c Loading commit data...
criu-rtc.proto Loading commit data...
cwd00.c Loading commit data...
cwd01.c Loading commit data...
cwd02.c Loading commit data...
del_standalone_un.c Loading commit data...
del_standalone_un.desc Loading commit data...
deleted_dev.c Loading commit data...
deleted_dev.desc Loading commit data...
deleted_unix_sock.c Loading commit data...
different_creds.c Loading commit data...
different_creds.desc Loading commit data...
dumpable01.c Loading commit data...
dumpable02.c Loading commit data...
dumpable02.desc Loading commit data...
env00.c Loading commit data...
eventfs00.c Loading commit data...
fanotify00.c Loading commit data...
fanotify00.desc Loading commit data...
fd.c Loading commit data...
fdt_shared.c Loading commit data...
fifo-ghost.c Loading commit data...
fifo-rowo-pair.c Loading commit data...
fifo.c Loading commit data...
fifo_ro.c Loading commit data...
fifo_wronly.c Loading commit data...
file_append.c Loading commit data...
file_attr.c Loading commit data...
file_fown.c Loading commit data...
file_fown.desc Loading commit data...
file_locks00.c Loading commit data...
file_locks00.desc Loading commit data...
file_locks01.c Loading commit data...
file_locks01.desc Loading commit data...
file_locks02.c Loading commit data...
file_locks02.desc Loading commit data...
file_locks03.c Loading commit data...
file_locks03.desc Loading commit data...
file_locks04.c Loading commit data...
file_locks04.desc Loading commit data...
file_locks05.c Loading commit data...
file_locks05.desc Loading commit data...
file_shared.c Loading commit data...
fpu00.c Loading commit data...
fpu00.desc Loading commit data...
fpu01.c Loading commit data...
fpu01.desc Loading commit data...
futex-rl.c Loading commit data...
futex.c Loading commit data...
get_smaps_bits.c Loading commit data...
groups.c Loading commit data...
groups.desc Loading commit data...
grow_map.c Loading commit data...
grow_map02.c Loading commit data...
grow_map03.c Loading commit data...
helper_zombie_child.c Loading commit data...
helper_zombie_child.desc Loading commit data...
inotify00.c Loading commit data...
inotify00.desc Loading commit data...
inotify01.c Loading commit data...
inotify01.desc Loading commit data...
inotify02.c Loading commit data...
inotify02.desc Loading commit data...
inotify_irmap.c Loading commit data...
inotify_irmap.desc Loading commit data...
inotify_irmap.hook Loading commit data...
inotify_system.c Loading commit data...
inotify_system.desc Loading commit data...
inotify_system_nodel.c Loading commit data...
inotify_system_nodel.desc Loading commit data...
ipc_namespace.c Loading commit data...
ipc_namespace.desc Loading commit data...
jobctl00.c Loading commit data...
link10.c Loading commit data...
loginuid.c Loading commit data...
loginuid.desc Loading commit data...
maps00.c Loading commit data...
maps01.c Loading commit data...
maps01.desc Loading commit data...
maps02.c Loading commit data...
maps03.c Loading commit data...
maps03.desc Loading commit data...
maps04.c Loading commit data...
maps05.c Loading commit data...
maps06.c Loading commit data...
maps_file_prot.c Loading commit data...
mem-touch.c Loading commit data...
mem-touch.desc Loading commit data...
mlock_setuid.c Loading commit data...
mlock_setuid.desc Loading commit data...
mmx00.c Loading commit data...
mmx00.desc Loading commit data...
mnt_enablefs.c Loading commit data...
mnt_enablefs.checkskip Loading commit data...
mnt_enablefs.desc Loading commit data...
mnt_ext_auto.c Loading commit data...
mnt_ext_auto.desc Loading commit data...
mnt_ext_dev.c Loading commit data...
mnt_ext_dev.desc Loading commit data...
mnt_ext_master.c Loading commit data...
mnt_ext_master.desc Loading commit data...
mnt_ro_bind.c Loading commit data...
mnt_ro_bind.desc Loading commit data...
mnt_tracefs.c Loading commit data...
mnt_tracefs.checkskip Loading commit data...
mnt_tracefs.desc Loading commit data...
mntns_deleted.c Loading commit data...
mntns_deleted.desc Loading commit data...
mntns_ghost.c Loading commit data...
mntns_ghost.desc Loading commit data...
mntns_link_ghost.c Loading commit data...
mntns_link_ghost.desc Loading commit data...
mntns_link_remap.c Loading commit data...
mntns_link_remap.desc Loading commit data...
mntns_open.c Loading commit data...
mntns_open.desc Loading commit data...
mntns_overmount.c Loading commit data...
mntns_overmount.desc Loading commit data...
mntns_ro_root.c Loading commit data...
mntns_ro_root.desc Loading commit data...
mntns_root_bind.c Loading commit data...
mntns_root_bind.desc Loading commit data...
mntns_root_bind02.c Loading commit data...
mntns_root_bind02.desc Loading commit data...
mntns_rw_ro_rw.c Loading commit data...
mntns_rw_ro_rw.desc Loading commit data...
mntns_shared_bind.c Loading commit data...
mntns_shared_bind.desc Loading commit data...
mntns_shared_bind02.c Loading commit data...
mntns_shared_bind02.desc Loading commit data...
mntns_shared_vs_private.c Loading commit data...
mntns_shared_vs_private.desc Loading commit data...
mount_paths.c Loading commit data...
mount_paths.desc Loading commit data...
mountpoints.c Loading commit data...
mountpoints.desc Loading commit data...
mprotect00.c Loading commit data...
msgque.c Loading commit data...
msgque.desc Loading commit data...
mtime_mmap.c Loading commit data...
netns-dev.c Loading commit data...
netns-dev.desc Loading commit data...
netns-nf.c Loading commit data...
netns-nf.desc Loading commit data...
netns.c Loading commit data...
netns.desc Loading commit data...
oom_score_adj.c Loading commit data...
overmount_dev.c Loading commit data...
overmount_dev.desc Loading commit data...
overmount_fifo.c Loading commit data...
overmount_fifo.desc Loading commit data...
overmount_file.c Loading commit data...
overmount_file.desc Loading commit data...
overmount_sock.c Loading commit data...
overmount_sock.desc Loading commit data...
packet_sock.c Loading commit data...
packet_sock.desc Loading commit data...
packet_sock_mmap.c Loading commit data...
packet_sock_mmap.desc Loading commit data...
pdeath_sig.c Loading commit data...
pid00.c Loading commit data...
pid00.desc Loading commit data...
pipe00.c Loading commit data...
pipe01.c Loading commit data...
pipe02.c Loading commit data...
poll.c Loading commit data...
poll.desc Loading commit data...
posix_timers.c Loading commit data...
proc-self.c Loading commit data...
pstree.c Loading commit data...
pthread00.c Loading commit data...
pthread01.c Loading commit data...
pthread02.c Loading commit data...
pthread02.desc Loading commit data...
ptrace_sig.c Loading commit data...
ptrace_sig.desc Loading commit data...
pty00.c Loading commit data...
pty01.c Loading commit data...
pty01.desc Loading commit data...
pty02.c Loading commit data...
pty03.c Loading commit data...
pty03.desc Loading commit data...
pty04.c Loading commit data...
remap_dead_pid.c Loading commit data...
remap_dead_pid.desc Loading commit data...
remap_dead_pid_root.c Loading commit data...
remap_dead_pid_root.desc Loading commit data...
rlimits00.c Loading commit data...
rmdir_open.c Loading commit data...
route_rules Loading commit data...
rtc.c Loading commit data...
rtc.desc Loading commit data...
sched_policy00.c Loading commit data...
sched_policy00.desc Loading commit data...
sched_prio00.c Loading commit data...
sched_prio00.desc Loading commit data...
seccomp_filter.c Loading commit data...
seccomp_filter.desc Loading commit data...
seccomp_filter_inheritance.c Loading commit data...
seccomp_filter_inheritance.desc Loading commit data...
seccomp_filter_tsync.c Loading commit data...
seccomp_filter_tsync.desc Loading commit data...
seccomp_strict.c Loading commit data...
seccomp_strict.desc Loading commit data...
selfexe00.c Loading commit data...
sem.c Loading commit data...
sem.desc Loading commit data...
session00.c Loading commit data...
session00.desc Loading commit data...
session01.c Loading commit data...
session01.desc Loading commit data...
session02.c Loading commit data...
session02.desc Loading commit data...
session03.c Loading commit data...
session03.desc Loading commit data...
shm-mp.c Loading commit data...
shm-mp.desc Loading commit data...
shm-unaligned.c Loading commit data...
shm-unaligned.desc Loading commit data...
shm.c Loading commit data...
shm.desc Loading commit data...
sigaltstack.c Loading commit data...
signalfd00.c Loading commit data...
sigpending.c Loading commit data...
sk-freebind-false.c Loading commit data...
sk-freebind.c Loading commit data...
sk-netlink.c Loading commit data...
sk-netlink.desc Loading commit data...
sk-unix-rel.c Loading commit data...
sk-unix-unconn.c Loading commit data...
skip-me.c Loading commit data...
sleeping00.c Loading commit data...
sock_filter.c Loading commit data...
sock_opts00.c Loading commit data...
sock_opts00.desc Loading commit data...
sock_opts01.c Loading commit data...
sock_opts01.desc Loading commit data...
socket-closed-tcp.c Loading commit data...
socket-closed-tcp.desc Loading commit data...
socket-ext.c Loading commit data...
socket-ext.desc Loading commit data...
socket-tcp-local.c Loading commit data...
socket-tcp-local.desc Loading commit data...
socket-tcp-nfconntrack.c Loading commit data...
socket-tcp-nfconntrack.desc Loading commit data...
socket-tcp.c Loading commit data...
socket-tcp.desc Loading commit data...
socket-tcp6-local.c Loading commit data...
socket-tcp6-local.desc Loading commit data...
socket-tcp6.c Loading commit data...
socket-tcp6.desc Loading commit data...
socket-tcpbuf-local.c Loading commit data...
socket-tcpbuf-local.desc Loading commit data...
socket-tcpbuf.c Loading commit data...
socket-tcpbuf.desc Loading commit data...
socket-tcpbuf6-local.c Loading commit data...
socket-tcpbuf6-local.desc Loading commit data...
socket-tcpbuf6.c Loading commit data...
socket-tcpbuf6.desc Loading commit data...
socket6_udp.c Loading commit data...
socket_aio.c Loading commit data...
socket_aio.desc Loading commit data...
socket_close_data.c Loading commit data...
socket_close_data01.c Loading commit data...
socket_dgram_data.c Loading commit data...
socket_listen.c Loading commit data...
socket_listen6.c Loading commit data...
socket_queues.c Loading commit data...
socket_snd_addr.c Loading commit data...
socket_snd_addr.desc Loading commit data...
socket_udp.c Loading commit data...
socket_udplite.c Loading commit data...
sockets00.c Loading commit data...
sockets00.desc Loading commit data...
sockets01.c Loading commit data...
sockets02.c Loading commit data...
sockets03.c Loading commit data...
sockets03.desc Loading commit data...
sockets_dgram.c Loading commit data...
sockets_spair.c Loading commit data...
sse00.c Loading commit data...
sse00.desc Loading commit data...
sse20.c Loading commit data...
sse20.desc Loading commit data...
stopped.c Loading commit data...
stopped01.c Loading commit data...
stopped02.c Loading commit data...
stopped12.c Loading commit data...
tempfs.c Loading commit data...
tempfs.desc Loading commit data...
tempfs_overmounted.c Loading commit data...
tempfs_overmounted.desc Loading commit data...
tempfs_overmounted01.c Loading commit data...
tempfs_overmounted01.desc Loading commit data...
tempfs_ro.c Loading commit data...
tempfs_ro.desc Loading commit data...
tempfs_subns.c Loading commit data...
tempfs_subns.desc Loading commit data...
timerfd.c Loading commit data...
timerfd.desc Loading commit data...
timers.c Loading commit data...
tty00.c Loading commit data...
tty02.c Loading commit data...
tty03.c Loading commit data...
tun.c Loading commit data...
tun.desc Loading commit data...
umask00.c Loading commit data...
unbound_sock.c Loading commit data...
unhashed_proc.c Loading commit data...
unhashed_proc.desc Loading commit data...
unlink_fifo.c Loading commit data...
unlink_fifo_wronly.c Loading commit data...
unlink_fstat00.c Loading commit data...
unlink_fstat00.hook Loading commit data...
unlink_fstat01+.c Loading commit data...
unlink_fstat01.c Loading commit data...
unlink_fstat02.c Loading commit data...
unlink_fstat03.c Loading commit data...
unlink_fstat03.desc Loading commit data...
unlink_fstat04.c Loading commit data...
unlink_fstat04.desc Loading commit data...
unlink_largefile.c Loading commit data...
unlink_largefile.desc Loading commit data...
unlink_mmap00.c Loading commit data...
unlink_mmap00.desc Loading commit data...
unlink_mmap01.c Loading commit data...
unlink_mmap01.desc Loading commit data...
unlink_mmap02.c Loading commit data...
unlink_mmap02.desc Loading commit data...
unlink_regular00.c Loading commit data...
unlink_regular00.desc Loading commit data...
uptime_grow.c Loading commit data...
uptime_grow.desc Loading commit data...
utsname.c Loading commit data...
utsname.desc Loading commit data...
vdso00.c Loading commit data...
vdso01.c Loading commit data...
vdso01.desc Loading commit data...
vfork00.c Loading commit data...
vfork00.desc Loading commit data...
vsx.c Loading commit data...
vsx.desc Loading commit data...
vt.c Loading commit data...
vt.desc Loading commit data...
wait00.c Loading commit data...
write_read00.c Loading commit data...
write_read01.c Loading commit data...
write_read02.c Loading commit data...
write_read10.c Loading commit data...
xids00.c Loading commit data...
zombie00.c Loading commit data...