return 0;
}
-void kernfs_unmap_file(struct kernfs_node *kn)
+void kernfs_unmap_bin_file(struct kernfs_node *kn)
{
struct kernfs_open_node *on;
struct kernfs_open_file *of;
+ if (!(kn->flags & KERNFS_HAS_MMAP))
+ return;
+
spin_lock_irq(&kernfs_open_node_lock);
on = kn->attr.open;
if (on)
bool name_is_static,
struct lock_class_key *key)
{
+ struct kernfs_addrm_cxt acxt;
struct kernfs_node *kn;
unsigned flags;
int rc;
if (name_is_static)
flags |= KERNFS_STATIC_NAME;
- kn = kernfs_new_node(kernfs_root(parent), name,
- (mode & S_IALLUGO) | S_IFREG, flags);
+ kn = kernfs_new_node(parent, name, (mode & S_IALLUGO) | S_IFREG, flags);
if (!kn)
return ERR_PTR(-ENOMEM);
if (ops->mmap)
kn->flags |= KERNFS_HAS_MMAP;
- rc = kernfs_add_one(kn, parent);
+ kernfs_addrm_start(&acxt);
+ rc = kernfs_add_one(&acxt, kn);
+ kernfs_addrm_finish(&acxt);
+
if (rc) {
kernfs_put(kn);
return ERR_PTR(rc);