Return-Path: linux-nfs-owner@vger.kernel.org Received: from dgate10.ts.fujitsu.com ([80.70.172.49]:15519 "EHLO dgate10.ts.fujitsu.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933005Ab3BSRSY (ORCPT ); Tue, 19 Feb 2013 12:18:24 -0500 Message-Id: Date: 19 Feb 2013 18:08:40 +0100 From: bstroesser@ts.fujitsu.com To: neilb@suse.de, bfields@fieldses.org Cc: linux-nfs@vger.kernel.org, bstroesser@ts.fujitsu.com Subject: [PATCH] sunrpc.ko: RPC cache fix races Content-Type: text/plain; charset=us-ascii Sender: linux-nfs-owner@vger.kernel.org List-ID: U2Vjb25kIGF0dGVtcHQgdXNpbmcgdGhlIGNvcnJlY3QgRlJPTS4gU29ycnkgZm9yIHRoZSBu b2lzZS4KCgpIaSwKCkkgZm91bmQgYSBwcm9ibGVtIGluIHN1bnJwYy5rbyBvbiBhIFNMRVMx MSBTUDEgKDIuNi4zMi41OS0wLDcuMSkKYW5kIGZpeGVkIGl0IChzZWUgZmlyc3QgcGF0Y2gg aWZvciAyLjYuMzIuNjAgYmVsb3cpLgpGb3IgdXMgdGhlIHBhdGNoIHdvcmtzIGZpbmUgKHRl c3RlZCBvbiAyLjYuMzIuNTktMC43LjEpLgoKQUZBSUNTIGZyb20gdGhlIGNvZGUsIHRoZSBw cm9ibGVtIHNlZW1zIHRvIHBlcnNpc3QgaW4gY3VycmVudAprZXJuZWwgdmVyc2lvbnMgYWxz by4gVGh1cywgSSBhZGRlZCB0aGUgc2Vjb25kIHBhdGNoIGZvciAzLjcuOS4KQXMgdGhlIHNl dHVwIHRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSBpcyBxdWl0ZSBjb21wbGV4LCBJIGNvdWxk bid0CnRlc3QgdGhlIHNlY29uZCBwYXRjaCB5ZXQuIFNvIGNvbnNpZGVyIHRoaXMgb25lIGFz IGEgUkZDLgoKQmVzdCByZWdhcmRzLApCb2RvCgpQbGVhc2UgQ0MgbWUsIEknbSBub3Qgb24g dGhlIGxpc3QuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpG cm9tOiBCb2RvIFN0cm9lc3NlciA8YnN0cm9lc3NlckB0cy5mdWppdHN1LmNvbT4KRGF0ZTog RnJpLCAwOCBGZWIgMjAxMwpTdWJqZWN0OiBbUEFUQ0hdIG5ldDogc3VucnBjOiBmaXggcmFj ZXMgaW4gUlBDIGNhY2hlCgpXZSBmb3VuZCB0aGUgcHJvYmxlbSBhbmQgdGVzdGVkIHRoZSBw YXRjaCBvbiBhIFNMRVMxMSBTUDEgMi42LjMyLjU5LTAuNy4xCgpUaGlzIHBhdGNoIGFwcGxp ZXMgdG8gbGludXgtMi42LjMyLjYwIChjaGFuZ2VkIG1vbm90b25pY19zZWNvbmRzIC0tPgpn ZXRfc2Vjb25kcygpKQoKU3BvcmFkaWNhbGx5IE5GUzMgUlBDIHJlcXVlc3RzIHRvIHRoZSBu ZnMgc2VydmVyIGFyZSBkcm9wcGVkIGR1ZSB0bwpjYWNoZV9jaGVjaygpIChuZXQvc3VucnBj L2NhY2hlLmMpIHJldHVybmluZyAtRVRJTUVET1VUIGZvciBhbiBlbnRyeQpvZiB0aGUgImF1 dGgudW5peC5naWQiIGNhY2hlLgpJbiB0aGlzIGNhc2UsIG5vIE5GUyByZXBseSBpcyBzZW50 IHRvIHRoZSBjbGllbnQuCgpUaGUgcmVhc29uIGZvciB0aGUgZHJvcHBlZCByZXF1ZXN0cyBh cmUgcmFjZXMgaW4gY2FjaGVfY2hlY2soKSB3aGVuCmNhY2hlX21ha2VfdXBjYWxsKCkgcmV0 dXJucyAtRUlOVkFMIChiZWNhdXNlIGl0IGlzIGNhbGxlZCBmb3IgYSBjYWNoZQp3aXRob3V0 IHJlYWRlcnMpIGFuZCBjYWNoZV9jaGVjaygpIHRoZXJlZm9yZSByZWZyZXNoZXMgdGhlIGNh Y2hlIGVudHJ5IAoocnYgPT0gLUVBR0FJTikuCgpUaGVyZSBhcmUgdGhyZWUgZGV0YWlscyB0 aGF0IG5lZWQgdG8gYmUgY2hhbmdlZDoKIDEpIGNhY2hlX3JldmlzaXRfcmVxdWVzdCgpIG11 c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgY2FjaGVfZnJlc2hfbG9ja2VkKCkKICAgIGhhcyB1 cGRhdGVkIHRoZSBjYWNoZSBlbnRyeSwgYXMgY2FjaGVfcmV2aXNpdF9yZXF1ZXN0KCkgd2Fr ZXMgdXAKICAgIHRocmVhZHMgd2FpdGluZyBmb3IgdGhlIGNhY2hlIGVudHJ5IHRvIGJlIHVw ZGF0ZWQuCiAgICBUaGUgZXhwbGljaXQgY2FsbCB0byBjYWNoZV9yZXZpc2l0X3JlcXVlc3Qo KSBpcyBub3QgbmVlZGVkLCBhcwogICAgY2FjaGVfZnJlc2hfdW5sb2NrZWQoKSBjYWxscyBp dCBhbnl3YXkuCiAgICAoQnV0IGluIGNhc2Ugb2Ygbm90IHVwZGF0aW5nIHRoZSBjYWNoZSBl bnRyeSwgY2FjaGVfcmV2aXNpdF9yZXF1ZXN0KCkKICAgIG11c3QgYmUgY2FsbGVkLiBUaHVz LCB3ZSB1c2UgYSBmYWxsIHRocm91Z2ggaW4gdGhlICJjYXNlIikuCiAyKSBDQUNIRV9QRU5E SU5HIG11c3Qgbm90IGJlIGNsZWFyZWQgYmVmb3JlIGNhY2hlX2ZyZXNoX2xvY2tlZCgpIGhh cwogICAgdXBkYXRlZCB0aGUgY2FjaGUgZW50cnksIGFzIGNhY2hlX2RlZmVyX3JlcSgpIGNh biByZXR1cm4gd2l0aG91dCByZWFsbHkKICAgIHNsZWVwaW5nIGlmIGl0IGRldGVjdHMgQ0FD SEVfUEVORElORyB1bnNldC4KICAgIChJbiBjYXNlIG9mIG5vdCB1cGRhdGluZyB0aGUgY2Fj aGUgZW50cnkgYWdhaW4gd2UgdXNlIHRoZSBmYWxsIHRocm91Z2gpCiAzKSBJbWFnaW5lIGEg dGhyZWFkIHRoYXQgY2FsbHMgY2FjaGVfY2hlY2soKSBhbmQgZ2V0cyBydiA9IC1FTk9FTlQg ZnJvbQogICAgY2FjaGVfaXNfdmFsaWQoKS4gVGhlbiBpdCBzZXRzIENBQ0hFX1BFTkRJTkdz IGFuZCBjYWxscwogICAgY2FjaGVfbWFrZV91cGNhbGwoKS4KICAgIFdlIGFzc3VtZSB0aGF0 IG1lYW53aGlsZSBnZXRfc2Vjb25kcygpIGFkdmFuY2VzIHRvIHRoZSBuZXh0CiAgICBzZWMu IGFuZCBhIHNlY29uZCB0aHJlYWQgYWxzbyBjYWxscyBjYWNoZV9jaGVjaygpLiBJdCBnZXRz IC1FQUdBSU4gZnJvbQogICAgY2FjaGVfaXNfdmFsaWQoKSBmb3IgdGhlIHNhbWUgY2FjaGUg ZW50cnkuIEFzIENBQ0hFX1BFTkRJTkcgc3RpbGwgaXMKICAgIHNldCwgaXQgY2FsbHMgY2Fj aGVfZGVmZXJfcmVxKCkgaW1tZWRpYXRlbHkgYW5kIHdhaXRzIGZvciBhIHdha2V1cCBmcm9t CiAgICB0aGUgZmlyc3QgdGhyZWFkLgogICAgQWZ0ZXIgY2FjaGVfbWFrZV91cGNhbGwoKSBy ZXR1cm5lZCAtRUlOVkFMLCB0aGUgZmlyc3QgdGhyZWFkIGRvZXMgbm90CiAgICB1cGRhdGUg dGhlIGNhY2hlIGVudHJ5IGFzIGl0IGhhZCBnb3QgcnYgPSAtRU5PRU5ULCBidXQgd2FrZXMg dXAgdGhlCiAgICBzZWNvbmQgdGhyZWFkIGJ5IGNhbGxpbmcgY2FjaGVfcmV2aXNpdF9yZXF1 ZXN0KCkuCiAgICBUaHJlYWQgdHdvIHdha2VzIHVwLCBjYWxscyBjYWNoZV9pc192YWxpZCgp IGFuZCBhZ2FpbiBnZXRzIC1FQUdBSU4uCiAgICBUaHVzLCB0aGUgcmVzdWx0IG9mIHRoZSBz ZWNvbmQgY2FjaGVfY2hlY2soKSBpcyAtRVRJTUVET1VUIGFuZCB0aGUKICAgIE5GUyByZXF1 ZXN0IGlzIGRyb3BwZWQuCiAgICBUbyBzb2x2ZSB0aGlzLCB0aGUgY2FjaGUgZW50cnkgbm93 IGlzIHVwZGF0ZWQgbm90IG9ubHkgaWYgcnYgPT0gLUVBR0FJTgogICAgYnV0IGlmIHJ2ID09 IC1FTk9FTlQgYWxzby4gVGhpcyBpcyBhIHN1ZmZpY2llbnQgd29ya2Fyb3VuZCwgYXMgdGhl CiAgICBmaXJzdCB0aHJlYWQgd291bGQgaGF2ZSB0byBzdGF5IGluIGNhY2hlX2NoZWNrKCkg YmV0d2VlbiBpdHMgY2FsbCB0bwogICAgY2FjaGVfaXNfdmFsaWQoKSBhbmQgY2xlYXJpbmcg Q0FDSEVfUEVORElORyBmb3IgbW9yZSB0aGFuIDYwIHNlY29uZHMKICAgIHRvIGJyZWFrIHRo ZSB3b3JrYXJvdW5kLgogICAgClNpZ25lZC1vZmYtYnk6IEJvZG8gU3Ryb2Vzc2VyIDxic3Ry b2Vzc2VyQHRzLmZ1aml0c3UuY29tPgotLS0KCi0tLSBhL25ldC9zdW5ycGMvY2FjaGUuYwky MDEyLTA4LTA4IDIxOjM1OjA5LjAwMDAwMDAwMCArMDIwMAorKysgYi9uZXQvc3VucnBjL2Nh Y2hlLmMJMjAxMy0wMi0wOCAxNDoyOTo0MS4wMDAwMDAwMDAgKzAxMDAKQEAgLTIzMywxNSAr MjMzLDE0IEBAIGludCBjYWNoZV9jaGVjayhzdHJ1Y3QgY2FjaGVfZGV0YWlsICpkZXQKIAkJ aWYgKCF0ZXN0X2FuZF9zZXRfYml0KENBQ0hFX1BFTkRJTkcsICZoLT5mbGFncykpIHsKIAkJ CXN3aXRjaCAoY2FjaGVfbWFrZV91cGNhbGwoZGV0YWlsLCBoKSkgewogCQkJY2FzZSAtRUlO VkFMOgotCQkJCWNsZWFyX2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpOwotCQkJCWNh Y2hlX3JldmlzaXRfcmVxdWVzdChoKTsKLQkJCQlpZiAocnYgPT0gLUVBR0FJTikgeworCQkJ CWlmIChydiA9PSAtRUFHQUlOIHx8IHJ2ID09IC1FTk9FTlQpIHsKIAkJCQkJc2V0X2JpdChD QUNIRV9ORUdBVElWRSwgJmgtPmZsYWdzKTsKIAkJCQkJY2FjaGVfZnJlc2hfbG9ja2VkKGgs IGdldF9zZWNvbmRzKCkrQ0FDSEVfTkVXX0VYUElSWSk7CisJCQkJCWNsZWFyX2JpdChDQUNI RV9QRU5ESU5HLCAmaC0+ZmxhZ3MpOwogCQkJCQljYWNoZV9mcmVzaF91bmxvY2tlZChoLCBk ZXRhaWwpOwogCQkJCQlydiA9IC1FTk9FTlQ7CisJCQkJCWJyZWFrOwogCQkJCX0KLQkJCQli cmVhazsKIAogCQkJY2FzZSAtRUFHQUlOOgogCQkJCWNsZWFyX2JpdChDQUNIRV9QRU5ESU5H LCAmaC0+ZmxhZ3MpOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpGcm9tOiBCb2RvIFN0cm9lc3NlciA8YnN0cm9lc3NlckB0cy5mdWppdHN1LmNvbT4KRGF0 ZTogRnJpLCAwOCBGZWIgMjAxMwpTdWJqZWN0OiBbUEFUQ0hdIG5ldDogc3VucnBjOiBmaXgg cmFjZXMgaW4gUlBDIGNhY2hlCgpUaGlzIHBhdGNoIGFwcGxpZXMgdG8gU0xFUyAxMSBTUDIg bGludXgtMy4wLjUxLTAuNy45IGFuZCBhbHNvIHRvCnZhbmlsbGEgbGludXgtMy43LjkKCkl0 IGlzIHVudGVzdGVkIGFuZCBpcyBvbmx5IGJhc2VkIG9uIGEgY29kZSByZXZpZXcgYWZ0ZXIg d2UKYW5hbHl6ZWQgdGhlIHJlYXNvbiBmb3IgTkZTIHJlcXVlc3RzIGJlaW5nIGRyb3BwZWQg b24gYQpTTEVTMTEgU1AxIChsaW51eC0yLjYuMzIuNTktMC43LjEpCgpTcG9yYWRpY2FsbHkg TkZTMyBSUEMgcmVxdWVzdHMgdG8gdGhlIG5mcyBzZXJ2ZXIgYXJlIGRyb3BwZWQgZHVlIHRv CmNhY2hlX2NoZWNrKCkgKG5ldC9zdW5ycGMvY2FjaGUuYykgcmV0dXJuaW5nIC1FVElNRURP VVQgZm9yIGFuIGVudHJ5Cm9mIHRoZSAiYXV0aC51bml4LmdpZCIgY2FjaGUuCkluIHRoaXMg Y2FzZSwgbm8gTkZTIHJlcGx5IGlzIHNlbnQgdG8gdGhlIGNsaWVudC4KClRoZSByZWFzb24g Zm9yIHRoZSBkcm9wcGVkIHJlcXVlc3RzIGFyZSByYWNlcyBpbiBjYWNoZV9jaGVjaygpIHdo ZW4KY2FjaGVfbWFrZV91cGNhbGwoKSByZXR1cm5zIC1FSU5WQUwgKGJlY2F1c2UgaXQgaXMg Y2FsbGVkIGZvciBhIGNhY2hlCndpdGhvdXQgcmVhZGVycykgYW5kIGNhY2hlX2NoZWNrKCkg dGhlcmVmb3JlIHJlZnJlc2hlcyB0aGUgY2FjaGUgZW50cnkgCihydiA9PSAtRUFHQUlOKS4K ClRoZXJlIGFyZSB0d28gZGV0YWlscyB0aGF0IG5lZWQgdG8gYmUgY2hhbmdlZDoKIDEpIGNh Y2hlX3JldmlzaXRfcmVxdWVzdCgpIG11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgY2FjaGVf ZnJlc2hfbG9ja2VkKCkKICAgIGhhcyB1cGRhdGVkIHRoZSBjYWNoZSBlbnRyeSwgYXMgY2Fj aGVfcmV2aXNpdF9yZXF1ZXN0KCkgd2FrZXMgdXAKICAgIHRocmVhZHMgd2FpdGluZyBmb3Ig dGhlIGNhY2hlIGVudHJ5IHRvIGJlIHVwZGF0ZWQuCiAgICBUaGUgZXhwbGljaXQgY2FsbCB0 byBjYWNoZV9yZXZpc2l0X3JlcXVlc3QoKSBpcyBub3QgbmVlZGVkLCBhcwogICAgY2FjaGVf ZnJlc2hfdW5sb2NrZWQoKSBjYWxscyBpdCBhbnl3YXkuCiAgICAoQnV0IGluIGNhc2Ugb2Yg bm90IHVwZGF0aW5nIHRoZSBjYWNoZSBlbnRyeSwgY2FjaGVfcmV2aXNpdF9yZXF1ZXN0KCkK ICAgIG11c3QgYmUgY2FsbGVkKS4KIDIpIENBQ0hFX1BFTkRJTkcgbXVzdCBub3QgYmUgY2xl YXJlZCBiZWZvcmUgY2FjaGVfZnJlc2hfbG9ja2VkKCkgaGFzCiAgICB1cGRhdGVkIHRoZSBj YWNoZSBlbnRyeSwgYXMgY2FjaGVfd2FpdF9yZXEoKSBjYWxsZWQgYnkKICAgIGNhY2hlX2Rl ZmVyX3JlcSgpIGNhbiByZXR1cm4gd2l0aG91dCByZWFsbHkgc2xlZXBpbmcgaWYgaXQgZGV0 ZWN0cwogICAgQ0FDSEVfUEVORElORyB1bnNldC4KClNpZ25lZC1vZmYtYnk6IEJvZG8gU3Ry b2Vzc2VyIDxic3Ryb2Vzc2VyQHRzLmZ1aml0c3UuY29tPgotLS0KCi0tLSBhL25ldC9zdW5y cGMvY2FjaGUuYwkyMDEzLTAyLTA4IDE1OjU2OjA3LjAwMDAwMDAwMCArMDEwMAorKysgYi9u ZXQvc3VucnBjL2NhY2hlLmMJMjAxMy0wMi0wOCAxNjowNDozMi4wMDAwMDAwMDAgKzAxMDAK QEAgLTIzMCwxMSArMjMwLDE0IEBAIHN0YXRpYyBpbnQgdHJ5X3RvX25lZ2F0ZV9lbnRyeShz dHJ1Y3QgY2EKIAlydiA9IGNhY2hlX2lzX3ZhbGlkKGRldGFpbCwgaCk7CiAJaWYgKHJ2ICE9 IC1FQUdBSU4pIHsKIAkJd3JpdGVfdW5sb2NrKCZkZXRhaWwtPmhhc2hfbG9jayk7CisJCWNs ZWFyX2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpOworCQljYWNoZV9yZXZpc2l0X3Jl cXVlc3QoaCk7CiAJCXJldHVybiBydjsKIAl9CiAJc2V0X2JpdChDQUNIRV9ORUdBVElWRSwg JmgtPmZsYWdzKTsKIAljYWNoZV9mcmVzaF9sb2NrZWQoaCwgc2Vjb25kc19zaW5jZV9ib290 KCkrQ0FDSEVfTkVXX0VYUElSWSk7CiAJd3JpdGVfdW5sb2NrKCZkZXRhaWwtPmhhc2hfbG9j ayk7CisJY2xlYXJfYml0KENBQ0hFX1BFTkRJTkcsICZoLT5mbGFncyk7CiAJY2FjaGVfZnJl c2hfdW5sb2NrZWQoaCwgZGV0YWlsKTsKIAlyZXR1cm4gLUVOT0VOVDsKIH0KQEAgLTI3NSw4 ICsyNzgsNiBAQCBpbnQgY2FjaGVfY2hlY2soc3RydWN0IGNhY2hlX2RldGFpbCAqZGV0CiAJ CWlmICghdGVzdF9hbmRfc2V0X2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpKSB7CiAJ CQlzd2l0Y2ggKGNhY2hlX21ha2VfdXBjYWxsKGRldGFpbCwgaCkpIHsKIAkJCWNhc2UgLUVJ TlZBTDoKLQkJCQljbGVhcl9iaXQoQ0FDSEVfUEVORElORywgJmgtPmZsYWdzKTsKLQkJCQlj YWNoZV9yZXZpc2l0X3JlcXVlc3QoaCk7CiAJCQkJcnYgPSB0cnlfdG9fbmVnYXRlX2VudHJ5 KGRldGFpbCwgaCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIC1FQUdBSU46Cg==