| .. | .. |
|---|
| 106 | 106 | flags = flags & mask; |
|---|
| 107 | 107 | flags |= oldflags & ~mask; |
|---|
| 108 | 108 | |
|---|
| 109 | | - /* |
|---|
| 110 | | - * The IMMUTABLE and APPEND_ONLY flags can only be changed by |
|---|
| 111 | | - * the relevant capability. |
|---|
| 112 | | - */ |
|---|
| 113 | | - status = -EPERM; |
|---|
| 114 | | - if ((oldflags & OCFS2_IMMUTABLE_FL) || ((flags ^ oldflags) & |
|---|
| 115 | | - (OCFS2_APPEND_FL | OCFS2_IMMUTABLE_FL))) { |
|---|
| 116 | | - if (!capable(CAP_LINUX_IMMUTABLE)) |
|---|
| 117 | | - goto bail_unlock; |
|---|
| 118 | | - } |
|---|
| 109 | + status = vfs_ioc_setflags_prepare(inode, oldflags, flags); |
|---|
| 110 | + if (status) |
|---|
| 111 | + goto bail_unlock; |
|---|
| 119 | 112 | |
|---|
| 120 | 113 | handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS); |
|---|
| 121 | 114 | if (IS_ERR(handle)) { |
|---|
| .. | .. |
|---|
| 992 | 985 | return -EFAULT; |
|---|
| 993 | 986 | |
|---|
| 994 | 987 | return ocfs2_info_handle(inode, &info, 1); |
|---|
| 988 | + case FITRIM: |
|---|
| 995 | 989 | case OCFS2_IOC_MOVE_EXT: |
|---|
| 996 | 990 | break; |
|---|
| 997 | 991 | default: |
|---|