{"push_id":1192707149,"size":3,"distinct_size":3,"ref":"refs/heads/cr-exec","head":"0d51b4e29b762b92696ad626ed3c5ad66bee2185","before":"5055e139070d464ee165b5c63bde7753e18a0ebc","commits":[{"sha":"a7613803b17890b93021999899da92fea4db41f9","author":{"name":"Dmitry Safonov","email":"fb751bce281cbc2ea7a54591daf82af5108a0d1e@virtuozzo.com"},"message":"cr-exec: check syscall's number right before injecting it\n\nSo, I made a mistake in find_syscall: it can't use arch_task_compatible\nto find out in which mode the application is (native/compat).\nThe reason is that arch_task_compatible uses PTRACE_GETREGSET.\nAnd at the moment of find_syscall we haven't yet seized the task.\n\nIn this patch I move syscall's number check right before injecting\na syscall, where we have parasite_ctl with all needed information\nabout task's mode.\nThis makes error-path for wrong syscall number longer and subtler\n(includes curing now), but I think it's a corner-case, so as\nit makes error-less path to execute_syscall shorter and without\nadditional ptrace syscalls, it's better.\n\nReported-by: Andrew Vagin <avagin@virtuozzo.com>\nCc: Andrew Vagin <avagin@virtuozzo.com>\nCc: Cyrill Gorcunov <gorcunov@openvz.org>\nSigned-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>","distinct":true,"url":"https://api.github.com/repos/0x7f454c46/criu/commits/a7613803b17890b93021999899da92fea4db41f9"},{"sha":"cb6af4375c13894e073d38793a3c600546c4d78f","author":{"name":"Dmitry Safonov","email":"fb751bce281cbc2ea7a54591daf82af5108a0d1e@virtuozzo.com"},"message":"cr-exec: initialize kdat.{task_size,has_compat_sigreturn} on criu exec\n\nFor `criu exec` we are searching for a place for syscall injection.\nWhile searching for a VMA with PROT_EXEC and with needed size,\nwe check that VMA is lower than task_size.\nThe callpath for it is:\ncr_exec => parasite_prep_ctl => get_vma_by_ip\n\nFirstly, I thought to omit kdat.task_size checking if it's not inited:\n> if (vma_area->e->start >= kdat.task_size && kdat.task_size)\nbut I think it's a hack then a proper solution.\nBesides, this code still can choose VMA over task_size on ARM\nand try to inject syscall there (IIRC, ARM has kernel-mapped\nVMA in that area).\n\nSo, lets init kdat.task_size for `criu exec`.\nAlso lets init kdat.has_compat_sigreturn so we could exec into\ncompatible applications.\n\nCc: Christopher Covington <cov@codeaurora.org>\nCc: Andrew Vagin <avagin@virtuozzo.com>\nCc: Cyrill Gorcunov <gorcunov@openvz.org>\nSigned-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>","distinct":true,"url":"https://api.github.com/repos/0x7f454c46/criu/commits/cb6af4375c13894e073d38793a3c600546c4d78f"},{"sha":"0d51b4e29b762b92696ad626ed3c5ad66bee2185","author":{"name":"Dmitry Safonov","email":"fb751bce281cbc2ea7a54591daf82af5108a0d1e@virtuozzo.com"},"message":"parasite-syscall: cure task without parasite with unmap\n\nIn case of `criu exec`, we do not insert parasite daemon inside task.\nSo, we don't have the daemon which could unmap itself and by that\nreason, we should unmap remote_map with hands (raw syscall).\n\nCc: Andrew Vagin <avagin@virtuozzo.com>\nCc: Cyrill Gorcunov <gorcunov@openvz.org>\nSigned-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>","distinct":true,"url":"https://api.github.com/repos/0x7f454c46/criu/commits/0d51b4e29b762b92696ad626ed3c5ad66bee2185"}]}
{"actor":{"display_login":"0x7f454c46"}}