|
@@ -27,6 +27,7 @@
|
|
|
#include <linux/init.h>
|
|
|
#include <linux/buffer_head.h>
|
|
|
#include <linux/vfs.h>
|
|
|
+#include <linux/namei.h>
|
|
|
#include <asm/byteorder.h>
|
|
|
#include "sysv.h"
|
|
|
|
|
@@ -163,8 +164,11 @@ void sysv_set_inode(struct inode *inode, dev_t rdev)
|
|
|
if (inode->i_blocks) {
|
|
|
inode->i_op = &sysv_symlink_inode_operations;
|
|
|
inode->i_mapping->a_ops = &sysv_aops;
|
|
|
- } else
|
|
|
+ } else {
|
|
|
inode->i_op = &sysv_fast_symlink_inode_operations;
|
|
|
+ nd_terminate_link(SYSV_I(inode)->i_data, inode->i_size,
|
|
|
+ sizeof(SYSV_I(inode)->i_data) - 1);
|
|
|
+ }
|
|
|
} else
|
|
|
init_special_inode(inode, inode->i_mode, rdev);
|
|
|
}
|