TOMOYO: Fix pathname handling of disconnected paths.
[~shefty/rdma-dev.git] / security / tomoyo / realpath.c
index 36fa7c9bedc40b4ce8f4d7db9e03f7438802078d..d9f3ced8756ec4dc87492b8edecf172375843f5d 100644 (file)
@@ -293,8 +293,16 @@ char *tomoyo_realpath_from_path(struct path *path)
                        pos = tomoyo_get_local_path(path->dentry, buf,
                                                    buf_len - 1);
                /* Get absolute name for the rest. */
-               else
+               else {
                        pos = tomoyo_get_absolute_path(path, buf, buf_len - 1);
+                       /*
+                        * Fall back to local name if absolute name is not
+                        * available.
+                        */
+                       if (pos == ERR_PTR(-EINVAL))
+                               pos = tomoyo_get_local_path(path->dentry, buf,
+                                                           buf_len - 1);
+               }
 encode:
                if (IS_ERR(pos))
                        continue;