1 /* 2 * JFFS2 -- Journalling Flash File System, Version 2. 3 * 4 * Copyright (C) 2001, 2002 Red Hat, Inc. 5 * 6 * Created by David Woodhouse <dwmw2@infradead.org> 7 * 8 * For licensing information, see the file 'LICENCE' in this directory. 9 * 10 * $Id: symlink.c,v 1.14 2004/11/16 20:36:12 dwmw2 Exp $ 11 * 12 */ 13 14 15 #include <linux/kernel.h> 16 #include <linux/slab.h> 17 #include <linux/fs.h> 18 #include <linux/namei.h> 19 #include "nodelist.h" 20 21 static int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd); 22 static void jffs2_put_link(struct dentry *dentry, struct nameidata *nd); 23 24 struct inode_operations jffs2_symlink_inode_operations = 25 { 26 .readlink = generic_readlink, 27 .follow_link = jffs2_follow_link, 28 .put_link = jffs2_put_link, 29 .setattr = jffs2_setattr 30 }; 31 32 static int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd) 33 { 34 unsigned char *buf; 35 buf = jffs2_getlink(JFFS2_SB_INFO(dentry->d_inode->i_sb), JFFS2_INODE_INFO(dentry->d_inode)); 36 nd_set_link(nd, buf); 37 return 0; 38 } 39 40 static void jffs2_put_link(struct dentry *dentry, struct nameidata *nd) 41 { 42 char *s = nd_get_link(nd); 43 if (!IS_ERR(s)) 44 kfree(s); 45 } 46