From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751868AbdISNtj (ORCPT ); Tue, 19 Sep 2017 09:49:39 -0400 Received: from mail-db5eur01on0133.outbound.protection.outlook.com ([104.47.2.133]:35840 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751547AbdISNtf (ORCPT ); Tue, 19 Sep 2017 09:49:35 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH 3/3] kcov: remove useless barrier()s To: Dmitry Vyukov Cc: Andrew Morton , Andrey Konovalov , Victor Chibotaru , syzkaller , Mark Rutland , LKML References: <20170919124648.28963-1-aryabinin@virtuozzo.com> <20170919124648.28963-3-aryabinin@virtuozzo.com> From: Andrey Ryabinin Message-ID: Date: Tue, 19 Sep 2017 16:52:26 +0300 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: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: VI1PR08CA0239.eurprd08.prod.outlook.com (2603:10a6:802:15::48) To HE1PR08MB2825.eurprd08.prod.outlook.com (2603:10a6:7:2e::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 56c22286-5876-47a2-6062-08d4ff6541eb X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:HE1PR08MB2825; X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB2825;3:EuENv1vGlTsV+S/i7NQ9Ag8KCtntwtyNctynVyxK07EVc4DUB52GfRvi3FyeFdpSuCmGAGgeGs+y+9Ls3IiXn7WYPZJE4R7s+jObn5EfZ+DXFZyhvkfOT3FIfYPffygIUnmUYFkv465p1GpyXSbxJeae0oqe6KYS4vOoH8S01BdsfmIUvt4GYPJJ5LJlIhCgqmQbNZ9xxIbOlDxPmMZXbTI33bZChSVHMYg1a3sDkhZUB7OQWb0yrcLcCZCmNz64;25:MryBfrPKD26qxKQOPHeR4E+OwOveSTjtylFwWD2zqN6nhR+mW0htux9ou4921Loi2ejk8QMrnAP3FmT6RPsOjtntfVDRx44vuLouJGoMaNsnzzQAHOhJnf/rhEFMA1tUJq+tTnhwc8sauGmRS442X297ajbbziwom7U2hO1qI/L4EgyiHYabrReszeQcxO0/hncRz8mEd1j3EIuMXF7dLgi0xUeDg0Wm/XFxmY4Zju9STTQ4cug2xhW2CDL28Cd4sPrjzKtsjMilZYO0Ygx6Y6TGx3MylYDtt+QNgeBSTKBrQWgdqceyEt4TK6DvYfBAJH/cPqBX9PsgsIkpLSb0Zg==;31:AzSQ8iGP8YGlYXfUijSWGoc2ZCll62bMshRp6ty549k7T4iOefKSFY4YDWk8LmmoA8a3jegmGEzI7SljJXLndGVrOtXr1M1YubaY1t3+vPSQNE3+sj538A64WTuvXorZHL08RLqVdtvCycUPT6i/NM6nu2zQ61Lmua+GN0iKOX90Ldxyqpxxemu1MIlUKRHFNF7xKZ+e+iCqssNvmRQkSEiAA3UiDOxLjXs7Am+TlRA= X-MS-TrafficTypeDiagnostic: HE1PR08MB2825: X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB2825;20:GgDnYnRWsKlhOtMvf5olaO+rHWBcfJC9wvq0czIARCBUa/YFkLuW01M5Cu0qjK+op4cIJuvGOo1fNSQ6SjJoK1pKcPJ9JlxJNHZ2K7d9LkqEJLlghg/7+plFxUVLQpKfkd6ZtSnayE4D1M1mTZWpCcQ+mn+Ctq5a7mCUYc3BUqHiPfdhjvhSWYunSK03OsugxuJXa/vIN9k5o4f17cHhTSRkMj1IlShyBgluYLpc+obSDgfQRId4wCUCJo2/Lv3Wvpo6fuUxNv/wWE/PYvX7l483I/53in7qnhOkmAgFiO+GMt060rdOejTtP+bb6bGcHL0d5cZu3ABGmnTazTTUCmHXpYUVnIhpA0G83J+Mn+oC3hz/iWI0kozN6kY/0UUvqbeL5zcFrOf7xHEhUr3oKksfKXQPWTLgfPAJv/ODIY0=;4:ymj8E9ty2pvFkQDl4vEmdhPHP9CuS3a9q1e0o8fB8YIf9jbWhXveL705W73UD0lXjIJi/4FtMcnl3DFfdBuvTLcEDbhc5cRfZB8tdzuXh2lpsAh6ojFxl5eH2WncGetWxQEbJRTgzcjMwINlMbN/PxOetaZaPqWddpzCZJwn9ynYOf6XsSHN+Aebg4lg7opnEjY+oCvPJvQ+WojcPJyQK4dLbFED2kKHHiqVJSTVUaXu4K4kxf3NbUtGsEj6ygly 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)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6041248)(20161123562025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR08MB2825;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR08MB2825; X-Forefront-PRVS: 04359FAD81 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(7370300001)(4630300001)(6049001)(6009001)(39830400002)(376002)(346002)(51444003)(24454002)(377454003)(189002)(199003)(7736002)(478600001)(64126003)(50986999)(36756003)(54356999)(6916009)(76176999)(83506001)(2950100002)(7350300001)(16576012)(305945005)(2906002)(77096006)(6666003)(65956001)(16526017)(66066001)(65806001)(229853002)(189998001)(6486002)(68736007)(3846002)(6116002)(58126008)(81166006)(81156014)(8676002)(101416001)(97736004)(33646002)(47776003)(25786009)(230700001)(106356001)(5660300001)(54906002)(23676002)(65826007)(105586002)(50466002)(53936002)(6246003)(31686004)(53546010)(4326008)(575784001)(31696002)(316002)(86362001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR08MB2825;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4TUIyODI1OzIzOmZBU3FvVC9UU0ZGRUQ5Y0tKdTZpazBhSE1m?= =?utf-8?B?N0dQTTlvd1BacWlINVh5eGZKc3ArTWFHZExrUXBXYjZCRm1GQkMzanBPZUdI?= =?utf-8?B?am9uNXEwUmhjbkJSUTI0bCtZclYzVjhxaU9GV2lmclZvKzJCRTh3MStpUlBG?= =?utf-8?B?S0JHRUkxOHFPWXRpYXZsY25UZWhyMGtHTHpyMHJXeExZd1IrQjFsaUphaVN6?= =?utf-8?B?OThTRjN5YktlUCs0RHRiNWFrMWVtTUVXYVpFUEtmWGJmdkh5MnBqSFR5VmNT?= =?utf-8?B?aWNJaFhHYkdXRWhQa3Y2UHR3bU1JY1ROcDEwWU9rRVRhVko1VitrN29qb0w2?= =?utf-8?B?ZmVpZ2htaGZWNHN6R2YzQXhWVjQyMWxVYmIwMjlhSzNsZDNrT1VYWFVIbUV5?= =?utf-8?B?NXF2NzJCUk5hZEQrQ3FSM2J6VDNTeDAxNFplYWdhUWR0a0xRajNEeG9YOWJD?= =?utf-8?B?S293aU1HT3hIcmxzajR1bmZrdTcwNVBxRFJodmp5YU1RMnFtOTFaU3RnYkp3?= =?utf-8?B?S1crdEQwd09FejJoK2VPdm1Tayt4dDdtcDZIbDkxL1F5WWRWTTE2a05uV1J4?= =?utf-8?B?MWowaER2SkNmZnNSaXk2RnlBWUowb0h6M2RlTWtHR2F6ejNmVFdleDNBOEMx?= =?utf-8?B?S05hVkM3Zis0a3lIQUVrRkUrOGxibDZ3RUcrZ1kwa2kvZko4bHZDK3hJMVdZ?= =?utf-8?B?RDZKbEFxZXNjVlRFZFk4L2lMbFZsTjhVNWZQZDdlQldmKy90MENrSC9PbTJl?= =?utf-8?B?UHpTcmkzemhxUVFFZmRybDAwNDJxWmFPaWt3RWFoVUJsR21sTlNYcis0eDdQ?= =?utf-8?B?L050RW9CemF6eGV2b0JUNVFhNzIyMFp2clZVODgyWStrRDlmWnFEUWs4aHVS?= =?utf-8?B?bXExZkpVZXhXWGY2Y1plM1l1eU0zK0xLRnVSclplWFNOMmlZY0dnNzMxU2tn?= =?utf-8?B?eDQ3eWNzTEt3SERLajhUc0h5d2x5VkxBMXVJQlpMSGdSSUJGYU0rcUVTcFdH?= =?utf-8?B?N2pHcDByVm02M3NEcnA4MERvS1VzSmRTVFRnM3B2M2c1NitzVlBxSHpvcUFX?= =?utf-8?B?bnFuNFFvdDNSQXlrYXlrcUdIVHB4QlZFKzBsNUdzYWZnamNid2FiUTZOUG9w?= =?utf-8?B?QUZhMFJwNCtiMVEvLzBYcXdFbjUxT2VnTjRkU05IVGhaaHpmK1VHZFJYdWwy?= =?utf-8?B?ZFNpYnY4WE51aGprNCtMUkpRVVNkOVlDM1h3MkF2OTF2VDNmQTh0R2VidXN5?= =?utf-8?B?dmVSajZ4Snl0OFFZbTc5dzJGRGUySndyRkt2L0kzcWpqbTUvZGxNYWRETFV6?= =?utf-8?B?MWRHaGVlQjdGT3FjODFOTWtwaVJ5ZTdyYTNmZ3dlRXkxNm9TblN0cW9RZGhz?= =?utf-8?B?LzY0L2RFazNNSHVHcnZ1bWV4NEE4ckJJY09jNWZkTndsTnBYbk12czNyamZo?= =?utf-8?B?TWZvdHY5akNCdWxoK2FObmwwWEllUkp5U1NNWTFrMFdjY0wrR0M5S1NPQ2pL?= =?utf-8?B?TlJaUXIvSk9xMGxqaGxmamZwcE1hdEtkazZ1b2pjN3EvVzQ2Mm5jRmJ0Ulhv?= =?utf-8?B?TWhkSFdiN3NKdVZ1QTJPZTg0aWhLbzFScCtwb2I5T1JrZVFJdnJKS3UxQ280?= =?utf-8?B?bjFKejUxNWh2dnVHL0x1R1lpRVRhdWsxaU9yWFpXWjBub1Q3VmtKZFlWMFdC?= =?utf-8?B?RU5FRDVUSUpHcG95a3poc1phTTRFVWtCUGdRYXl0anB6RlFvcDBoenRYWTJ4?= =?utf-8?B?U3V1OVBJK2p3NTJtNDM5eTJ2VGVTNzk3ZzF2ZFUrU2g3Z25BeXl3eXpydTFF?= =?utf-8?B?Wk9waGE1TGg2a2FZWW11YXRPRlNVS0pCNXNRb2dCMWllUjZoT1BxUStudWdl?= =?utf-8?B?NHFoM0dIYlhEbDY3NHZMKzd2VldlNjBwcURMTnFpZHVyR0dkeW5VTk15Yllk?= =?utf-8?B?TzUrYUJXWCsrd0xQRkJSdVZtUCtmQXZzdHM1emhOZ1NuSVJNREh1eWRIL25U?= =?utf-8?B?MXlPVnVIL3pISW9rQTM0bkxlNE9jMkVwTkJQdz09?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB2825;6:Ut/qQRAVlXKgbEcZjDRhEPK9hCZpD6/B6qBO3Ag0vn91UkbD7OjHYvaWe4QqZflsx2Nphv3WW2IwH+wXjprHPZjkbgqlzKXE9WMCL5CofTVWyjRg4UxsVj7nVNy0Evp6TUKLX9x5J0PdlipqnVV8tWrNoPbLykXUErLK+VNpG/8rc38Ua6oGlK0FDUyn3ml9ej55mvY5aT4eHrkLy/1jqxqgBYQMutNeAxgmEPGCFiwvq2+sY2HAcDMLiq206pSdhIp2ul3M1HqVmisoTH9/uJbNmewaziHSMPU0QhpDwPTQGUI6U0OrCHKba3hEXh4ouYUrD1QPakTxSe04YBLmng==;5:y5sIj+FEZFrOvYc/1o5JaCJpJDO+qGwvLfe4U/IuTLnpIIKPaeGaNz5D1/R97gxnc/VhTWIXsMZsTbW6FQTry+0pG4+BBOUY6akhR2t2B1zSsDcY+cUs5hZdjc+PUA6zpncRadz5K1UghL4kfpoBfQ==;24:D8WA5JAaBwEkf6XnvZtzgj+LceKydqIpa1Ynr7K4qpkGHCY9qTW0USL7gEzgz1idJ5qIB0vlksIhtmB+MqzV+TWIIgygr8sO3wDd4eeo2+0=;7:xEi/f+cE+3pjRLMjdooQ8ITOXI8DTdu6H7A7Tyfw2O3gQliiRtWtyL/XYp8SHJInHmewQU6W76qOGxJELjM2cEaMeaMwdhMBcVMuvftyncRDV3SclUH4WZbqRKEesRdoi5kkVB0q+YWfH9EcNWc1AbRoWE+o2UnNTiLMiVuYDcabtABiHs+vxYdG3ppOPq7gWXRKjL7Shj2U8fnOZ5ejbbUYBbgQBjvXUG1n5yOsdmY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB2825;20:FMlX3djNodfA5b5PyvzI/a2rer1I3ATbm28hMMtPjpltNWJB4Zw4E7nFXxYnj5Ity0/dfV1WmjNicJH+JbC2xG32eIThyB9mLxJeGi362IsFlI3XHy6CcVguAMAIl/vbGABrYyGZgBn7CDsFOXBdKwAQaMbaTHOVQ+qYk+4kusg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2017 13:49:31.9275 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB2825 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/19/2017 03:57 PM, Dmitry Vyukov wrote: > On Tue, Sep 19, 2017 at 2:46 PM, Andrey Ryabinin > wrote: >> As comment says barriers needed for preempt_schedule_irq() case >> where in_interrupt() returns false. But we don't use in_interrupt() >> since b274c0bb394c ("kcov: properly check if we are in an interrupt"). >> >> Now we use in_task() which handles preempt_schedule_irq() case properly, >> thus no barrier required. > > > Are you sure in_task() handles preempt_schedule_irq() correctly? > They seem to differ only by SOFTIRQ_MASK vs SOFTIRQ_OFFSET, and that > only differs in local_bh_disable sections. But preempt_schedule_irq() > does not seem to have anything to do softirq/local_bh_disable. It's > called from real interrupts, right? So I would expect that in_task() > returns true in preempt_schedule_irq(). Indeed, you're right. I checked this only on !PREEMPT kernel, where this worked. Still, I think that barrier() in __sanitizer_cov_trace_pc() is not needed. AFAIU it needed to make sure that load of t->kcov_area isn't moved before load of t->kcov_mode, but I don't think that compiler is allowed to make such reorder. That would be a bug in the compiler. > >> Signed-off-by: Andrey Ryabinin >> --- >> kernel/kcov.c | 10 ---------- >> 1 file changed, 10 deletions(-) >> >> diff --git a/kernel/kcov.c b/kernel/kcov.c >> index 14cc8c1a7cad..b7fbcbef88c1 100644 >> --- a/kernel/kcov.c >> +++ b/kernel/kcov.c >> @@ -71,14 +71,6 @@ void notrace __sanitizer_cov_trace_pc(void) >> >> ip -= kaslr_offset(); >> >> - /* >> - * There is some code that runs in interrupts but for which >> - * in_interrupt() returns false (e.g. preempt_schedule_irq()). >> - * READ_ONCE()/barrier() effectively provides load-acquire wrt >> - * interrupts, there are paired barrier()/WRITE_ONCE() in >> - * kcov_ioctl_locked(). >> - */ >> - barrier(); >> area = t->kcov_area; >> /* The first word is number of subsequent PCs. */ >> pos = READ_ONCE(area[0]) + 1; >> @@ -228,8 +220,6 @@ static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd, >> /* Cache in task struct for performance. */ >> t->kcov_size = kcov->size; >> t->kcov_area = kcov->area; >> - /* See comment in __sanitizer_cov_trace_pc(). */ >> - barrier(); >> WRITE_ONCE(t->kcov_mode, kcov->mode); >> t->kcov = kcov; >> kcov->t = t; >> -- >> 2.13.5 >>