.. | .. |
---|
50 | 50 | * So just sample it once and use the same value everywhere. |
---|
51 | 51 | */ |
---|
52 | 52 | kaddr = kmap_atomic(page); |
---|
53 | | - memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, isize); |
---|
| 53 | + memcpy(kaddr, iinfo->i_data + iinfo->i_lenEAttr, isize); |
---|
54 | 54 | memset(kaddr + isize, 0, PAGE_SIZE - isize); |
---|
55 | 55 | flush_dcache_page(page); |
---|
56 | 56 | SetPageUptodate(page); |
---|
.. | .. |
---|
76 | 76 | BUG_ON(!PageLocked(page)); |
---|
77 | 77 | |
---|
78 | 78 | kaddr = kmap_atomic(page); |
---|
79 | | - memcpy(iinfo->i_ext.i_data + iinfo->i_lenEAttr, kaddr, |
---|
80 | | - i_size_read(inode)); |
---|
| 79 | + memcpy(iinfo->i_data + iinfo->i_lenEAttr, kaddr, i_size_read(inode)); |
---|
81 | 80 | SetPageUptodate(page); |
---|
82 | 81 | kunmap_atomic(kaddr); |
---|
83 | 82 | mark_inode_dirty(inode); |
---|
.. | .. |
---|
215 | 214 | return put_user(UDF_I(inode)->i_lenEAttr, (int __user *)arg); |
---|
216 | 215 | case UDF_GETEABLOCK: |
---|
217 | 216 | return copy_to_user((char __user *)arg, |
---|
218 | | - UDF_I(inode)->i_ext.i_data, |
---|
| 217 | + UDF_I(inode)->i_data, |
---|
219 | 218 | UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0; |
---|
220 | 219 | default: |
---|
221 | 220 | return -ENOIOCTLCMD; |
---|
.. | .. |
---|
280 | 279 | return error; |
---|
281 | 280 | } |
---|
282 | 281 | |
---|
| 282 | + if (attr->ia_valid & ATTR_MODE) |
---|
| 283 | + udf_update_extra_perms(inode, attr->ia_mode); |
---|
| 284 | + |
---|
283 | 285 | setattr_copy(inode, attr); |
---|
284 | 286 | mark_inode_dirty(inode); |
---|
285 | 287 | return 0; |
---|