Re: [PATCH 1/8] kernfs: Add API to generate relative kernfs path
From: Tejun Heo <hidden>
Date: 2015-12-23 16:08:59
Also in:
cgroups, lkml
From: Tejun Heo <hidden>
Date: 2015-12-23 16:08:59
Also in:
cgroups, lkml
Hello, Serge. On Tue, Dec 22, 2015 at 10:23:22PM -0600, serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org wrote:
@@ -164,18 +286,39 @@ void pr_cont_kernfs_name(struct kernfs_node *kn) void pr_cont_kernfs_path(struct kernfs_node *kn) { unsigned long flags; - char *p; + char *p = NULL; + int sz1, sz2; spin_lock_irqsave(&kernfs_rename_lock, flags); - p = kernfs_path_locked(kn, kernfs_pr_cont_buf, - sizeof(kernfs_pr_cont_buf)); - if (p) - pr_cont("%s", p); - else - pr_cont("<name too long>"); + sz1 = kernfs_path_from_node_locked(kn, NULL, kernfs_pr_cont_buf, + sizeof(kernfs_pr_cont_buf)); + if (sz1 < 0) { + pr_cont("(error)"); + goto out; + } + + if (sz1 < sizeof(kernfs_pr_cont_buf)) { + pr_cont("%s", kernfs_pr_cont_buf); + goto out; + } + + p = kmalloc(sz1 + 1, GFP_NOFS);
We can't do GFP_NOFS allocation while holding a spinlock and we don't want to do atomic allocation here either. I think it'd be best to keep using the static buffer. Thanks. -- tejun