hc
2024-09-20 cf4ce59b3b70238352c7f1729f0f7223214828ad
kernel/fs/udf/ialloc.c
....@@ -67,16 +67,17 @@
6767 iinfo->i_efe = 1;
6868 if (UDF_VERS_USE_EXTENDED_FE > sbi->s_udfrev)
6969 sbi->s_udfrev = UDF_VERS_USE_EXTENDED_FE;
70
- iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize -
71
- sizeof(struct extendedFileEntry),
72
- GFP_KERNEL);
70
+ iinfo->i_data = kzalloc(inode->i_sb->s_blocksize -
71
+ sizeof(struct extendedFileEntry),
72
+ GFP_KERNEL);
7373 } else {
7474 iinfo->i_efe = 0;
75
- iinfo->i_ext.i_data = kzalloc(inode->i_sb->s_blocksize -
76
- sizeof(struct fileEntry),
77
- GFP_KERNEL);
75
+ iinfo->i_data = kzalloc(inode->i_sb->s_blocksize -
76
+ sizeof(struct fileEntry),
77
+ GFP_KERNEL);
7878 }
79
- if (!iinfo->i_ext.i_data) {
79
+ if (!iinfo->i_data) {
80
+ make_bad_inode(inode);
8081 iput(inode);
8182 return ERR_PTR(-ENOMEM);
8283 }
....@@ -86,6 +87,7 @@
8687 dinfo->i_location.partitionReferenceNum,
8788 start, &err);
8889 if (err) {
90
+ make_bad_inode(inode);
8991 iput(inode);
9092 return ERR_PTR(err);
9193 }
....@@ -118,6 +120,9 @@
118120 iinfo->i_lenAlloc = 0;
119121 iinfo->i_use = 0;
120122 iinfo->i_checkpoint = 1;
123
+ iinfo->i_extraPerms = FE_PERM_U_CHATTR;
124
+ udf_update_extra_perms(inode, mode);
125
+
121126 if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_AD_IN_ICB))
122127 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB;
123128 else if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_USE_SHORT_AD))