diff options
Diffstat (limited to 'fs/orangefs/orangefs-utils.c')
-rw-r--r-- | fs/orangefs/orangefs-utils.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c index 40f5163b56aa..2d129b5886ee 100644 --- a/fs/orangefs/orangefs-utils.c +++ b/fs/orangefs/orangefs-utils.c | |||
@@ -303,7 +303,7 @@ int orangefs_inode_getattr(struct inode *inode, int new, int size) | |||
303 | } | 303 | } |
304 | break; | 304 | break; |
305 | case S_IFDIR: | 305 | case S_IFDIR: |
306 | inode->i_size = PAGE_CACHE_SIZE; | 306 | inode->i_size = PAGE_SIZE; |
307 | orangefs_inode->blksize = (1 << inode->i_blkbits); | 307 | orangefs_inode->blksize = (1 << inode->i_blkbits); |
308 | spin_lock(&inode->i_lock); | 308 | spin_lock(&inode->i_lock); |
309 | inode_set_bytes(inode, inode->i_size); | 309 | inode_set_bytes(inode, inode->i_size); |
@@ -315,9 +315,13 @@ int orangefs_inode_getattr(struct inode *inode, int new, int size) | |||
315 | inode->i_size = (loff_t)strlen(new_op-> | 315 | inode->i_size = (loff_t)strlen(new_op-> |
316 | downcall.resp.getattr.link_target); | 316 | downcall.resp.getattr.link_target); |
317 | orangefs_inode->blksize = (1 << inode->i_blkbits); | 317 | orangefs_inode->blksize = (1 << inode->i_blkbits); |
318 | strlcpy(orangefs_inode->link_target, | 318 | ret = strscpy(orangefs_inode->link_target, |
319 | new_op->downcall.resp.getattr.link_target, | 319 | new_op->downcall.resp.getattr.link_target, |
320 | ORANGEFS_NAME_MAX); | 320 | ORANGEFS_NAME_MAX); |
321 | if (ret == -E2BIG) { | ||
322 | ret = -EIO; | ||
323 | goto out; | ||
324 | } | ||
321 | inode->i_link = orangefs_inode->link_target; | 325 | inode->i_link = orangefs_inode->link_target; |
322 | } | 326 | } |
323 | break; | 327 | break; |