diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-28 12:52:22 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-26 22:20:08 -0400 |
| commit | 2903ff019b346ab8d36ebbf54853c3aaf6590608 (patch) | |
| tree | 962d94054765bb37bc00e977c3036e65c5fd91fe /ipc | |
| parent | a5b470ba06aa3f96999ede5feba178df6bdb134a (diff) | |
switch simple cases of fget_light to fdget
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'ipc')
| -rw-r--r-- | ipc/mqueue.c | 84 |
1 files changed, 41 insertions, 43 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index 5db1b69500fd..6d255e535d03 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c | |||
| @@ -944,7 +944,7 @@ SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr, | |||
| 944 | size_t, msg_len, unsigned int, msg_prio, | 944 | size_t, msg_len, unsigned int, msg_prio, |
| 945 | const struct timespec __user *, u_abs_timeout) | 945 | const struct timespec __user *, u_abs_timeout) |
| 946 | { | 946 | { |
| 947 | struct file *filp; | 947 | struct fd f; |
| 948 | struct inode *inode; | 948 | struct inode *inode; |
| 949 | struct ext_wait_queue wait; | 949 | struct ext_wait_queue wait; |
| 950 | struct ext_wait_queue *receiver; | 950 | struct ext_wait_queue *receiver; |
| @@ -953,7 +953,7 @@ SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr, | |||
| 953 | ktime_t expires, *timeout = NULL; | 953 | ktime_t expires, *timeout = NULL; |
| 954 | struct timespec ts; | 954 | struct timespec ts; |
| 955 | struct posix_msg_tree_node *new_leaf = NULL; | 955 | struct posix_msg_tree_node *new_leaf = NULL; |
| 956 | int ret = 0, fput_needed; | 956 | int ret = 0; |
| 957 | 957 | ||
| 958 | if (u_abs_timeout) { | 958 | if (u_abs_timeout) { |
| 959 | int res = prepare_timeout(u_abs_timeout, &expires, &ts); | 959 | int res = prepare_timeout(u_abs_timeout, &expires, &ts); |
| @@ -967,21 +967,21 @@ SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr, | |||
| 967 | 967 | ||
| 968 | audit_mq_sendrecv(mqdes, msg_len, msg_prio, timeout ? &ts : NULL); | 968 | audit_mq_sendrecv(mqdes, msg_len, msg_prio, timeout ? &ts : NULL); |
| 969 | 969 | ||
| 970 | filp = fget_light(mqdes, &fput_needed); | 970 | f = fdget(mqdes); |
| 971 | if (unlikely(!filp)) { | 971 | if (unlikely(!f.file)) { |
| 972 | ret = -EBADF; | 972 | ret = -EBADF; |
| 973 | goto out; | 973 | goto out; |
| 974 | } | 974 | } |
| 975 | 975 | ||
| 976 | inode = filp->f_path.dentry->d_inode; | 976 | inode = f.file->f_path.dentry->d_inode; |
| 977 | if (unlikely(filp->f_op != &mqueue_file_operations)) { | 977 | if (unlikely(f.file->f_op != &mqueue_file_operations)) { |
| 978 | ret = -EBADF; | 978 | ret = -EBADF; |
| 979 | goto out_fput; | 979 | goto out_fput; |
| 980 | } | 980 | } |
| 981 | info = MQUEUE_I(inode); | 981 | info = MQUEUE_I(inode); |
| 982 | audit_inode(NULL, filp->f_path.dentry); | 982 | audit_inode(NULL, f.file->f_path.dentry); |
| 983 | 983 | ||
| 984 | if (unlikely(!(filp->f_mode & FMODE_WRITE))) { | 984 | if (unlikely(!(f.file->f_mode & FMODE_WRITE))) { |
| 985 | ret = -EBADF; | 985 | ret = -EBADF; |
| 986 | goto out_fput; | 986 | goto out_fput; |
| 987 | } | 987 | } |
| @@ -1023,7 +1023,7 @@ SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr, | |||
| 1023 | } | 1023 | } |
| 1024 | 1024 | ||
| 1025 | if (info->attr.mq_curmsgs == info->attr.mq_maxmsg) { | 1025 | if (info->attr.mq_curmsgs == info->attr.mq_maxmsg) { |
| 1026 | if (filp->f_flags & O_NONBLOCK) { | 1026 | if (f.file->f_flags & O_NONBLOCK) { |
| 1027 | ret = -EAGAIN; | 1027 | ret = -EAGAIN; |
| 1028 | } else { | 1028 | } else { |
| 1029 | wait.task = current; | 1029 | wait.task = current; |
| @@ -1056,7 +1056,7 @@ out_free: | |||
| 1056 | if (ret) | 1056 | if (ret) |
| 1057 | free_msg(msg_ptr); | 1057 | free_msg(msg_ptr); |
| 1058 | out_fput: | 1058 | out_fput: |
| 1059 | fput_light(filp, fput_needed); | 1059 | fdput(f); |
| 1060 | out: | 1060 | out: |
| 1061 | return ret; | 1061 | return ret; |
| 1062 | } | 1062 | } |
| @@ -1067,14 +1067,13 @@ SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr, | |||
| 1067 | { | 1067 | { |
| 1068 | ssize_t ret; | 1068 | ssize_t ret; |
| 1069 | struct msg_msg *msg_ptr; | 1069 | struct msg_msg *msg_ptr; |
| 1070 | struct file *filp; | 1070 | struct fd f; |
| 1071 | struct inode *inode; | 1071 | struct inode *inode; |
| 1072 | struct mqueue_inode_info *info; | 1072 | struct mqueue_inode_info *info; |
| 1073 | struct ext_wait_queue wait; | 1073 | struct ext_wait_queue wait; |
| 1074 | ktime_t expires, *timeout = NULL; | 1074 | ktime_t expires, *timeout = NULL; |
| 1075 | struct timespec ts; | 1075 | struct timespec ts; |
| 1076 | struct posix_msg_tree_node *new_leaf = NULL; | 1076 | struct posix_msg_tree_node *new_leaf = NULL; |
| 1077 | int fput_needed; | ||
| 1078 | 1077 | ||
| 1079 | if (u_abs_timeout) { | 1078 | if (u_abs_timeout) { |
| 1080 | int res = prepare_timeout(u_abs_timeout, &expires, &ts); | 1079 | int res = prepare_timeout(u_abs_timeout, &expires, &ts); |
| @@ -1085,21 +1084,21 @@ SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr, | |||
| 1085 | 1084 | ||
| 1086 | audit_mq_sendrecv(mqdes, msg_len, 0, timeout ? &ts : NULL); | 1085 | audit_mq_sendrecv(mqdes, msg_len, 0, timeout ? &ts : NULL); |
| 1087 | 1086 | ||
| 1088 | filp = fget_light(mqdes, &fput_needed); | 1087 | f = fdget(mqdes); |
| 1089 | if (unlikely(!filp)) { | 1088 | if (unlikely(!f.file)) { |
| 1090 | ret = -EBADF; | 1089 | ret = -EBADF; |
| 1091 | goto out; | 1090 | goto out; |
| 1092 | } | 1091 | } |
| 1093 | 1092 | ||
| 1094 | inode = filp->f_path.dentry->d_inode; | 1093 | inode = f.file->f_path.dentry->d_inode; |
| 1095 | if (unlikely(filp->f_op != &mqueue_file_operations)) { | 1094 | if (unlikely(f.file->f_op != &mqueue_file_operations)) { |
| 1096 | ret = -EBADF; | 1095 | ret = -EBADF; |
| 1097 | goto out_fput; | 1096 | goto out_fput; |
| 1098 | } | 1097 | } |
| 1099 | info = MQUEUE_I(inode); | 1098 | info = MQUEUE_I(inode); |
| 1100 | audit_inode(NULL, filp->f_path.dentry); | 1099 | audit_inode(NULL, f.file->f_path.dentry); |
| 1101 | 1100 | ||
| 1102 | if (unlikely(!(filp->f_mode & FMODE_READ))) { | 1101 | if (unlikely(!(f.file->f_mode & FMODE_READ))) { |
| 1103 | ret = -EBADF; | 1102 | ret = -EBADF; |
| 1104 | goto out_fput; | 1103 | goto out_fput; |
| 1105 | } | 1104 | } |
| @@ -1131,7 +1130,7 @@ SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr, | |||
| 1131 | } | 1130 | } |
| 1132 | 1131 | ||
| 1133 | if (info->attr.mq_curmsgs == 0) { | 1132 | if (info->attr.mq_curmsgs == 0) { |
| 1134 | if (filp->f_flags & O_NONBLOCK) { | 1133 | if (f.file->f_flags & O_NONBLOCK) { |
| 1135 | spin_unlock(&info->lock); | 1134 | spin_unlock(&info->lock); |
| 1136 | ret = -EAGAIN; | 1135 | ret = -EAGAIN; |
| 1137 | } else { | 1136 | } else { |
| @@ -1161,7 +1160,7 @@ SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr, | |||
| 1161 | free_msg(msg_ptr); | 1160 | free_msg(msg_ptr); |
| 1162 | } | 1161 | } |
| 1163 | out_fput: | 1162 | out_fput: |
| 1164 | fput_light(filp, fput_needed); | 1163 | fdput(f); |
| 1165 | out: | 1164 | out: |
| 1166 | return ret; | 1165 | return ret; |
| 1167 | } | 1166 | } |
| @@ -1174,8 +1173,8 @@ out: | |||
| 1174 | SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes, | 1173 | SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes, |
| 1175 | const struct sigevent __user *, u_notification) | 1174 | const struct sigevent __user *, u_notification) |
| 1176 | { | 1175 | { |
| 1177 | int ret, fput_needed; | 1176 | int ret; |
| 1178 | struct file *filp; | 1177 | struct fd f; |
| 1179 | struct sock *sock; | 1178 | struct sock *sock; |
| 1180 | struct inode *inode; | 1179 | struct inode *inode; |
| 1181 | struct sigevent notification; | 1180 | struct sigevent notification; |
| @@ -1221,13 +1220,13 @@ SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes, | |||
| 1221 | skb_put(nc, NOTIFY_COOKIE_LEN); | 1220 | skb_put(nc, NOTIFY_COOKIE_LEN); |
| 1222 | /* and attach it to the socket */ | 1221 | /* and attach it to the socket */ |
| 1223 | retry: | 1222 | retry: |
| 1224 | filp = fget_light(notification.sigev_signo, &fput_needed); | 1223 | f = fdget(notification.sigev_signo); |
| 1225 | if (!filp) { | 1224 | if (!f.file) { |
| 1226 | ret = -EBADF; | 1225 | ret = -EBADF; |
| 1227 | goto out; | 1226 | goto out; |
| 1228 | } | 1227 | } |
| 1229 | sock = netlink_getsockbyfilp(filp); | 1228 | sock = netlink_getsockbyfilp(f.file); |
| 1230 | fput_light(filp, fput_needed); | 1229 | fdput(f); |
| 1231 | if (IS_ERR(sock)) { | 1230 | if (IS_ERR(sock)) { |
| 1232 | ret = PTR_ERR(sock); | 1231 | ret = PTR_ERR(sock); |
| 1233 | sock = NULL; | 1232 | sock = NULL; |
| @@ -1246,14 +1245,14 @@ retry: | |||
| 1246 | } | 1245 | } |
| 1247 | } | 1246 | } |
| 1248 | 1247 | ||
| 1249 | filp = fget_light(mqdes, &fput_needed); | 1248 | f = fdget(mqdes); |
| 1250 | if (!filp) { | 1249 | if (!f.file) { |
| 1251 | ret = -EBADF; | 1250 | ret = -EBADF; |
| 1252 | goto out; | 1251 | goto out; |
| 1253 | } | 1252 | } |
| 1254 | 1253 | ||
| 1255 | inode = filp->f_path.dentry->d_inode; | 1254 | inode = f.file->f_path.dentry->d_inode; |
| 1256 | if (unlikely(filp->f_op != &mqueue_file_operations)) { | 1255 | if (unlikely(f.file->f_op != &mqueue_file_operations)) { |
| 1257 | ret = -EBADF; | 1256 | ret = -EBADF; |
| 1258 | goto out_fput; | 1257 | goto out_fput; |
| 1259 | } | 1258 | } |
| @@ -1293,7 +1292,7 @@ retry: | |||
| 1293 | } | 1292 | } |
| 1294 | spin_unlock(&info->lock); | 1293 | spin_unlock(&info->lock); |
| 1295 | out_fput: | 1294 | out_fput: |
| 1296 | fput_light(filp, fput_needed); | 1295 | fdput(f); |
| 1297 | out: | 1296 | out: |
| 1298 | if (sock) { | 1297 | if (sock) { |
| 1299 | netlink_detachskb(sock, nc); | 1298 | netlink_detachskb(sock, nc); |
| @@ -1309,8 +1308,7 @@ SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes, | |||
| 1309 | { | 1308 | { |
| 1310 | int ret; | 1309 | int ret; |
| 1311 | struct mq_attr mqstat, omqstat; | 1310 | struct mq_attr mqstat, omqstat; |
| 1312 | int fput_needed; | 1311 | struct fd f; |
| 1313 | struct file *filp; | ||
| 1314 | struct inode *inode; | 1312 | struct inode *inode; |
| 1315 | struct mqueue_inode_info *info; | 1313 | struct mqueue_inode_info *info; |
| 1316 | 1314 | ||
| @@ -1321,14 +1319,14 @@ SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes, | |||
| 1321 | return -EINVAL; | 1319 | return -EINVAL; |
| 1322 | } | 1320 | } |
| 1323 | 1321 | ||
| 1324 | filp = fget_light(mqdes, &fput_needed); | 1322 | f = fdget(mqdes); |
| 1325 | if (!filp) { | 1323 | if (!f.file) { |
| 1326 | ret = -EBADF; | 1324 | ret = -EBADF; |
| 1327 | goto out; | 1325 | goto out; |
| 1328 | } | 1326 | } |
| 1329 | 1327 | ||
| 1330 | inode = filp->f_path.dentry->d_inode; | 1328 | inode = f.file->f_path.dentry->d_inode; |
| 1331 | if (unlikely(filp->f_op != &mqueue_file_operations)) { | 1329 | if (unlikely(f.file->f_op != &mqueue_file_operations)) { |
| 1332 | ret = -EBADF; | 1330 | ret = -EBADF; |
| 1333 | goto out_fput; | 1331 | goto out_fput; |
| 1334 | } | 1332 | } |
| @@ -1337,15 +1335,15 @@ SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes, | |||
| 1337 | spin_lock(&info->lock); | 1335 | spin_lock(&info->lock); |
| 1338 | 1336 | ||
| 1339 | omqstat = info->attr; | 1337 | omqstat = info->attr; |
| 1340 | omqstat.mq_flags = filp->f_flags & O_NONBLOCK; | 1338 | omqstat.mq_flags = f.file->f_flags & O_NONBLOCK; |
| 1341 | if (u_mqstat) { | 1339 | if (u_mqstat) { |
| 1342 | audit_mq_getsetattr(mqdes, &mqstat); | 1340 | audit_mq_getsetattr(mqdes, &mqstat); |
| 1343 | spin_lock(&filp->f_lock); | 1341 | spin_lock(&f.file->f_lock); |
| 1344 | if (mqstat.mq_flags & O_NONBLOCK) | 1342 | if (mqstat.mq_flags & O_NONBLOCK) |
| 1345 | filp->f_flags |= O_NONBLOCK; | 1343 | f.file->f_flags |= O_NONBLOCK; |
| 1346 | else | 1344 | else |
| 1347 | filp->f_flags &= ~O_NONBLOCK; | 1345 | f.file->f_flags &= ~O_NONBLOCK; |
| 1348 | spin_unlock(&filp->f_lock); | 1346 | spin_unlock(&f.file->f_lock); |
| 1349 | 1347 | ||
| 1350 | inode->i_atime = inode->i_ctime = CURRENT_TIME; | 1348 | inode->i_atime = inode->i_ctime = CURRENT_TIME; |
| 1351 | } | 1349 | } |
| @@ -1358,7 +1356,7 @@ SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes, | |||
| 1358 | ret = -EFAULT; | 1356 | ret = -EFAULT; |
| 1359 | 1357 | ||
| 1360 | out_fput: | 1358 | out_fput: |
| 1361 | fput_light(filp, fput_needed); | 1359 | fdput(f); |
| 1362 | out: | 1360 | out: |
| 1363 | return ret; | 1361 | return ret; |
| 1364 | } | 1362 | } |
