From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754255AbcFGLji (ORCPT ); Tue, 7 Jun 2016 07:39:38 -0400 Received: from mail-am1on0111.outbound.protection.outlook.com ([157.56.112.111]:26510 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752023AbcFGLjg (ORCPT ); Tue, 7 Jun 2016 07:39:36 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; Subject: Re: [PATCH 5/6] x86/ptrace: down with test_thread_flag(TIF_IA32) To: Oleg Nesterov References: <1464786697-20639-1-git-send-email-dsafonov@virtuozzo.com> <1464786697-20639-6-git-send-email-dsafonov@virtuozzo.com> <20160606211918.GB23681@redhat.com> CC: , , , , , , <0x7f454c46@gmail.com>, , , , Andy Lutomirski From: Dmitry Safonov Message-ID: Date: Tue, 7 Jun 2016 14:38:15 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 MIME-Version: 1.0 In-Reply-To: <20160606211918.GB23681@redhat.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM3PR07CA0019.eurprd07.prod.outlook.com (10.141.45.147) To VI1PR0801MB1294.eurprd08.prod.outlook.com (10.167.197.144) X-MS-Office365-Filtering-Correlation-Id: 6ca383e3-af47-48ad-6d97-08d38ec8647d X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1294;2:MJD6KQzGObOmtTTfJGGFTpnJobZWqOJJZPylFircOzCXOxn7YGO09LZMC6oGllGD40dixRHDnpRl9QyAvWVWGQdj+3+4yPgLQWCE+cPl4ejGdobKqch70yZ6p5teebjHWDeT6RrFrK51NsgsYmbGXk7DR8kAIEg+a+CK0BefntIOTJSK0qgbyhvYnleAIZfS;3:ztq0wrUxbBpWBD8CSObBC6nlv9nugk69A2qKFH4ohPCsWTowXePUhUy3l4g1+Hx2jikxAYuYndhe2fEdxmClWVvPn9bCFNAhollye+LlRwOxw8i+Z0Z9bZ8kTglWvoBb;25:fRQz88OqMFYw4EjdcpyGxxj+lfAGzos5VOUNBTWCgdLmOEjB/5mf54A9ZvPhlrSqFOHHbbATnVA1TcygBH8bm6/AhZUtKvEFb7Oh3MjPkX80ierajHH+B/iANpktnoZ+R1NoWidtyNe9NCbKHR+NbWoWuEydIuvesLnTIL/B0BxvaR6QFLSw+RGqKNuF0P68YxCfGHhxcHOIrfdQAIuk9wQ0GiTGXrC1lKDYdoo3efD0/ytPRRgEPtuR+r6tginbGafJLnCup/8DN0t2+A5gRIxOwyNeVi2ERJZkId8ZHl8lLNcr/Tq3GrM7uubyzFzrOORXlZmtASw1kZrad6k3oAeXs8VrQzRORMkJ8KgXyMSFVuPIbv0zJ+eWzWpaRne1kV/uY0EqXD01uDXCkHbJQ9n7rp2j9Chvofbk8C7U8x8= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1294; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041072)(6043046);SRVR:VI1PR0801MB1294;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1294; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1294;4:r6hb4zyFInX8bf5siHXm139BA6FqtxTiqhPVl7mx0EFoQChXS01VEGr8g/mgL/Ma9acVlAm1xZp3k15loASv7KmccgBmQq/weZ68W+nuuOY7cPAjKWTgRYoTxBhMuu6d01zCnGuD/+fCP7L9U7pQ8ZuqCx0D8DLOzL1oIOl0viN6VEZcN+6PEukuVhIpYkwzZ57yIQ1H7PyflvhfORocMn1NDdXgnyu+abX+x0css1+sXjlkQy8c3uMO7Ac+RtJUs1dwYDrOe4WH2SxDRtDZdDAclXf+ficvqdzf4h/hB9h6tUBMb+M6MNowwlOhMw2d+9hvmguXYVxEdEX8YND2uHKX5Ne5idazoEzeCKK37WmBQbTrMyeff2a59rUoTKc3WOuNY6zl66ktMX4TLzG3cAWIkcIIe8RBZtWSZPXOazs= X-Forefront-PRVS: 09669DB681 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(24454002)(199003)(189002)(377454003)(83506001)(586003)(3846002)(65956001)(64126003)(5890100001)(66066001)(189998001)(4001350100001)(5004730100002)(92566002)(105586002)(6116002)(65806001)(33646002)(106356001)(86362001)(77096005)(47776003)(97736004)(81166006)(81156014)(50466002)(110136002)(31696002)(76176999)(2950100001)(8676002)(36756003)(23746002)(68736007)(230700001)(31686004)(5008740100001)(2906002)(101416001)(4326007)(54356999)(42186005)(50986999)(65826006);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1294;H:[10.30.26.154];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;VI1PR0801MB1294;23:wMoGt5yscpUSDUoZI60l4/Hk4K7v4/BwGh1?= =?Windows-1252?Q?SKCfJKU27lFhentvYXrSLVnxUSu/vjz9SUbgpYeRWIecYHVqfAf1geEV?= =?Windows-1252?Q?M9pj63jlH0o+2I9rmCTlCwKKE4q/kclBjgiJO+KaPhkaNxSyIJrNatx5?= =?Windows-1252?Q?V3RxcKqZqNZJvK6UmiCWzkw86FyIeIU5frRUDCyUTFDOJaU7bCnt7vfR?= =?Windows-1252?Q?sq/NGrUB+H8/jlMIgpxWbCDB2cJNpxVRy9384JwFAvnk/BDzX1yoNvgK?= =?Windows-1252?Q?LIL0njtKFULo/nDivFEFp48ap1VwJB5yOKuurAcgJf5vYkraITSQlNc8?= =?Windows-1252?Q?s3LTDqnA7f7ETrqREy+VafaxpIE9/J/fy9ZM0u4DweWAagJYFAi41Vqs?= =?Windows-1252?Q?mD97qxppxUWUCMT/76ReN9/2+QZh44k5oAFnnhNQOdvxzhcJ7NZ5SwhE?= =?Windows-1252?Q?b0F5/RNFpAVGZiBr0CzrV99TdKi6B3PngGYlQV7Dhv4rdDZzNLFyyTvK?= =?Windows-1252?Q?iEgR4P/6CxUnZMreaKz2u1LuXq6nrXuQ2WkBGcP1A2VS6LX0bEnC5DZh?= =?Windows-1252?Q?cVe6EsHo8qjtAH9jZxWNFN/lLnrGxJgkxdWyse377PGHGoAB/80gehkQ?= =?Windows-1252?Q?KFzQEvdtQ2JudVNZPYtdgrDosv85uqiKNb0OV+cf4GvjL2XBJq7Dp1GK?= =?Windows-1252?Q?GcbqB4s3GLlKMb1pWwxmBr0nBrh3gNpe4u1bnPRjuSSNcUuaME9/OnJm?= =?Windows-1252?Q?Hlub828+sCrtLx3f5CUJaSzZFnBLCxm/l+peGWh88lW21GJsJEnWweXw?= =?Windows-1252?Q?+sfHVTolmwcv7W8y11nthnwiv8U5BqlqLc5CMRU155Mh678EUTQ+nl+n?= =?Windows-1252?Q?f5YUG9cCq32anL3TgSq3sbqRCQ1qCn2RQRfLs0w+NAqA8oybovT2fJa1?= =?Windows-1252?Q?y+mFOJTmbWLI0kaDzaaCtyNJpYWivN+jCGPutJcseW7sGxAoBeLNCM2Z?= =?Windows-1252?Q?qor4V+7QuL/UL8is7PCB/vtavBocKUabsaRFZjtAnZjUcossidcgPyHR?= =?Windows-1252?Q?e2hWob3I09klDqe/GSpuzQWwvF+sZctClSgVeRKDcI7jlcK8poEmZA7p?= =?Windows-1252?Q?jDn9rHVMswDSYiSVBnsxBiUNW5TDVxN6LGjvXPmxg6JV5k7X33Usw7Zo?= =?Windows-1252?Q?Milr8ETGSg4lAlEZW9e1NjqxfpkyPuGqwixhSlqPVFEE71sRTBTMFRkv?= =?Windows-1252?Q?7AtNMdPtr2VIXxMynN2i0tF1sipapYnV38tvlOkfjIF/NzHsGq6Zk66G?= =?Windows-1252?Q?cOEVtKUhq7u7a/Ue99sPYGpM5/A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1294;5:3Sje8qg0t0mam9cwKl8TrSxf45xoehE2z1fQGbJmJwX5OD0Xwqv/G9qi7YSSz9UXFUaMSr0L7zvhgkufKtGw5ZXvvtrBRFhtb32wawpQx7hCpsT/LiOodOErz+yhOa9JanM1MKaBR4nqUdhULHB+bw==;24:AQpg0YliGVUg6I7dTaEywQJBo3WZAbt3E7xQVMOWPatWqLtC+JBxGq6mUNZPAbbkICzy8Ub3Y4yTK3xCuIyOrpqX+Fv+ZiijT3NRSZ/MNw0=;7:NZLB6pSmCWUL3rTN/iT9h+0pJGbw5GA6aFjH1l4SOKKbXKHwvBHJmIdVQZQh2RjQPseoFKuWe5siT6nxeHsdtMPbs5zgCff6Oc+q5Y1RP/z886lG2mVISC3pp/NMJ9uvie4NcLE/eEX/lfU5wyOfbhLGj5wAy592xvDbxQGdDzg7joF+urYh48DNoFaWv8wmHVRh5f9usOuMKfNVY9Szpw4t4+rw31zRZl1vYQc6o6M=;20:aTWLIYXs5XlXK088rfOQPZc1aOLNadHulaNL/grM6Oam2Y0T/Ky8i9pp6+ySj9Rt+vAZGUchjZW7T17RTcVlBvXI6XBSnE3kjowWrDi3aGa3NY4zwal7IvIvUO9x0sd4Jrjrapr6L/hwI6rGat0stwBR0TuUhl8ZoWZauL6n5lk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2016 11:39:30.9447 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1294 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/07/2016 12:19 AM, Oleg Nesterov wrote: > On 06/01, Dmitry Safonov wrote: >> >> Note, that this will work only if application has changed it's CS. > > So, suppose it changes it's CS and crashes, > >> If the application does 32-bit syscall with __USER_CS, ptrace >> @@ -1355,7 +1355,7 @@ void update_regset_xstate_info(unsigned int size, u64 xstate_mask) >> const struct user_regset_view *task_user_regset_view(struct task_struct *task) >> { >> #ifdef CONFIG_IA32_EMULATION >> - if (test_tsk_thread_flag(task, TIF_IA32)) >> + if (!user_64bit_mode(task_pt_regs(task))) >> #endif > > then coredump will do fill_elf_header(view->e_machine) and use EM_X86_64 > instead of EM_386, or vice versa... > > I simply can't understand is this better or worse, I guess gdb or any > other tool which looks at this coredump will be confused anyway. Oleg, thanks for your reply! At least, gdb will have all registers at that moment. Firstly, I did it for returning with GET_REGSET corresponding register set. So ptrace-attaching to a task with 64-bit code selector would return 64-bit register set and contrariwise. (as task may use all 64-bit registers, that seems logical for me even if it has been loaded as 32-bit ELF) And for coredump -- I guess it will show full register set on the crash moment and show proper disasm around that place. And for my purpose -- that's really what I need, to generate 32-bit ELF core file on crash after changing CS. I did it for C/R of 32-bit application with changing code selector from 64-bit. So last thing restorer does - unmap itself (it's pie blob) and sigreturn to application. So if the application crashes after it - it will be good to have 32-bit coredump as for the original application. Thanks, Dmitry Safonov