From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752230AbdJTPLr (ORCPT ); Fri, 20 Oct 2017 11:11:47 -0400 Received: from mail-sn1nam02on0057.outbound.protection.outlook.com ([104.47.36.57]:40604 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751694AbdJTPLp (ORCPT ); Fri, 20 Oct 2017 11:11:45 -0400 Subject: Re: [PATCH] waitid(): Avoid unbalanced user_access_end() on access_ok() error To: Kees Cook , Linus Torvalds Cc: Al Viro , linux-kernel@vger.kernel.org References: <20171020143605.GA59685@beast> From: David Daney Message-ID: <67a64016-edb1-98fe-10f9-10cf9ab463a2@caviumnetworks.com> Date: Fri, 20 Oct 2017 08:11:40 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20171020143605.GA59685@beast> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BY2PR07CA0025.namprd07.prod.outlook.com (10.166.107.20) To BN6PR07MB3490.namprd07.prod.outlook.com (10.161.153.29) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 98c4cd7c-212a-4b43-7159-08d517ccdfcc X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603229);SRVR:BN6PR07MB3490; X-Microsoft-Exchange-Diagnostics: 1;BN6PR07MB3490;3:PKGZdeEspRr/1EPd6MCLWfQMLZOb6a6V7L3wn4Ks+0UbNDboAUMrnshmKjoPp6Lx2RgOmk6EWHS53JAFQR8mhUh+VsEUOq6bDYjCmGnvzHobim9usLPiClznHV+ahj54yal2cBD5gMV7bfEOFFPLrtNy6p3AD/V02tSY8jnDo1NB7GIjcT7NHz2n+AXjKi/9iWMW327bNJBsfrikiBw7mbjN5yPxQXBIRC4ie1Ogia6nafyDgfzgFjc6eLNI7YYr;25:pMcil6q5fg967A6od7wQJMlWM1CgnLgjIO41hED+lnJDkOcD7rjl9lzwWBo5SDvTmJrctDv5f6x8UwdB/30XQ1Qyalzo0h+RHSTal7De/Mo6IW3HKDox/yZN2fNipjmGyRRcFlaAUq0qz3XWjQuaeaA7qi9jtpOZzP40SDR7h1HsnR87Bo8EY2zpfuhyHJbzzi0EZXHiTH+FWq1gvObmEffjHF2JKtEJn1oLYK+S1u+hQGp43qQ7ww1vfH/p/yzlQr23WGjdCQtGK/T71RymdnbdWwb1rEunmzXCW7GgM5KHPzUA19Q3+h/8Ats14UgZTyC7OH6EWS4LbWdUQQ8OvA==;31:LKo5JaJarH/I/JY/AmnoL5Tq45oPW50ioeCGiv63/2R8UDI/uST9Z14cI/iI58kOztbhpW/um12xeYG8CVjxrGFvd/sHzJX6MVwKfICSQyebVNVUDMp6uNTcuFK8TG+Or9xQ1QX3VfD3YnmwtRbTkRzttSnGtnm+gdpjp2VkHAwqE/YSpep42RCIofQu89xJ00OH3jU45paFLTatXI0vJdKPpAU+JiBBz4ix0W7d9gs= X-MS-TrafficTypeDiagnostic: BN6PR07MB3490: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=David.Daney@cavium.com; X-Microsoft-Exchange-Diagnostics: 1;BN6PR07MB3490;20:7tb3OWaXaIjI3WVv/4HeRmH7xG+5M5CHmk0JzMdeCcCgdsgQHtPEcl0CB5yORnaSmXNu+Ts2vktWil3z9wZFG8wmUvWj7QF3VHYJKdK4TjdJYqs0PYwYnPzUfECipHquK1RXbkZMjmRWbMQa9FUV4AnTet9ptIOB5wWZP30FbUAT45J/7sIhzKMEsBMgagi7/jWep/0qe56eNkkQBVBRYK7H+RAPuJSpT7bzsRYJfTWYEEJi1IPHl4GgEzS54fuj/Nf8NtvqTkQxJz2BVK4jUcOxFNq9aqyoS5N64/HenNCP3hVXJBKQtkUSwKbkAQ0YfBbYbg1EPD2OjCfAyYT40mX4go8tKWsXvuEJP2VTMIJMhf7j5HMRj1VOLAAPFAuAhP4lZ4a1d7+yr0OA8bBRsqYcNrhJ5NQyIhcMNs/z7XjqwrUP4CWOo5eTLp7OFVK/dbOA8ODDaiI4G7M+Y5jk8TGbkRXauAi6VHCCJi1L35K2OzzoTKthHZTRO7MsL+FV1yy+8u8zsN5P302PIrDsaSmAvc9Q+3pkvh+SvGefj8Fjrp6DiboLZl8ydReG/Mb6zjiiM+jd/tts1A0wyU7f1kSOL1kDbfD06dEY7HGbbY0=;4:QZ8B9xoJiGqcMCr847o/2pFoX2GF3knO0tIobQOhhebgUvHpPY5XM/UYNxsxay/wTpJ/44twjKjgEVntq+VJAduzR1UduOunKPvqQTOWOhQ6w2vtXiDNKD4uidF16uEmgLPbmzlP5eiHoMSE3/1UJAh+k5ZAfB+ewGMeW62T1+ImsH1R1QhZyjuNG8BkL5VMBYBX3+bjPA0OVSWqFjl5cIGPZWxD/Ha+AwjN5kamaPAjSLFCCboj61yPUxm/EHvY X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(3231020)(100000703101)(100105400095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BN6PR07MB3490;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BN6PR07MB3490; X-Forefront-PRVS: 0466CA5A45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(189002)(199003)(24454002)(36756003)(54356999)(42882006)(58126008)(64126003)(110136005)(6506006)(6246003)(2950100002)(68736007)(53416004)(316002)(33646002)(50986999)(4326008)(229853002)(6486002)(23676002)(53936002)(76176999)(25786009)(6512007)(189998001)(65806001)(3846002)(65956001)(305945005)(53546010)(101416001)(31686004)(8936002)(16526018)(66066001)(6116002)(69596002)(5660300001)(81166006)(50466002)(65826007)(47776003)(31696002)(7736002)(230700001)(81156014)(106356001)(105586002)(8676002)(2906002)(72206003)(478600001)(83506002)(97736004);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR07MB3490;H:ddl.caveonetworks.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjA3TUIzNDkwOzIzOm5rLy8vTEpJcm9PZGtEZnFodUpMMEEwSVMx?= =?utf-8?B?NHU5bm4vSHlDb2dvN2lwVldLV3lyK1VVUEhpNlQvTVJsU0FqU2pFZU1GT0RP?= =?utf-8?B?M3NrQU50SzNFODIvWHNWOElZNGxsSGo0YWxzOEtuK01uMW5rSzZTcWcxdVFy?= =?utf-8?B?Z2RpRlJCMzZ3Y2pvT2psdjFUL2F4aVBIaDJrbHkzb1NMelRUZXdUdStsKy8w?= =?utf-8?B?ekd4eDhPQkZXYm1KOWhqRFgvNndEOWtOMkhCUlRDUWtwYVN2Qm5QaktWMm8x?= =?utf-8?B?UGhubjRLaFNCYjNoQ0xkRmMyVTMvN20zTHVSSW12U04xa1I4MlF5M2oxNnFi?= =?utf-8?B?V2k4RFNDTzdRK1FwUDVBTVBpYllpTGJLUzhPMG51RVBxclhiN3JqZFZWTnFz?= =?utf-8?B?ZkpFUlRBU2JUQ2xnSFBiVVBQTTFrU1pScmhEcFlYZlJjUk5qT0xERCtzSmhm?= =?utf-8?B?a25CemZDalBKZWdsNkphZk9pWEI1dlFiMTUrcjdtMmIzN0h3QkU4SnhrYUto?= =?utf-8?B?ejJ6U3lQeWVWa3dwUytoZkZsRVh2K3AxZFNheU0rRkgrWHhJeTJUK1JzWk5J?= =?utf-8?B?ZnFQa2lRYUJTRnRaak5vNVdoNDdDZUF5c21NUmNyM2RpNzgzVEF2L0U5Vjdt?= =?utf-8?B?VlpFZkxLU0EwK1lCOFBSMGpkc2JtQlFnczBYTTdPbU1zcEJ1akdUVmpEV2VQ?= =?utf-8?B?Yjd2WXBMNm1yL3dUaVlYVGlkalB6OE84RFBIblFtWlNQbWpsd080bnhhV254?= =?utf-8?B?Qk52RHgxM3FhMDRQTHcrdzRDUVhtaGZSdy9YV1NtNmhBSThqVk5vOXZHelpD?= =?utf-8?B?a1VhQU5IWEVWcFk4OTM0R1hNZWxtckhIMlBoVDlSN2d4dW91VWVERTFPbnFn?= =?utf-8?B?bXpOM3p1dmtnR3JJUnVOT1hPRWUwcCtxbGZtVnprZ0YvT2xHVWhwR3gyRHov?= =?utf-8?B?VFVxWkhkcUJQWk1BdGhGNWFyUGw4NVdUU0U0QjhZT2NqM3lNUFJIT3lHbm5q?= =?utf-8?B?TEZiT1ZCV1lUZnhqNWo3aWNEazdjbmdnckFucENQVGZlQVJzcGUwVUtBMzlN?= =?utf-8?B?M3RPNCsvaFM2YVdDN0dEZVluR0h4WjVrRGtBZU42ZUJXNm5YTDVmQVZSczB0?= =?utf-8?B?dWY1Mm5VT2ZHQm9IeVF5enZhVjU0emw2VWNsUER2TWZkWjBjc0VuQWlQd2Zp?= =?utf-8?B?ZHRsUnZWVVplYmVoaEd1MWhQRndQaTFpVUl2Zy9IcDhtNnFpYVI4SkJvaUU0?= =?utf-8?B?UE1peW5ESER6bWhxUUUzMDdZTjNUL2pOVEFHMUUwbGVuQ3ZPamloSDBSMnJM?= =?utf-8?B?N1B2dDVVdUk0QzBWSEpDTzMrVDAvbXgybVFGTVlWMXc2ZFdER1lIWGVsR0NL?= =?utf-8?B?dVZQVCtZNGNpUmYvVFhlYkM5d0o5Z3NRL1A5UXBrclQvalMwSDVROHpISjkv?= =?utf-8?B?WmpueUhZcVhNRlh5OG5oMEczODZyRTZuVEtKVmFnTVJiWWhqUi9iQUNSQnZj?= =?utf-8?B?ZmI5a2N6TmtTMlZydE9wNENSODRJRzc0bnIvTFE3K0tvbEcxalNWa3R3RDJr?= =?utf-8?B?SzRaeUh1QWZ0KytPYlJMUVlsNWw4bDlxd2pkT0w4QStYakl1QUozeVpLcjZz?= =?utf-8?B?ZHdoSkNqR1pNZU8wR2U1UUx0eXVFVXRRK3lwTi9VOUZ2dFhJTHgyREJnbnhp?= =?utf-8?B?Ym1aMG5tVVZ4M2gxNkpTcnYwaWxXbnNSdU9iSXlWQkthdFhyaUIwaXBUL1Vt?= =?utf-8?B?N2lIRGh0ZjA0UVVtSlBUNHBsSkVrU0UxcVJxUG1ab2tBaTZOVnpnQTJOdWF0?= =?utf-8?Q?qHvPlYcmgMP/r?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR07MB3490;6:UlLnlGZDbpiE/dtMOHpOggEhUOzW9uFUo5AiryljZCNzZIs2eA35w89tjsoXSIXt1Zg7QZnaFF1WSrLLzERpQoOLz9cxAoSON2l22n6A3jFDi3pMzhuNibrOZVQchlq3J7O2EQQAQ/kBa0ZnMMs71Z2Naav9lKJfO72Db2ACbz6DbGR2YFfyVGgkPOSYgbR291HhURPuXs2hi+kFI4onOH2GeXRee0tycZ1/2h6cLztnE6asIX5wORTCz/Vn5IivBLnrycz0or342KmThUHzQw9mlJGuco5IXk9NFuFnmWjpiiewd6FZS3ZmWsloCbleCricYeHwYoyf96WRg957PQ==;5:awIsg7jFJrNye+Il+VAjf/hprgRorj9bKbxyEEku591wunR01i3pWZvBd8Zdydv3vNHktcP0IDq7/Jk67kb4yBEbY5lfPZ4PAHRlK2wGP4Wz/oCDvGiMha9ZKbWu+4yd7TTG0tIiW0jB//VCRjkd4w==;24:KnubRKGaEiTYTXArk5svdk820bu+55+6YB27Gc0lA2pEaOW6hj5yt25u1Okvqu+NNMSLSW3USOOURMLzR5TGPqneyEPgA1VKP+JvY4OmC/w=;7:wcLdstwSYEkEdS4PpUqnDgvmpKSHxwPJ8P4MWEEY9zPfsXlA8/ELA+xBRyALVPX+hJDfYbIWcWMM5o8jqbS9X8DttrGE1v1wKjAwz78znhkAKt+aSjozYqxH+JKJa8hzKtaa/D5TSv6zVYtNhU8nDW/dSwF5WQC7OdtKS4w5xEBL7jYrQrjZ5TOviK7+3TXWm04tpNzNMrlD03MQAHxhLCVNvhou/BDTgQFwp7oIhcg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 15:11:43.2184 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3490 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/20/2017 07:36 AM, Kees Cook wrote: > As pointed out by Linus and David, the earlier waitid() fix resulted in a > (currently harmless) unbalanced user_access_end() call. This fixes it to > just directly return EFAULT on access_ok() failure. > > Fixes: 96ca579a1ecc ("waitid(): Add missing access_ok() checks") > Cc: Al Viro > Cc: David Daney > Signed-off-by: Kees Cook Thanks Kees, this looks better to me ... Acked-by: David Daney > --- > This seems best to get fixed up now (in the same release where it was > introduced) before it tries to bite us at some later time. > --- > kernel/exit.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/exit.c b/kernel/exit.c > index cf28528842bc..f6cad39f35df 100644 > --- a/kernel/exit.c > +++ b/kernel/exit.c > @@ -1611,7 +1611,7 @@ SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *, > return err; > > if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop))) > - goto Efault; > + return -EFAULT; > > user_access_begin(); > unsafe_put_user(signo, &infop->si_signo, Efault); > @@ -1739,7 +1739,7 @@ COMPAT_SYSCALL_DEFINE5(waitid, > return err; > > if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop))) > - goto Efault; > + return -EFAULT; > > user_access_begin(); > unsafe_put_user(signo, &infop->si_signo, Efault); >