aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysfs/symlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/sysfs/symlink.c')
-rw-r--r--fs/sysfs/symlink.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index 8c940df97a52..2dd4507d9edd 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -125,6 +125,7 @@ int sysfs_create_link(struct kobject *kobj, struct kobject *target,
125{ 125{
126 return sysfs_do_create_link(kobj, target, name, 1); 126 return sysfs_do_create_link(kobj, target, name, 1);
127} 127}
128EXPORT_SYMBOL_GPL(sysfs_create_link);
128 129
129/** 130/**
130 * sysfs_create_link_nowarn - create symlink between two objects. 131 * sysfs_create_link_nowarn - create symlink between two objects.
@@ -166,8 +167,7 @@ void sysfs_delete_link(struct kobject *kobj, struct kobject *targ,
166 * @kobj: object we're acting for. 167 * @kobj: object we're acting for.
167 * @name: name of the symlink to remove. 168 * @name: name of the symlink to remove.
168 */ 169 */
169 170void sysfs_remove_link(struct kobject *kobj, const char *name)
170void sysfs_remove_link(struct kobject * kobj, const char * name)
171{ 171{
172 struct sysfs_dirent *parent_sd = NULL; 172 struct sysfs_dirent *parent_sd = NULL;
173 173
@@ -178,6 +178,7 @@ void sysfs_remove_link(struct kobject * kobj, const char * name)
178 178
179 sysfs_hash_and_remove(parent_sd, NULL, name); 179 sysfs_hash_and_remove(parent_sd, NULL, name);
180} 180}
181EXPORT_SYMBOL_GPL(sysfs_remove_link);
181 182
182/** 183/**
183 * sysfs_rename_link - rename symlink in object's directory. 184 * sysfs_rename_link - rename symlink in object's directory.
@@ -223,6 +224,7 @@ out:
223 sysfs_put(sd); 224 sysfs_put(sd);
224 return result; 225 return result;
225} 226}
227EXPORT_SYMBOL_GPL(sysfs_rename_link);
226 228
227static int sysfs_get_target_path(struct sysfs_dirent *parent_sd, 229static int sysfs_get_target_path(struct sysfs_dirent *parent_sd,
228 struct sysfs_dirent *target_sd, char *path) 230 struct sysfs_dirent *target_sd, char *path)
@@ -276,7 +278,7 @@ static int sysfs_get_target_path(struct sysfs_dirent *parent_sd,
276 return 0; 278 return 0;
277} 279}
278 280
279static int sysfs_getlink(struct dentry *dentry, char * path) 281static int sysfs_getlink(struct dentry *dentry, char *path)
280{ 282{
281 struct sysfs_dirent *sd = dentry->d_fsdata; 283 struct sysfs_dirent *sd = dentry->d_fsdata;
282 struct sysfs_dirent *parent_sd = sd->s_parent; 284 struct sysfs_dirent *parent_sd = sd->s_parent;
@@ -295,7 +297,7 @@ static void *sysfs_follow_link(struct dentry *dentry, struct nameidata *nd)
295 int error = -ENOMEM; 297 int error = -ENOMEM;
296 unsigned long page = get_zeroed_page(GFP_KERNEL); 298 unsigned long page = get_zeroed_page(GFP_KERNEL);
297 if (page) { 299 if (page) {
298 error = sysfs_getlink(dentry, (char *) page); 300 error = sysfs_getlink(dentry, (char *) page);
299 if (error < 0) 301 if (error < 0)
300 free_page((unsigned long)page); 302 free_page((unsigned long)page);
301 } 303 }
@@ -303,7 +305,8 @@ static void *sysfs_follow_link(struct dentry *dentry, struct nameidata *nd)
303 return NULL; 305 return NULL;
304} 306}
305 307
306static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) 308static void sysfs_put_link(struct dentry *dentry, struct nameidata *nd,
309 void *cookie)
307{ 310{
308 char *page = nd_get_link(nd); 311 char *page = nd_get_link(nd);
309 if (!IS_ERR(page)) 312 if (!IS_ERR(page))
@@ -319,8 +322,3 @@ const struct inode_operations sysfs_symlink_inode_operations = {
319 .getattr = sysfs_getattr, 322 .getattr = sysfs_getattr,
320 .permission = sysfs_permission, 323 .permission = sysfs_permission,
321}; 324};
322
323
324EXPORT_SYMBOL_GPL(sysfs_create_link);
325EXPORT_SYMBOL_GPL(sysfs_remove_link);
326EXPORT_SYMBOL_GPL(sysfs_rename_link);