Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:
udf: add speciffic ->setattr callback
udf: potential integer overflow

+16 -10
+4 -6
fs/udf/balloc.c
··· 125 125 126 126 mutex_lock(&sbi->s_alloc_mutex); 127 127 partmap = &sbi->s_partmaps[bloc->partitionReferenceNum]; 128 - if (bloc->logicalBlockNum < 0 || 129 - (bloc->logicalBlockNum + count) > 130 - partmap->s_partition_len) { 128 + if (bloc->logicalBlockNum + count < count || 129 + (bloc->logicalBlockNum + count) > partmap->s_partition_len) { 131 130 udf_debug("%d < %d || %d + %d > %d\n", 132 131 bloc->logicalBlockNum, 0, bloc->logicalBlockNum, 133 132 count, partmap->s_partition_len); ··· 392 393 393 394 mutex_lock(&sbi->s_alloc_mutex); 394 395 partmap = &sbi->s_partmaps[bloc->partitionReferenceNum]; 395 - if (bloc->logicalBlockNum < 0 || 396 - (bloc->logicalBlockNum + count) > 397 - partmap->s_partition_len) { 396 + if (bloc->logicalBlockNum + count < count || 397 + (bloc->logicalBlockNum + count) > partmap->s_partition_len) { 398 398 udf_debug("%d < %d || %d + %d > %d\n", 399 399 bloc->logicalBlockNum, 0, bloc->logicalBlockNum, count, 400 400 partmap->s_partition_len);
+1 -1
fs/udf/file.c
··· 218 218 .llseek = generic_file_llseek, 219 219 }; 220 220 221 - static int udf_setattr(struct dentry *dentry, struct iattr *iattr) 221 + int udf_setattr(struct dentry *dentry, struct iattr *iattr) 222 222 { 223 223 struct inode *inode = dentry->d_inode; 224 224 int error;
+1 -1
fs/udf/inode.c
··· 1314 1314 break; 1315 1315 case ICBTAG_FILE_TYPE_SYMLINK: 1316 1316 inode->i_data.a_ops = &udf_symlink_aops; 1317 - inode->i_op = &page_symlink_inode_operations; 1317 + inode->i_op = &udf_symlink_inode_operations; 1318 1318 inode->i_mode = S_IFLNK | S_IRWXUGO; 1319 1319 break; 1320 1320 case ICBTAG_FILE_TYPE_MAIN:
+8 -1
fs/udf/namei.c
··· 925 925 iinfo = UDF_I(inode); 926 926 inode->i_mode = S_IFLNK | S_IRWXUGO; 927 927 inode->i_data.a_ops = &udf_symlink_aops; 928 - inode->i_op = &page_symlink_inode_operations; 928 + inode->i_op = &udf_symlink_inode_operations; 929 929 930 930 if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { 931 931 struct kernel_lb_addr eloc; ··· 1393 1393 const struct inode_operations udf_dir_inode_operations = { 1394 1394 .lookup = udf_lookup, 1395 1395 .create = udf_create, 1396 + .setattr = udf_setattr, 1396 1397 .link = udf_link, 1397 1398 .unlink = udf_unlink, 1398 1399 .symlink = udf_symlink, ··· 1401 1400 .rmdir = udf_rmdir, 1402 1401 .mknod = udf_mknod, 1403 1402 .rename = udf_rename, 1403 + }; 1404 + const struct inode_operations udf_symlink_inode_operations = { 1405 + .readlink = generic_readlink, 1406 + .follow_link = page_follow_link_light, 1407 + .put_link = page_put_link, 1408 + .setattr = udf_setattr, 1404 1409 };
+2 -1
fs/udf/udfdecl.h
··· 76 76 extern const struct file_operations udf_dir_operations; 77 77 extern const struct inode_operations udf_file_inode_operations; 78 78 extern const struct file_operations udf_file_operations; 79 + extern const struct inode_operations udf_symlink_inode_operations; 79 80 extern const struct address_space_operations udf_aops; 80 81 extern const struct address_space_operations udf_adinicb_aops; 81 82 extern const struct address_space_operations udf_symlink_aops; ··· 132 131 /* file.c */ 133 132 extern int udf_ioctl(struct inode *, struct file *, unsigned int, 134 133 unsigned long); 135 - 134 + extern int udf_setattr(struct dentry *dentry, struct iattr *iattr); 136 135 /* inode.c */ 137 136 extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *); 138 137 extern int udf_sync_inode(struct inode *);