diff for duplicates of <1496663315.3433.1.camel@primarydata.com> diff --git a/a/1.txt b/N1/1.txt index c589661..a1547dd 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,24 +1,42 @@ -T24gTW9uLCAyMDE3LTA2LTA1IGF0IDE2OjA1ICswODAwLCBKaWEtSnUgQmFpIHdyb3RlOg0KPiBU -aGUgZHJpdmVyIG1heSBzbGVlcCB1bmRlciBhIHJjdSByZWFkIGxvY2ssIGFuZCBmdW5jdGlvbiBj -YWxsIHBhdGgNCj4gaXM6DQo+IG5mc19wZXJtaXNzaW9uIChhY3F1aXJlIHRoZSBsb2NrIGJ5IHJj -dV9yZWFkX2xvY2spDQo+IMKgIG5mc19kb19hY2Nlc3MNCj4gwqDCoMKgwqBuZnNfYWNjZXNzX2Fk -ZF9jYWNoZQ0KPiDCoMKgwqDCoMKgwqBrbWFsbG9jKEdGUF9LRVJORUwpIC0tPiBtYXkgc2xlZXAN -Cj4gDQo+IFRvIGZpeCBpdCwgIkdGUF9LRVJORUwiIGlzIHJlcGxhY2VkIHdpdGggIkdGUF9BVE9N -SUMiLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSmlhLUp1IEJhaSA8YmFpamlhanUxOTkwQDE2My5j -b20+DQo+IC0tLQ0KPiDCoGZzL25mcy9kaXIuYyB8wqDCoMKgwqAyICstDQo+IMKgMSBmaWxlIGNo -YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv -ZnMvbmZzL2Rpci5jIGIvZnMvbmZzL2Rpci5jDQo+IGluZGV4IDMyY2NkNzcuLjdhMDc0ZGIgMTAw -NjQ0DQo+IC0tLSBhL2ZzL25mcy9kaXIuYw0KPiArKysgYi9mcy9uZnMvZGlyLmMNCj4gQEAgLTIz -MzMsNyArMjMzMyw3IEBAIHN0YXRpYyB2b2lkIG5mc19hY2Nlc3NfYWRkX3JidHJlZShzdHJ1Y3Qg -aW5vZGUNCj4gKmlub2RlLCBzdHJ1Y3QgbmZzX2FjY2Vzc19lbnRyeSAqDQo+IMKgDQo+IMKgdm9p -ZCBuZnNfYWNjZXNzX2FkZF9jYWNoZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QNCj4gbmZz -X2FjY2Vzc19lbnRyeSAqc2V0KQ0KPiDCoHsNCj4gLQlzdHJ1Y3QgbmZzX2FjY2Vzc19lbnRyeSAq -Y2FjaGUgPSBrbWFsbG9jKHNpemVvZigqY2FjaGUpLA0KPiBHRlBfS0VSTkVMKTsNCj4gKwlzdHJ1 -Y3QgbmZzX2FjY2Vzc19lbnRyeSAqY2FjaGUgPSBrbWFsbG9jKHNpemVvZigqY2FjaGUpLA0KPiBH -RlBfQVRPTUlDKTsNCj4gwqAJaWYgKGNhY2hlID09IE5VTEwpDQo+IMKgCQlyZXR1cm47DQo+IMKg -CVJCX0NMRUFSX05PREUoJmNhY2hlLT5yYl9ub2RlKTsNCg0KVGhlIFJDVSBsb2NrZWQgY29kZXBh -dGggd2lsbCBub3QgZXZlciBoaXQgbmZzX2FjY2Vzc19hZGRfcmJ0cmVlKCkuIEl0DQpyZXR1cm5z -IHdpdGggYW4gZXJyb3IgY29kZSBvZiAtRUNISUxEIGFmdGVyIHRoZSB0ZXN0IG9mICJtYXlfYmxv -Y2siLg0KDQpDaGVlcnMNCiAgVHJvbmQNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBORlMg -Y2xpZW50IG1haW50YWluZXIsIFByaW1hcnlEYXRhDQp0cm9uZC5teWtsZWJ1c3RAcHJpbWFyeWRh -dGEuY29tDQo= +On Mon, 2017-06-05 at 16:05 +0800, Jia-Ju Bai wrote: +> The driver may sleep under a rcu read lock, and function call path +> is: +> nfs_permission (acquire the lock by rcu_read_lock) +> nfs_do_access +> nfs_access_add_cache +> kmalloc(GFP_KERNEL) --> may sleep +> +> To fix it, "GFP_KERNEL" is replaced with "GFP_ATOMIC". +> +> Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com> +> --- +> fs/nfs/dir.c | 2 +- +> 1 file changed, 1 insertion(+), 1 deletion(-) +> +> diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c +> index 32ccd77..7a074db 100644 +> --- a/fs/nfs/dir.c +> +++ b/fs/nfs/dir.c +> @@ -2333,7 +2333,7 @@ static void nfs_access_add_rbtree(struct inode +> *inode, struct nfs_access_entry * +> +> void nfs_access_add_cache(struct inode *inode, struct +> nfs_access_entry *set) +> { +> - struct nfs_access_entry *cache = kmalloc(sizeof(*cache), +> GFP_KERNEL); +> + struct nfs_access_entry *cache = kmalloc(sizeof(*cache), +> GFP_ATOMIC); +> if (cache == NULL) +> return; +> RB_CLEAR_NODE(&cache->rb_node); + +The RCU locked codepath will not ever hit nfs_access_add_rbtree(). It +returns with an error code of -ECHILD after the test of "may_block". + +Cheers + Trond +-- +Trond Myklebust +Linux NFS client maintainer, PrimaryData +trond.myklebust@primarydata.com diff --git a/a/content_digest b/N1/content_digest index 1da9e40..92d219d 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -8,29 +8,47 @@ " linux-nfs@vger.kernel.org <linux-nfs@vger.kernel.org>\0" "\00:1\0" "b\0" - "T24gTW9uLCAyMDE3LTA2LTA1IGF0IDE2OjA1ICswODAwLCBKaWEtSnUgQmFpIHdyb3RlOg0KPiBU\n" - "aGUgZHJpdmVyIG1heSBzbGVlcCB1bmRlciBhIHJjdSByZWFkIGxvY2ssIGFuZCBmdW5jdGlvbiBj\n" - "YWxsIHBhdGgNCj4gaXM6DQo+IG5mc19wZXJtaXNzaW9uIChhY3F1aXJlIHRoZSBsb2NrIGJ5IHJj\n" - "dV9yZWFkX2xvY2spDQo+IMKgIG5mc19kb19hY2Nlc3MNCj4gwqDCoMKgwqBuZnNfYWNjZXNzX2Fk\n" - "ZF9jYWNoZQ0KPiDCoMKgwqDCoMKgwqBrbWFsbG9jKEdGUF9LRVJORUwpIC0tPiBtYXkgc2xlZXAN\n" - "Cj4gDQo+IFRvIGZpeCBpdCwgIkdGUF9LRVJORUwiIGlzIHJlcGxhY2VkIHdpdGggIkdGUF9BVE9N\n" - "SUMiLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSmlhLUp1IEJhaSA8YmFpamlhanUxOTkwQDE2My5j\n" - "b20+DQo+IC0tLQ0KPiDCoGZzL25mcy9kaXIuYyB8wqDCoMKgwqAyICstDQo+IMKgMSBmaWxlIGNo\n" - "YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv\n" - "ZnMvbmZzL2Rpci5jIGIvZnMvbmZzL2Rpci5jDQo+IGluZGV4IDMyY2NkNzcuLjdhMDc0ZGIgMTAw\n" - "NjQ0DQo+IC0tLSBhL2ZzL25mcy9kaXIuYw0KPiArKysgYi9mcy9uZnMvZGlyLmMNCj4gQEAgLTIz\n" - "MzMsNyArMjMzMyw3IEBAIHN0YXRpYyB2b2lkIG5mc19hY2Nlc3NfYWRkX3JidHJlZShzdHJ1Y3Qg\n" - "aW5vZGUNCj4gKmlub2RlLCBzdHJ1Y3QgbmZzX2FjY2Vzc19lbnRyeSAqDQo+IMKgDQo+IMKgdm9p\n" - "ZCBuZnNfYWNjZXNzX2FkZF9jYWNoZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QNCj4gbmZz\n" - "X2FjY2Vzc19lbnRyeSAqc2V0KQ0KPiDCoHsNCj4gLQlzdHJ1Y3QgbmZzX2FjY2Vzc19lbnRyeSAq\n" - "Y2FjaGUgPSBrbWFsbG9jKHNpemVvZigqY2FjaGUpLA0KPiBHRlBfS0VSTkVMKTsNCj4gKwlzdHJ1\n" - "Y3QgbmZzX2FjY2Vzc19lbnRyeSAqY2FjaGUgPSBrbWFsbG9jKHNpemVvZigqY2FjaGUpLA0KPiBH\n" - "RlBfQVRPTUlDKTsNCj4gwqAJaWYgKGNhY2hlID09IE5VTEwpDQo+IMKgCQlyZXR1cm47DQo+IMKg\n" - "CVJCX0NMRUFSX05PREUoJmNhY2hlLT5yYl9ub2RlKTsNCg0KVGhlIFJDVSBsb2NrZWQgY29kZXBh\n" - "dGggd2lsbCBub3QgZXZlciBoaXQgbmZzX2FjY2Vzc19hZGRfcmJ0cmVlKCkuIEl0DQpyZXR1cm5z\n" - "IHdpdGggYW4gZXJyb3IgY29kZSBvZiAtRUNISUxEIGFmdGVyIHRoZSB0ZXN0IG9mICJtYXlfYmxv\n" - "Y2siLg0KDQpDaGVlcnMNCiAgVHJvbmQNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBORlMg\n" - "Y2xpZW50IG1haW50YWluZXIsIFByaW1hcnlEYXRhDQp0cm9uZC5teWtsZWJ1c3RAcHJpbWFyeWRh\n" - dGEuY29tDQo= + "On Mon, 2017-06-05 at 16:05 +0800, Jia-Ju Bai wrote:\n" + "> The driver may sleep under a rcu read lock, and function call path\n" + "> is:\n" + "> nfs_permission (acquire the lock by rcu_read_lock)\n" + "> \302\240 nfs_do_access\n" + "> \302\240\302\240\302\240\302\240nfs_access_add_cache\n" + "> \302\240\302\240\302\240\302\240\302\240\302\240kmalloc(GFP_KERNEL) --> may sleep\n" + "> \n" + "> To fix it, \"GFP_KERNEL\" is replaced with \"GFP_ATOMIC\".\n" + "> \n" + "> Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com>\n" + "> ---\n" + "> \302\240fs/nfs/dir.c |\302\240\302\240\302\240\302\2402 +-\n" + "> \302\2401 file changed, 1 insertion(+), 1 deletion(-)\n" + "> \n" + "> diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c\n" + "> index 32ccd77..7a074db 100644\n" + "> --- a/fs/nfs/dir.c\n" + "> +++ b/fs/nfs/dir.c\n" + "> @@ -2333,7 +2333,7 @@ static void nfs_access_add_rbtree(struct inode\n" + "> *inode, struct nfs_access_entry *\n" + "> \302\240\n" + "> \302\240void nfs_access_add_cache(struct inode *inode, struct\n" + "> nfs_access_entry *set)\n" + "> \302\240{\n" + "> -\tstruct nfs_access_entry *cache = kmalloc(sizeof(*cache),\n" + "> GFP_KERNEL);\n" + "> +\tstruct nfs_access_entry *cache = kmalloc(sizeof(*cache),\n" + "> GFP_ATOMIC);\n" + "> \302\240\tif (cache == NULL)\n" + "> \302\240\t\treturn;\n" + "> \302\240\tRB_CLEAR_NODE(&cache->rb_node);\n" + "\n" + "The RCU locked codepath will not ever hit nfs_access_add_rbtree(). It\n" + "returns with an error code of -ECHILD after the test of \"may_block\".\n" + "\n" + "Cheers\n" + " Trond\n" + "-- \n" + "Trond Myklebust\n" + "Linux NFS client maintainer, PrimaryData\n" + trond.myklebust@primarydata.com -15a975f261658b0627732f9812573a0456cedfa91d4aa07e3c2f062191f8dab8 +92f018325080e185ed25314ed1486b498b10665bd90ad9d233c2c84313eb3e07
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.