Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp118754imm; Thu, 30 Aug 2018 17:44:16 -0700 (PDT) X-Google-Smtp-Source: ANB0VdY/OV3v7dDE62a9d8csqlZ/uUZjk1Hl0sdJLCjUSwPfnPRr7/SZVLZW70yilBbQbgdofoF8 X-Received: by 2002:a62:5290:: with SMTP id g138-v6mr12895867pfb.46.1535676256209; Thu, 30 Aug 2018 17:44:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535676256; cv=none; d=google.com; s=arc-20160816; b=s7yu4SrEjk+/Q5oVfpViw/Ek6GQYHMw+xkPdP5/GHT3yOHQd/SP3TGLOuONHhXMW61 bcyUU4Uhw41JhH9M1n8/I2A4+ONA8gG9JyTf35pS2GotU/TlVC8fHP4FSm4848434siD dvJRPTK2Xn5lKHekvairx8kx6luFq7Zp5A2qBR/1TMz5ba/ktt4g/XkJZ55+qutWNqJF w8cF6hE1a3FNbjgl/t5z8YT+2U1odYOfNqfQUarnvW+RIKfpnXH+VeHU0ytGO2jxs+2E 99sW3OW+JMsrFI0rt4/hos/bm2VKlpCufleZ9YjdJ8eEW/yb3YInuTekbIOmWEJ3Vezr UlVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:references:message-id:date :thread-index:thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=POzRvRHQklNNd8GgikRUOS19sc1VquNlcqISArdQ5Yk=; b=ORs+LaH1EYnFF/YCHE8NrwgNtLAg1NEBnEO6FFl+bbtpjpCmdSsOL89cbugdEi8Fo0 mc9PjjsA9m5W8GxPINgWojvhZYgcwHbI07fHWSzDmSfTEM01X6Sp9ApBrToASiu3MxkN NOCBmYpu+U5fjnNNtJ41h7fRbcyhz4atBc6pkJ3qPKU7CX10PcijtOZwgiWTBjfiMJI0 q3+/PLOFL7it/7XVAgORw9B/N5QKqUVWC8CcymOybj23pNHxkmLDXyCv6boRY8DPGMlk yL+d8suFU5h+C0OH9YwOqKMkk3fVUk8myQPETIRLhyKnT6ruXaybk7aPvC8rlwsPzfLi 1cUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=a816QZGF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j13-v6si8681574pfj.230.2018.08.30.17.44.01; Thu, 30 Aug 2018 17:44:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=a816QZGF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727278AbeHaErf (ORCPT + 99 others); Fri, 31 Aug 2018 00:47:35 -0400 Received: from us01smtprelay-2.synopsys.com ([198.182.60.111]:53212 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726037AbeHaErf (ORCPT ); Fri, 31 Aug 2018 00:47:35 -0400 Received: from mailhost.synopsys.com (mailhost1.synopsys.com [10.12.238.239]) by smtprelay.synopsys.com (Postfix) with ESMTP id EDCF810C08CB; Thu, 30 Aug 2018 17:42:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1535676167; bh=Z5akCYL009rl0wKCZtnI/FuePbdiBMBJ9B2dr0T4Its=; h=From:To:CC:Subject:Date:References:From; b=a816QZGFGIymIRqHQIMYL1yqWbW40PX5SgBtP4CAEZNuj2PuRsXVDyQl/D0te0nD1 oleZzwAVhf93HIiXaxpUzwxUXn0hOjzXeJa/5Y36buZc0SjRO4s1gM32XxmlZxmi+i gVTDip+vEJKAf9UCGyVI+oEd1dCowai4whDzigIC2Ngsb8J/PV09fr5YENfNlmmIF/ ikkFy8PB1CwQQS7uigMgZ2NFE8OtuOPYQ4xCpH2vP2LlJ3WVH6GnKWjIzM45FSoT8v 2OJ7H7CP17PMhxBlBboMQI1+9G1gjzm+PehzcgIaz1pNQrTSwEGpamgHq7IyI/0DYD 2KU69/10vJiLA== Received: from us01wehtc1.internal.synopsys.com (us01wehtc1-vip.internal.synopsys.com [10.12.239.236]) by mailhost.synopsys.com (Postfix) with ESMTP id 80CAF59EA; Thu, 30 Aug 2018 17:42:47 -0700 (PDT) Received: from us01wembx1.internal.synopsys.com ([169.254.1.253]) by us01wehtc1.internal.synopsys.com ([::1]) with mapi id 14.03.0361.001; Thu, 30 Aug 2018 17:42:47 -0700 From: Vineet Gupta To: Will Deacon , Peter Zijlstra CC: Eugeniy Paltsev , "linux-kernel@vger.kernel.org" , "mingo@kernel.org" , "tglx@linutronix.de" , "linux-snps-arc@lists.infradead.org" , Alexey Brodkin , "yamada.masahiro@socionext.com" , "linux-arm-kernel@lists.infradead.org" , "linux-arch@vger.kernel.org" Subject: Re: Patch "asm-generic/bitops/lock.h: Rewrite using atomic_fetch_" causes kernel crash Thread-Topic: Patch "asm-generic/bitops/lock.h: Rewrite using atomic_fetch_" causes kernel crash Thread-Index: AQHUP8bWpY6ZRO7qfEeDcvF8FJVDUg== Date: Fri, 31 Aug 2018 00:42:46 +0000 Message-ID: References: <1535567633.4465.23.camel@synopsys.com> <20180830094411.GX24124@hirez.programming.kicks-ass.net> <20180830095148.GB5942@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.144.199.104] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/30/2018 02:51 AM, Will Deacon wrote:=0A= > Yeah, the bit_spin_lock()/__bit_spin_unlock() race described in f75d48644= c56a=0A= > boils down to concurrent atomic_long_set_release() vs=0A= > atomic_long_fetch_or_acquire(), which really needs to work.=0A= =0A= I don't see how: __clear_bit_unlock() reads @old, flips a bit and then call= s=0A= atomic_long_set_release() so the race is not just with set_release.=0A= =0A= static inline int test_and_set_bit_lock(unsigned int nr, volatile unsig= ned=0A= long *p)=0A= {=0A= long old;=0A= unsigned long mask =3D (1UL << ((nr) % 32));=0A= =0A= p +=3D ((nr) / 32);=0A= old =3D atomic_long_fetch_or_acquire(mask, (atomic_long_t *)p);=0A= return !!(old & mask);=0A= }=0A= =0A= static inline void __clear_bit_unlock(unsigned int nr, volatile unsigne= d long *p)=0A= {=0A= unsigned long old;=0A= =0A= p +=3D ((nr) / 32);=0A= old =3D // soem typecheck magic on *p=0A= old &=3D ~(1UL << ((nr) % 32));=0A= atomic_long_set_release((atomic_long_t *)p, old);=0A= }=0A=