From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752026AbcJBBMh (ORCPT ); Sat, 1 Oct 2016 21:12:37 -0400 Received: from mail-co1nam03on0132.outbound.protection.outlook.com ([104.47.40.132]:12000 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751082AbcJBBMc (ORCPT ); Sat, 1 Oct 2016 21:12:32 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57F05EE9.20702@hpe.com> Date: Sat, 1 Oct 2016 21:12:09 -0400 From: Waiman Long User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130109 Thunderbird/10.0.12 MIME-Version: 1.0 To: Thomas Gleixner CC: Ingo Molnar , Peter Zijlstra , Jonathan Corbet , , , Arnaldo Carvalho de Melo , Davidlohr Bueso , Mike Galbraith , Jason Low , Scott J Norton , Douglas Hatch Subject: Re: [PATCH v3 07/13] futex: Throughput-optimized (TP) futexes References: <1475270782-51720-1-git-send-email-Waiman.Long@hpe.com> <1475270782-51720-8-git-send-email-Waiman.Long@hpe.com> In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.63] X-ClientProxiedBy: BY2PR05CA058.namprd05.prod.outlook.com (10.141.250.48) To CS1PR84MB0309.NAMPRD84.PROD.OUTLOOK.COM (10.162.189.158) X-MS-Office365-Filtering-Correlation-Id: 05c9b8f5-417f-438d-dfea-08d3ea612e2a X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0309;2:3PAkrZI0P8s0EkKFROFSYu1549/3k+2oGWgtaNPFnBTG3hJWueEvLlxCzk9w/o4i/Wtss0Umo6NfUlD+AvuuRVm6w8sWni2TPG1PYzgHH1Jfs1g5WJbyfuB10aLCV5nzRbE6E5T7Iyhx0141//58wcdDHigQQcar20pdG2+4tnLoSNUgDFrel6sWoh51khe1;3:mm3nCVpPFU9Qvy8qw32wOSCcgTkdR+zhmXVogJeAI/ncF62A/YR6a1+TQypuuwc+u562pgSuqP+TslwSKjcP9gDz+GyoV2JGs73e1MGT6OeB+HR5B6spQ7hNpFjm1qXQ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0309; X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0309;25:pM658hiKM0mNea4TDPD+syIQtdVM3lgAVeyChdQZC1KJzEhT2LSvIoIe//wWAn6pk6aQjR+jYHXYaYxuqeMWI2/YsXOW36pseqeT+itXn4i10IqZiHTGkU3BAOFUw++dlj2wjFHp39r3jgQpD/s3cHmwGYKCvlaGgmz8X8devQjC4wtKEEvpmbcholbAZ+76kLNPkCODKlM9/LRtbdS3JRSKKIGgy2cIcqq2rb6MiuP/oMJCX6ODnKGcoGnxr/HEZIZkocjN5a169yYeOMIOPgpMCyAQRt1sMSdMO1AyCtgWU04eLBwBzjW8ng9OdLzsWfOof4PmvnsQ0YPZ6bZiDn6A0GfL8Qa1aEjU9S0UOZ34CPwelOhIii4v07tNu9yY1lZIDXdSvjrIQXBWQLtARMZVtZLekaQE81AeTJINLNI/QxgDiPKUwGtTJGz0BlI07qez1vQz+YXlwx8O5vMh4O9yNDUa++SSK4AjcZdgwy9EpNzZEEe50G0UhM2WLdl7OQODKlaqKYxawlBzyJTxpJOevUD+NvqLUdhdspvY4Z0gywjaFvXqjHnycTg68w9rY5+IlV1+hwYNpJ/XYTOnLsxNRduqVqLE6jrVLEFlOa/FkzHoTrInMQrwaXOHekuAtKMHVNOhc52GbcddLEbM1/DC9NAK4EF9qDT5TqKYqqhtVurVeHUyTMSupqAbWpQn6b3F9hQeCmUek9ybIX7gTQ==;31:UmZ6YYBGLmJazZ/jgs2qp7r0Di0qkpsTnSJNDOlYNzd9VA2zV41wSv2LO8qzTqy6JjAlLkMtzCErknqqlL7l6ditkEmm4pBiOYoGQco7k5kOUCabDrnElPWX3xBkyWC/Y+hr+xWhFbN1FFpzSYtgOsx9seyC4l22ADuvIfEiXrUg7NuxPCivg00uX8Ly8Jha1TEkxhEAdkfdAGT3vYjFJtmMPcQTgRGoyq2q+ccm8Mo= X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0309;20:hHs5c+qWkPyHd0qO1ToH6CiRMG48ufm1yAxw58+CkdVVHhE7Osk2BMhagnjhG1JjuhDISdPbEgrxsMoDFOAk8jIZdnP6Aj+RbgLeHPNcKvO7kWzQx/452Zg/XZO2bzzhaYb6/DPzJkb4GoXuaoV2k9esO9d0aUbwslQ4h0+uENzvk6i/QpcsIRa4YfGDY/Krz69o7wlvqiUJAKSTqrHJMmVGVVZjZgXEBXmhQRvDsyfkf8Kr/9120VnpqF3h9GBR8Y2DT85t6krUJe+bTNLhwoko/x1PHdxJUJfiYZqLxTLJuJr9/7OjRwPOBQru875j9omMhgmLfUlNA+PF8J2iW21/gSE/tyCSfjexiZzN5F3n2yTm4BMwu1lY5E4zIAeBsjoXypo3Ij0r1qjlIQ9L5ILA1EueSjXbf2fMyUrpE6is3Iayvm2KNM1pJRpWF0QoOjJ94uxt8wJ0YZawu9cJrQl4CmyOXv1+QH9MSn+gSLt8QaCzT5Mxhy2UXjdv6bCJ;4:BkbsLfR688F+HfhaflvyS3w0G/Zb8xqslNocT+5+c+qK0GftycAoe7LLwxxwpA3f23dYbW55XWTp55++kyzv0J6hExYxC6C1qo6iAzqplTCD58O/WHOT7OBrxTY6MbDi07fdE3AJ6eDq2HYXmQuxNEJ9ZhJT/XmTH3s1+noEA+GfNqBaWBTWVm5o3p4aiaa5OtVK/tYg2NsrRP8PtWvrcyIH5qnoFvwlHKAF25bmnri7oscN4PbME+TfOWc1rzdkZIoyLtTE23TYL0cTh51ivPYDm44uDd43tzVQ8IxQajAfBY6/QB0mWot+Pd8RYxI34sqfIHwL2aa3hJ7PrNwZ14Zy0u+tZlI8V6uhucxO6MH82IXnbJlFo0rjG8H/cvBlJR7MZF9j3p/qtu26xSQwng== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:CS1PR84MB0309;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0309; X-Forefront-PRVS: 0083A7F08A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(189002)(24454002)(377454003)(199003)(189998001)(4326007)(105586002)(76176999)(64126003)(117156001)(23756003)(3846002)(230700001)(33656002)(586003)(6116002)(101416001)(2906002)(77096005)(5660300001)(50986999)(68736007)(106356001)(54356999)(65816999)(50466002)(65806001)(7846002)(2950100002)(66066001)(83506001)(92566002)(8676002)(6916009)(47776003)(110136003)(81166006)(42186005)(7736002)(86362001)(65956001)(97736004)(81156014)(305945005)(4001350100001)(6666003)(36756003);DIR:OUT;SFP:1102;SCL:1;SRVR:CS1PR84MB0309;H:[192.168.142.138];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CS1PR84MB0309;23:XJ0OQKJqxI80rlOgkgCr7ibHcSrK5ZNzgv9HfBy?= =?iso-8859-1?Q?ifE8O2L+IH1EDUBHZlhlBZV1uYGGWSHmK/WN7nlU6HBcxSe99XTqXIllqB?= =?iso-8859-1?Q?pbH9DA6Jn4CLhh6EudpF7k9jzTTh++u7cWz1bJWDzgYveVFska1xIvdLHD?= =?iso-8859-1?Q?926t4cX+CuEjx2zqbYSvv1CuFH0hRSdX3X4Wnu/xWufHAwy45rB0io/Z/k?= =?iso-8859-1?Q?LwEzMsX/nknoA+zs+Uh9D1s/i/A2L5cJQskhRJvepusZ3sm/vFoD8OZddn?= =?iso-8859-1?Q?CpOnNetF2qSnfzua+wsDKUPwDQzeB9jrQlfavhDJpDnJFNM8RS2fcDevqf?= =?iso-8859-1?Q?KxeQZz4AXg25mcZdJHUL9qAsuxxBaurUZDXmNSSZB6qnXDPszG/2Dv8/Bz?= =?iso-8859-1?Q?6TPF6TE1B6Z5I7CeYhUAxnzIW+qEa0d00yzHgbtzKMi38tTtzv7m+pbGwy?= =?iso-8859-1?Q?uB0OfxJ9GO/ZGZfZ712uClWtuin5sTSfb/uxPPeDMJmDXP0NoC9ZIqFlVW?= =?iso-8859-1?Q?7nLHExncDe/PBk+FB5FANuUjaYeTxfT4h/XUpuSaXu4awQ71g8Q5MqhjIa?= =?iso-8859-1?Q?kZSFFmric6Qp5BRS9gAiTTzCF3MqqYxZGvqvQ3loUFQvZehOuaCUSclpki?= =?iso-8859-1?Q?GkTWgf0WzVsNbvZG+5G4Oe5PQGR4YCcRd43q8IeJAB8TZEtP4JcehWtd71?= =?iso-8859-1?Q?U5r+yxz5be5hKszRjqdKQxFaZdOJZ09i8L5UTyeOQ1vdmnCf7JKtFuGR1l?= =?iso-8859-1?Q?1+vCxCWnPxh4CZnNfDUAVD4IEL755ZCYeUQQ4qLCmjzpg2EbXZ8kdPPu/R?= =?iso-8859-1?Q?0FIgXbdfMD/EpEWyxGzbSqOZUdt2RSgH3jycoPRxhREla3m44/0j9p1YM1?= =?iso-8859-1?Q?FOQkL84zgGg4E7gU4rsj7+NuZxvMuFkvOoOe4XaS5UgUa2KsME66rDPKC+?= =?iso-8859-1?Q?EFZyteYFKPDx+3iRYvl98KNAb2jrVXPmDXBJWUOZQeF5//tbNd/NW5t4DZ?= =?iso-8859-1?Q?RSP98Ku4hyGVW8vaU6AlVeICG5fp6z4+v62pLddRu+d0urYcp5Gg51gfxQ?= =?iso-8859-1?Q?Q9DaLWKd9foLqRbpvE7E3Au4llLgYCrupdJwDjbyWURtsTBW1z2/WAiUQw?= =?iso-8859-1?Q?nJr0iY+mBs19OEl5HqPZcN1X29Ou7ijrHKJZKHMXajsdDPeeDevY3hi+8C?= =?iso-8859-1?Q?P5zR5DwVd+hcfE0/06YU7mRUb3IJRnaWb3ofcbE3rqLKqzg7PyHvY9gAum?= =?iso-8859-1?Q?lsTArCb/bFPeeYMpWD4Km6AtFf9+qXT2e/C8jOY+2nYjtVylUJSO8kPntd?= =?iso-8859-1?Q?6Y=3D?= X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0309;6:nt6Lmo2I4XvZi3zoQJ9W0q6sh0BqMwr3xeoxX3CRap7MP7TztB47D69ZzS1dxpBLGaTNP0ZWKU3uOpq2yaVfYnSB7kiiARAH3YYmo4kHD6g5bawIWCDYxzkDbB+mTob6V6/v5mIXo72smpA0O4LuuSxfMWHAKCH5P82xkq7NI90Q7o4y1tQ1ZvN88fHwN6br50DApauFwsFNn28d0gI41tOFdSkhAP9XUmMH4xsV3RxmYoOkDfwxTlXNtf4btzFd7cjoHAZoKWwlMYHvgr7g5+mpL5ykFWI0RbvdpUm6pvxGMIksWW5fNVNxHWGemVXMP3UDzeL4jS9mH3a//JR8/Q==;5:18P8YPovMsb9waxYtq5D23rxaNzjrRkgTLEugKvSE/Ae27YX8QX2clQ4uY76r97esl92U9goK5pfjbE843E5tQQF1scN3fVzZhRmNzp7BcCOJZXjQxk3hVdAAp6+8AnFxsbh01AnbK7Poap5MO8wJw==;24:6VXMy5xAYgq6WCvtKBF+WmcSdR0phiogawD6XR/dLvY4FLyGyqkvt3alrgomAyqYvcRIedJYIigAwAW++R17BMBECpdltMTNrqZiv1l6Rmk=;7:7Wlxr+IwP07MpwyLDHAimDD6eQznyBZdhYEiNCQm9y3HsinM66z+BCw1/yd1RjOnikBGmZglNDyArHB7AJLc/sUuE47UhA3F4oCyfgw9+hzjArlXDiUjzn/xaLq7TV3PbMhsTLkL5fyl1h+9MoYuCuCNLPBCFszh5+iFa9oHHYpRN/aZHiPWTwLX3hq50r0r8S9lniuELqaZcB6uPZsRTDP39zbGxwO6G6ZXTBwn2AAZaUAKnDKHbsrPsYu+k5XkSc/0RbWUPNzHK71y5P0i1iGxl2Ldqkwz7GgdJVY+fzBlADMJgU6EgZv97PM2rAXU SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2016 01:12:21.2813 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR84MB0309 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/01/2016 02:47 AM, Thomas Gleixner wrote: > On Fri, 30 Sep 2016, Waiman Long wrote: >> + WRITE_ONCE(state->owner, current); >> + preempt_disable(); >> + for (;;) { >> + ret = futex_trylock(uaddr, vpid,&uval, true); > Did you actually read what I said? You CANNOT access userspace in a preempt > disabled region without disabling pagefaults and handle the resulting > wreckage yourself. I think I had missed that comment. My bad:-( I will fix that with the code changes below. I will also double-check your comments again to see if I miss some others. Cheers, Longman ---------------------------[ cut here ]----------------------------------------- diff --git a/kernel/futex.c b/kernel/futex.c index bc16eca..132a36d 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -3520,6 +3520,13 @@ static int futex_spin_on_owner(u32 __user *uaddr, u32 vpid, bool on_owner_pi_list = false; WRITE_ONCE(state->owner, current); +retry: + /* + * The preempt_disable() has similar effect as pagefault_disable(). + * As a result, we will have to disable page fault as well and handle + * the case of faulting in the futex word. + */ + pagefault_disable(); preempt_disable(); for (;; loop--) { ret = futex_trylock(uaddr, vpid, &uval, true); @@ -3648,6 +3655,14 @@ static int futex_spin_on_owner(u32 __user *uaddr, u32 vpid, } out: preempt_enable(); + pagefault_enable(); + + if (ret == -EFAULT) { + ret = fault_in_user_writeable(uaddr); + if (!ret) + goto retry; + } + if (owner_task) { if (on_owner_pi_list) task_pi_list_del(owner_task, state, false);