diff options
| -rw-r--r-- | fs/ocfs2/file.c | 4 | ||||
| -rw-r--r-- | fs/ocfs2/symlink.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 9154c82d3258..57e0d30cde98 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c | |||
| @@ -1048,6 +1048,10 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr) | |||
| 1048 | mlog_entry("(0x%p, '%.*s')\n", dentry, | 1048 | mlog_entry("(0x%p, '%.*s')\n", dentry, |
| 1049 | dentry->d_name.len, dentry->d_name.name); | 1049 | dentry->d_name.len, dentry->d_name.name); |
| 1050 | 1050 | ||
| 1051 | /* ensuring we don't even attempt to truncate a symlink */ | ||
| 1052 | if (S_ISLNK(inode->i_mode)) | ||
| 1053 | attr->ia_valid &= ~ATTR_SIZE; | ||
| 1054 | |||
| 1051 | if (attr->ia_valid & ATTR_MODE) | 1055 | if (attr->ia_valid & ATTR_MODE) |
| 1052 | mlog(0, "mode change: %d\n", attr->ia_mode); | 1056 | mlog(0, "mode change: %d\n", attr->ia_mode); |
| 1053 | if (attr->ia_valid & ATTR_UID) | 1057 | if (attr->ia_valid & ATTR_UID) |
diff --git a/fs/ocfs2/symlink.c b/fs/ocfs2/symlink.c index 7134007ba22f..ba9dbb51d25b 100644 --- a/fs/ocfs2/symlink.c +++ b/fs/ocfs2/symlink.c | |||
| @@ -167,9 +167,11 @@ const struct inode_operations ocfs2_symlink_inode_operations = { | |||
| 167 | .readlink = page_readlink, | 167 | .readlink = page_readlink, |
| 168 | .follow_link = ocfs2_follow_link, | 168 | .follow_link = ocfs2_follow_link, |
| 169 | .getattr = ocfs2_getattr, | 169 | .getattr = ocfs2_getattr, |
| 170 | .setattr = ocfs2_setattr, | ||
| 170 | }; | 171 | }; |
| 171 | const struct inode_operations ocfs2_fast_symlink_inode_operations = { | 172 | const struct inode_operations ocfs2_fast_symlink_inode_operations = { |
| 172 | .readlink = ocfs2_readlink, | 173 | .readlink = ocfs2_readlink, |
| 173 | .follow_link = ocfs2_follow_link, | 174 | .follow_link = ocfs2_follow_link, |
| 174 | .getattr = ocfs2_getattr, | 175 | .getattr = ocfs2_getattr, |
| 176 | .setattr = ocfs2_setattr, | ||
| 175 | }; | 177 | }; |
