]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/sysfs/dir.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[karo-tx-linux.git] / fs / sysfs / dir.c
index 83bb9d1f30aac612c0d4b0c1d2c28fceee3878e7..0344ee70a47cc3bd8bd5b08aa57d5fce0c01f1af 100644 (file)
@@ -403,6 +403,13 @@ int __sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd)
 {
        struct sysfs_inode_attrs *ps_iattr;
 
+       if (!!sysfs_ns_type(acxt->parent_sd) != !!sd->s_ns) {
+               WARN(1, KERN_WARNING "sysfs: ns %s in '%s' for '%s'\n",
+                       sysfs_ns_type(acxt->parent_sd)? "required": "invalid",
+                       acxt->parent_sd->s_name, sd->s_name);
+               return -EINVAL;
+       }
+
        if (sysfs_find_dirent(acxt->parent_sd, sd->s_ns, sd->s_name))
                return -EEXIST;
 
@@ -561,6 +568,13 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
        struct rb_node *p = parent_sd->s_dir.name_tree.rb_node;
        struct sysfs_dirent *found = NULL;
 
+       if (!!sysfs_ns_type(parent_sd) != !!ns) {
+               WARN(1, KERN_WARNING "sysfs: ns %s in '%s' for '%s'\n",
+                       sysfs_ns_type(parent_sd)? "required": "invalid",
+                       parent_sd->s_name, name);
+               return NULL;
+       }
+
        while (p) {
                int c;
 #define node   rb_entry(p, struct sysfs_dirent, name_node)