diff options
Diffstat (limited to 'fs/kernfs/dir.c')
-rw-r--r-- | fs/kernfs/dir.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c index f131fc23ffc4..fffca9517321 100644 --- a/fs/kernfs/dir.c +++ b/fs/kernfs/dir.c | |||
@@ -518,7 +518,14 @@ static struct kernfs_node *__kernfs_new_node(struct kernfs_root *root, | |||
518 | if (!kn) | 518 | if (!kn) |
519 | goto err_out1; | 519 | goto err_out1; |
520 | 520 | ||
521 | ret = ida_simple_get(&root->ino_ida, 1, 0, GFP_KERNEL); | 521 | /* |
522 | * If the ino of the sysfs entry created for a kmem cache gets | ||
523 | * allocated from an ida layer, which is accounted to the memcg that | ||
524 | * owns the cache, the memcg will get pinned forever. So do not account | ||
525 | * ino ida allocations. | ||
526 | */ | ||
527 | ret = ida_simple_get(&root->ino_ida, 1, 0, | ||
528 | GFP_KERNEL | __GFP_NOACCOUNT); | ||
522 | if (ret < 0) | 529 | if (ret < 0) |
523 | goto err_out2; | 530 | goto err_out2; |
524 | kn->ino = ret; | 531 | kn->ino = ret; |