From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756010Ab3EVOZv (ORCPT ); Wed, 22 May 2013 10:25:51 -0400 Received: from mx0.aculab.com ([213.249.233.131]:46004 "HELO mx0.aculab.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1754106Ab3EVOZu (ORCPT ); Wed, 22 May 2013 10:25:50 -0400 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Subject: RE: [PATCH v2] rcu: fix a race in hlist_nulls_for_each_entry_rcu macro Date: Wed, 22 May 2013 15:23:19 +0100 Message-ID: In-Reply-To: <1369229800.3301.332.camel@edumazet-glaptop> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v2] rcu: fix a race in hlist_nulls_for_each_entry_rcu macro Thread-Index: Ac5W8WiDxPADMNb8QdKdNB6bBsdiSwABNHEw References: <519B38EC.90401@yandex-team.ru> <20130521120906.GD3578@linux.vnet.ibm.com> <1369143885.3301.221.camel@edumazet-glaptop> <519B8908.9080007@yandex-team.ru> <1369150693.3301.233.camel@edumazet-glaptop> <519BB90B.6080706@yandex-team.ru> <1369188080.3301.268.camel@edumazet-glaptop> <1369201765.3301.299.camel@edumazet-glaptop> <519CB2D8.103@yandex-team.ru> <1369225837.3301.324.camel@edumazet-glaptop> <1369229800.3301.332.camel@edumazet-glaptop> From: "David Laight" To: "Eric Dumazet" Cc: "Roman Gushchin" , , "Dipankar Sarma" , , , , "David S. Miller" , "Alexey Kuznetsov" , "James Morris" , "Hideaki YOSHIFUJI" , "Patrick McHardy" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id r4MEPwwR028915 > Here this loops begin by > > someptr = rcu_dereference(somelocation); > > May claim is rcu_dereference() should force the compiler to read again > somelocation. Its done thanks to ACCESS_ONCE(). But apparently in the > specific case of &hslot->head, it doesnt work. Hmmm.... #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) That might be doomed to fail for much the same reason as: void x(struct foo *unaligned_ptr) { char *p = (void *)unaligned_ptr; memcpy(tgt, p, sizeof *p); } generates alignment faults. And that casts to a union type don't get around 'strict aliasing'. Basically the compiler makes use of the fact that you should cast addresses back to their original type before dereferencing them. So I'm not sure you can use a cast to add a type qualifier. The front-end lets you remove 'const', but I suspect the optimiser is using the original types. David {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I From mboxrd@z Thu Jan 1 00:00:00 1970 From: "David Laight" Subject: RE: [PATCH v2] rcu: fix a race in hlist_nulls_for_each_entry_rcu macro Date: Wed, 22 May 2013 15:23:19 +0100 Message-ID: References: <519B38EC.90401@yandex-team.ru> <20130521120906.GD3578@linux.vnet.ibm.com> <1369143885.3301.221.camel@edumazet-glaptop> <519B8908.9080007@yandex-team.ru> <1369150693.3301.233.camel@edumazet-glaptop> <519BB90B.6080706@yandex-team.ru> <1369188080.3301.268.camel@edumazet-glaptop> <1369201765.3301.299.camel@edumazet-glaptop> <519CB2D8.103@yandex-team.ru> <1369225837.3301.324.camel@edumazet-glaptop> <1369229800.3301.332.camel@edumazet-glaptop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "Roman Gushchin" , , "Dipankar Sarma" , , , , "David S. Miller" , "Alexey Kuznetsov" , "James Morris" , "Hideaki YOSHIFUJI" , "Patrick McHardy" To: "Eric Dumazet" Return-path: Content-class: urn:content-classes:message In-Reply-To: <1369229800.3301.332.camel@edumazet-glaptop> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org PiBIZXJlIHRoaXMgbG9vcHMgYmVnaW4gYnkNCj4gDQo+ICBzb21lcHRyID0gcmN1X2RlcmVmZXJl bmNlKHNvbWVsb2NhdGlvbik7DQo+IA0KPiBNYXkgY2xhaW0gaXMgcmN1X2RlcmVmZXJlbmNlKCkg c2hvdWxkIGZvcmNlIHRoZSBjb21waWxlciB0byByZWFkIGFnYWluDQo+IHNvbWVsb2NhdGlvbi4g SXRzIGRvbmUgdGhhbmtzIHRvIEFDQ0VTU19PTkNFKCkuIEJ1dCBhcHBhcmVudGx5IGluIHRoZQ0K PiBzcGVjaWZpYyBjYXNlIG9mICZoc2xvdC0+aGVhZCwgaXQgZG9lc250IHdvcmsuDQoNCkhtbW0u Li4uDQojZGVmaW5lIEFDQ0VTU19PTkNFKHgpICgqKHZvbGF0aWxlIHR5cGVvZih4KSAqKSYoeCkp DQpUaGF0IG1pZ2h0IGJlIGRvb21lZCB0byBmYWlsIGZvciBtdWNoIHRoZSBzYW1lIHJlYXNvbiBh czoNCnZvaWQgeChzdHJ1Y3QgZm9vICp1bmFsaWduZWRfcHRyKQ0Kew0KICAgIGNoYXIgKnAgPSAo dm9pZCAqKXVuYWxpZ25lZF9wdHI7DQogICAgbWVtY3B5KHRndCwgcCwgc2l6ZW9mICpwKTsNCn0N CmdlbmVyYXRlcyBhbGlnbm1lbnQgZmF1bHRzLg0KQW5kIHRoYXQgY2FzdHMgdG8gYSB1bmlvbiB0 eXBlIGRvbid0IGdldCBhcm91bmQgJ3N0cmljdCBhbGlhc2luZycuDQoNCkJhc2ljYWxseSB0aGUg Y29tcGlsZXIgbWFrZXMgdXNlIG9mIHRoZSBmYWN0IHRoYXQgeW91IHNob3VsZA0KY2FzdCBhZGRy ZXNzZXMgYmFjayB0byB0aGVpciBvcmlnaW5hbCB0eXBlIGJlZm9yZSBkZXJlZmVyZW5jaW5nIHRo ZW0uDQoNClNvIEknbSBub3Qgc3VyZSB5b3UgY2FuIHVzZSBhIGNhc3QgdG8gYWRkIGEgdHlwZSBx dWFsaWZpZXIuDQpUaGUgZnJvbnQtZW5kIGxldHMgeW91IHJlbW92ZSAnY29uc3QnLCBidXQgSSBz dXNwZWN0IHRoZSBvcHRpbWlzZXINCmlzIHVzaW5nIHRoZSBvcmlnaW5hbCB0eXBlcy4NCg0KCURh dmlkDQoNCg==