All of lore.kernel.org
 help / color / mirror / Atom feed
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.